From af6dfa71a5d4c5f2c264ea063c3b20d79b651656 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Thu, 28 Dec 2023 01:13:38 -0500 Subject: [PATCH 001/323] [api-docs] 2023-12-28 Daily api_docs build (#174011) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/565 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- api_docs/ai_assistant_management_observability.mdx | 2 +- api_docs/ai_assistant_management_selection.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/apm_data_access.mdx | 2 +- api_docs/asset_manager.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_experiments.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/dataset_quality.mdx | 2 +- api_docs/deprecations_by_api.mdx | 2 +- api_docs/deprecations_by_plugin.mdx | 2 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/elastic_assistant.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_annotation_listing.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_actions_types.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- api_docs/kbn_alerting_api_integration_helpers.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerting_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- api_docs/kbn_analytics_collection_utils.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_common.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_analytics_shippers_gainsight.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_bfetch_error.mdx | 2 +- api_docs/kbn_calculate_auto.mdx | 2 +- api_docs/kbn_calculate_width_from_char_count.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_owners.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- api_docs/kbn_content_management_content_editor.mdx | 2 +- api_docs/kbn_content_management_tabbed_table_list_view.mdx | 2 +- api_docs/kbn_content_management_table_list_view.mdx | 2 +- api_docs/kbn_content_management_table_list_view_common.mdx | 2 +- api_docs/kbn_content_management_table_list_view_table.mdx | 2 +- api_docs/kbn_content_management_utils.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- api_docs/kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- api_docs/kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- api_docs/kbn_core_application_browser_internal.mdx | 2 +- api_docs/kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- api_docs/kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- api_docs/kbn_core_custom_branding_browser_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- api_docs/kbn_core_custom_branding_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- api_docs/kbn_core_deprecations_browser_internal.mdx | 2 +- api_docs/kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- api_docs/kbn_core_deprecations_server_internal.mdx | 2 +- api_docs/kbn_core_deprecations_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_client_server_internal.mdx | 2 +- api_docs/kbn_core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- api_docs/kbn_core_elasticsearch_server_internal.mdx | 2 +- api_docs/kbn_core_elasticsearch_server_mocks.mdx | 2 +- api_docs/kbn_core_environment_server_internal.mdx | 2 +- api_docs/kbn_core_environment_server_mocks.mdx | 2 +- api_docs/kbn_core_execution_context_browser.mdx | 2 +- api_docs/kbn_core_execution_context_browser_internal.mdx | 2 +- api_docs/kbn_core_execution_context_browser_mocks.mdx | 2 +- api_docs/kbn_core_execution_context_common.mdx | 2 +- api_docs/kbn_core_execution_context_server.mdx | 2 +- api_docs/kbn_core_execution_context_server_internal.mdx | 2 +- api_docs/kbn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- api_docs/kbn_core_http_context_server_mocks.mdx | 2 +- api_docs/kbn_core_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- api_docs/kbn_core_http_resources_server_internal.mdx | 2 +- api_docs/kbn_core_http_resources_server_mocks.mdx | 2 +- api_docs/kbn_core_http_router_server_internal.mdx | 2 +- api_docs/kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- api_docs/kbn_core_injected_metadata_browser_mocks.mdx | 2 +- api_docs/kbn_core_integrations_browser_internal.mdx | 2 +- api_docs/kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_collectors_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- api_docs/kbn_core_notifications_browser_internal.mdx | 2 +- api_docs/kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- api_docs/kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_contracts_browser.mdx | 2 +- api_docs/kbn_core_plugins_contracts_server.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- api_docs/kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_api_browser.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_base_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- api_docs/kbn_core_saved_objects_browser_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- .../kbn_core_saved_objects_import_export_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_migration_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- api_docs/kbn_core_saved_objects_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- api_docs/kbn_core_test_helpers_deprecations_getters.mdx | 2 +- api_docs/kbn_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- api_docs/kbn_core_test_helpers_model_versions.mdx | 2 +- api_docs/kbn_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- api_docs/kbn_core_ui_settings_browser_internal.mdx | 2 +- api_docs/kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- api_docs/kbn_core_ui_settings_server_internal.mdx | 2 +- api_docs/kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- api_docs/kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- api_docs/kbn_core_user_settings_server_internal.mdx | 2 +- api_docs/kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_custom_icons.mdx | 2 +- api_docs/kbn_custom_integrations.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_data_service.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_discover_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_agent_utils.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_elastic_assistant_common.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_event_annotation_common.mdx | 2 +- api_docs/kbn_event_annotation_components.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_field_utils.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- api_docs/kbn_ftr_common_functional_services.mdx | 2 +- api_docs/kbn_ftr_common_functional_ui_services.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- api_docs/kbn_language_documentation_popover.mdx | 2 +- api_docs/kbn_lens_embeddable_utils.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_management_cards_navigation.mdx | 2 +- api_docs/kbn_management_settings_application.mdx | 2 +- api_docs/kbn_management_settings_components_field_category.mdx | 2 +- api_docs/kbn_management_settings_components_field_input.mdx | 2 +- api_docs/kbn_management_settings_components_field_row.mdx | 2 +- api_docs/kbn_management_settings_components_form.mdx | 2 +- api_docs/kbn_management_settings_field_definition.mdx | 2 +- api_docs/kbn_management_settings_ids.mdx | 2 +- api_docs/kbn_management_settings_section_registry.mdx | 2 +- api_docs/kbn_management_settings_types.mdx | 2 +- api_docs/kbn_management_settings_utilities.mdx | 2 +- api_docs/kbn_management_storybook_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_category_validator.mdx | 2 +- api_docs/kbn_ml_chi2test.mdx | 2 +- api_docs/kbn_ml_data_frame_analytics_utils.mdx | 2 +- api_docs/kbn_ml_data_grid.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_date_utils.mdx | 2 +- api_docs/kbn_ml_error_utils.mdx | 2 +- api_docs/kbn_ml_in_memory_table.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_kibana_theme.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_ui_actions.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- api_docs/kbn_observability_alerting_test_data.mdx | 2 +- api_docs/kbn_observability_get_padded_alert_time_range_util.mdx | 2 +- api_docs/kbn_openapi_bundler.mdx | 2 +- api_docs/kbn_openapi_generator.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- api_docs/kbn_panel_loader.mdx | 2 +- api_docs/kbn_performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_profiling_utils.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_react_kibana_context_common.mdx | 2 +- api_docs/kbn_react_kibana_context_render.mdx | 2 +- api_docs/kbn_react_kibana_context_root.mdx | 2 +- api_docs/kbn_react_kibana_context_styled.mdx | 2 +- api_docs/kbn_react_kibana_context_theme.mdx | 2 +- api_docs/kbn_react_kibana_mount.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_reporting_common.mdx | 2 +- api_docs/kbn_reporting_export_types_csv.mdx | 2 +- api_docs/kbn_reporting_export_types_csv_common.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf_common.mdx | 2 +- api_docs/kbn_reporting_export_types_png.mdx | 2 +- api_docs/kbn_reporting_export_types_png_common.mdx | 2 +- api_docs/kbn_reporting_mocks_server.mdx | 2 +- api_docs/kbn_reporting_public.mdx | 2 +- api_docs/kbn_reporting_server.mdx | 2 +- api_docs/kbn_resizable_layout.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_router_utils.mdx | 2 +- api_docs/kbn_rrule.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_search_api_panels.mdx | 2 +- api_docs/kbn_search_connectors.mdx | 2 +- api_docs/kbn_search_errors.mdx | 2 +- api_docs/kbn_search_index_documents.mdx | 2 +- api_docs/kbn_search_response_warnings.mdx | 2 +- api_docs/kbn_security_plugin_types_common.mdx | 2 +- api_docs/kbn_security_plugin_types_public.mdx | 2 +- api_docs/kbn_security_plugin_types_server.mdx | 2 +- api_docs/kbn_security_solution_features.mdx | 2 +- api_docs/kbn_security_solution_navigation.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- api_docs/kbn_security_solution_storybook_config.mdx | 2 +- api_docs/kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- api_docs/kbn_securitysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_grouping.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_alerting_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- api_docs/kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_serverless_common_settings.mdx | 2 +- api_docs/kbn_serverless_observability_settings.mdx | 2 +- api_docs/kbn_serverless_project_switcher.mdx | 2 +- api_docs/kbn_serverless_search_settings.mdx | 2 +- api_docs/kbn_serverless_security_settings.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- api_docs/kbn_shared_ux_button_exit_full_screen.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_chrome_navigation.mdx | 2 +- api_docs/kbn_shared_ux_error_boundary.mdx | 2 +- api_docs/kbn_shared_ux_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_analytics_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_template.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_config.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- api_docs/kbn_shared_ux_prompt_no_data_views.mdx | 2 +- api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_text_based_editor.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_triggers_actions_ui_types.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_unified_data_table.mdx | 2 +- api_docs/kbn_unified_doc_viewer.mdx | 2 +- api_docs/kbn_unified_field_list.mdx | 2 +- api_docs/kbn_unsaved_changes_badge.mdx | 2 +- api_docs/kbn_url_state.mdx | 2 +- api_docs/kbn_use_tracked_promise.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kbn_visualization_ui_components.mdx | 2 +- api_docs/kbn_visualization_utils.mdx | 2 +- api_docs/kbn_xstate_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kbn_zod_helpers.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/links.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/log_explorer.mdx | 2 +- api_docs/logs_shared.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/metrics_data_access.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/mock_idp_plugin.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/no_data_page.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/observability_a_i_assistant.mdx | 2 +- api_docs/observability_log_explorer.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/painless_lab.mdx | 2 +- api_docs/plugin_directory.mdx | 2 +- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/profiling_data_access.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/security_solution_ess.mdx | 2 +- api_docs/security_solution_serverless.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/text_based_languages.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_doc_viewer.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/uptime.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 635 files changed, 635 insertions(+), 635 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 12d4d3e3c2bc6..5d0be3cc0aa61 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 6e3df191c2659..931cf0a419cb3 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_observability.mdx b/api_docs/ai_assistant_management_observability.mdx index 3792212ca10c4..fbe8204a6432d 100644 --- a/api_docs/ai_assistant_management_observability.mdx +++ b/api_docs/ai_assistant_management_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementObservability title: "aiAssistantManagementObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementObservability plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementObservability'] --- import aiAssistantManagementObservabilityObj from './ai_assistant_management_observability.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index 6e63de7fd7ed6..49dc37b6f9c6a 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 8caecfb85af94..d92a6e4efd19a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 3797f05d51945..ddd6b49a76358 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 191646a6199cd..ae8239d8e3be4 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index 940a87bd5b2b1..bfe3f5166e4c8 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index 3795427e245e9..2e23a463c1ef5 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager'] --- import assetManagerObj from './asset_manager.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 686aae1a5f12c..c22a7b2c4bb74 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index 5c2b9edf316be..6fea73ecf91a6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 736bd6c507a28..792ac5ac2dfa8 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 8d047b3ac0c2f..ade922736972a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 3d4d32caafe8f..db8a5c038e05b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index 2a62ab22a59d6..e25051c230943 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index 4f6027b27821f..ea83326036af9 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration'] --- import cloudDataMigrationObj from './cloud_data_migration.devdocs.json'; diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx index bbb65649e8097..45944e07aa62c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx index b3209c90c581e..1d0e1301e7e87 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments'] --- import cloudExperimentsObj from './cloud_experiments.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index cc11476d3bdc0..aa80098d4f642 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 70bf259abfc4f..ecd07147cce6f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx index 162e16e847699..ce4d83dfb0118 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 539bc1757bf71..c3c1b79b40832 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 96eebf3fc19b9..a835a9d67596f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index a11921d4e3230..e9f3b00c9683e 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index 7291c685277a8..3cc5430300624 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 8c08893972001..8ffd3741df6d6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index e3010e5d11461..ae338cbe05260 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index eb55b95b02123..da8ebf3ef6f3a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 632135c115e5d..61a2de2812d8d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index bc950beeffccd..be22f28300695 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index eeb2289d05465..ac34526becee0 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index b16ac6a25649f..624cc3931b54c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 8ee40c2e7b706..366494907485d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index b1d1955124686..da781ec9e2446 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index ffe99df1acdd4..6013e8ef52389 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 203f1e7d449ef..c6ed402efd80d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 8e996b22a3938..392abccc43561 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 6b5e81c2a5c5c..b4b36ae5ec989 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 7206e4f658b2d..829ec8ee9ebc1 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index cef85a2343e5e..07d9f62967f99 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index 876f66641609a..db9f18ceec1dc 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index 1c9a92db1daac..39c9d00f53341 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index afde939faaddf..4dfc3260018b3 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index dfd9330fae493..780486acccbca 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index e1eba460821ca..3a9128966c021 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index 5a4eaed2b619f..9f1eb3462408a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 6828b48694d71..34dc100d331ec 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 638f312a284ee..e324502ea0ba2 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index 657f12e9b749f..d97bc6d08379c 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index f6a8def9297c4..9a9c166a5dc3c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index df40534bf4a7d..4220bd0fbc5c8 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView'] --- import exploratoryViewObj from './exploratory_view.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index 0e8d0a0a73b6c..a44f0d9d2c0bf 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-12-27 +date: 2023-12-28 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 db00716d5d9a8..056990235b47a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 82440397948fa..7397139fc586e 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 9d4aa439fea21..749ef5a8fb150 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index 62b3be1cd8830..59209450fbcfa 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index ea9c5510a16bd..c12a2c9bee7c8 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-12-27 +date: 2023-12-28 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 d1b35ff626cf4..f0676b8f038ad 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index 5fd52ab3cf16e..32712edb3e83a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index cab45dcfd3632..2e7c87a6a571d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 06edfacd47441..14d271f166d31 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index c40789e313a8e..1b730e5522c13 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index 88e966e5abc36..b2573f307dc5a 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-12-27 +date: 2023-12-28 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 92a81be546929..93dc30d655485 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index a23b5e985411f..13446ba4e3db0 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index 984b0f6bd3b31..e3aaef86bde86 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index db6c45c81f1c1..fc747f943bbfe 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 8721593a3165e..3ff17cad1ee83 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 9b04e651b6b85..20219b2aa3304 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx index d4d1105039a56..66f20c0e1c76e 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 18a7dafac045c..d60d01a4873ea 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 78b53b67dba18..92816d0c07a87 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx index 637c80c8f15c1..d486a2818af9b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] --- import guidedOnboardingObj from './guided_onboarding.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index 10d6cbc6a9f69..ba69412d5b75d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx index 1989b6446ec3f..dcfc071b9c3ed 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index 1db71bab35cfb..4d0303bfba0fa 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-12-27 +date: 2023-12-28 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 0785dcec473a5..1ca63d2793b20 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-12-27 +date: 2023-12-28 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 b8e3626f309ce..daf4b151cf5bd 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-12-27 +date: 2023-12-28 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 2e6342717eb37..1f7237389cee7 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 63bd81c004d4a..b1f8323b98db2 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index 559885891b6da..c107e23899e6c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index 17e7aa1cb27c3..d4cb8c7801a6a 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 22225ef7aaf33..2c35109a80c52 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 09046e0a8db5f..8000ff558d454 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index f9ea48bfd15cf..3f0d13a800152 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 6caec993bdfbd..1669fc405a77a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index f22aba6919bab..801b5660ae842 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 8633bd8ae4eb9..2f2a242c9a412 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index 4805b07f1a6e2..9469faf78fd5a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared'] --- import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index ea3a3185d3fda..646bc61983da9 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 9b0c28f8fc706..278b6f7debef8 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index 83c539a218172..7444071bb0799 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index 53495d274e9b9..8a67a98e73324 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] --- import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index 89ab2ce4173d7..feafecf8d3f4a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] --- import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index 4bf893893aa4d..615a180de42b8 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] --- import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index 8405cece1689b..b3b686f4405e2 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_gainsight.mdx b/api_docs/kbn_analytics_shippers_gainsight.mdx index e64b1ae9783dc..05d6ba09b3dbf 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-12-27 +date: 2023-12-28 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 3c0dfa74496a8..3a1d0cccc734c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 16a633f135884..719799205b727 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index 39c17759f8a7d..fd7c8aa829041 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 1a6c2c19ab658..f962a2f718520 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index a27da5f0ee9c7..e67bfa884e0e8 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_bfetch_error.mdx b/api_docs/kbn_bfetch_error.mdx index 675abfbcd9281..fe82aae624f7e 100644 --- a/api_docs/kbn_bfetch_error.mdx +++ b/api_docs/kbn_bfetch_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-bfetch-error title: "@kbn/bfetch-error" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/bfetch-error plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bfetch-error'] --- import kbnBfetchErrorObj from './kbn_bfetch_error.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index aaf65800aa448..07e67e37d62e6 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index 9f44a0f3f7c9e..f9709210fdd34 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 69946f49dbde1..244b83d76d931 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index 10d4550420508..9ebfcf6dfd921 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions'] --- import kbnCellActionsObj from './kbn_cell_actions.devdocs.json'; diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx index 81fb08482ea0d..f7c3291744c60 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common'] --- import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index 804987cf2e20b..1936c9e29ba1e 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-12-27 +date: 2023-12-28 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 6e80976194fce..118a392c816e2 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index 43c7dc5174339..460658cc72ba7 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index 5ac3479e2a10c..e9beac09c779b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index 978cf6dc608eb..791e08caea35e 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index 19b7410e398e8..ce00c584e5f38 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index ef2f1b9a39a54..305ab59b01806 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index ae7c31acc1ea9..4bfa51cb54787 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index 186b479900e32..b0089d5faecce 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index 52e8dda0f2b94..ebd08670f274c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index 1045a5aaec296..e22608ddc4008 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx index db5702b4b79d1..d8be2c1cf83f8 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index 724ae1db2a83e..5e212ca8040d6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view'] --- import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx index 2bac1a15d4531..92a43ff189838 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index 79cdef60aecff..5653f966321f9 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index 0d0b981e7d94c..3cfecced585ed 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index 90cfe654b0340..d55ec81977899 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index df439b259ee0c..4d32e4633ba48 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index dc43cff1c53ed..e76f95a8429e2 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index 701676b3bd7c9..d8f9b5d56bf9c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index aa01ec5043807..8a405aefca107 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index a1c614d91efe8..87bbabe67350b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index 31e1bd16bc04b..060297c690d4e 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index dbffe9a389963..d3ae493cd8b51 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index 10500fd032b72..45a45e18eb54e 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index a6dadd98f293a..f2e5567675fb4 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index 6a520d0456ec9..d3baf907e7d70 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index 52ff7501a9c90..8647e646d1ad2 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index 56961a426fbae..cc1c934638aee 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx index 1fac2ae2264d6..678751d048fbb 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal'] --- import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 945039d09400a..75f3c4c8ceee3 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 0955b84a83c15..2ab35d0a8f180 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index 50e7df0bed7f0..8a03096052f61 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index 6ef0f6440f68e..a52e0e39c0ae2 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index 635e5393310ce..e467ba6e826d8 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index bc7604b8e0cfa..cf5987cfe5f12 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index bc42bc9bd864e..f19e10e73b17f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index 605d25fb1796b..28eb33948a95a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index 6be109f462083..f557bea4c6acb 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index 72fcc605ba3ab..b76593333fcd0 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index fb8a240448ed7..8a8be25511dec 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx index cb72ef7ce50fc..5298b9f112ea1 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser'] --- import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx index a35623c99e418..05acdc01e4398 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal'] --- import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx index c1b19c532681d..8d2ab9df99fbb 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks'] --- import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx index 13891d4e5999c..c598d8707e646 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common'] --- import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx index bbb1aa1ec91d4..f2cec537ce5aa 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server'] --- import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx index 783b12a6f165c..4bc4ec54afc26 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal'] --- import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx index e6682c1c0d2af..c68c880784bd0 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks'] --- import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index 1a48a87ee39e3..1d9c7b1669c57 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index bb19691f701d5..05d3c0e2f8a3c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index 46562aa51b0e2..27f4f671fffb7 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index 158685be8a972..f4697b6f4117f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx index daea799e8b9e0..33d16a0c98aa7 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server'] --- import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index a1063a04705c3..e2c9b15d90ad6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index 47067538aec50..d44139c95ccb8 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index e271255f9f3c9..6490406ef0dfa 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index 087c63d62a5f5..e6487fa65df93 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index c362b8128d861..603f152f17df6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index 870d70e62e096..2bfd44426d741 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index 6db0337c92789..b644aafdf0641 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index 805e7b62641f5..8849a0b8bacd6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index 0a0cf7d395b36..ecd7b23032179 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index 1fbec68d7f1c5..9c12b767a9ade 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index 99c1c67b3056c..9e863af106bb3 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index a8a72b0da79da..b3aa5488f6430 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index 8f2528d207190..c4bd56891c6b7 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index ec34c981dd197..93e78484eb6a1 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index 90e7b46329b5f..35e945fdb0a21 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index 12409ca8e8792..a8a4746e3d96b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index 4fb10dce99979..de8442dbe15ba 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index 90d89708efc1d..2465410ee2de4 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index 1efa88eb178c1..eac7fcc7790ba 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index f2397401d37c7..5873a3ae5cdb9 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index ef2c655d9b1a2..9c452058a78a7 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index f6ca9f7c6cab1..ba256f52733e1 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index c4a6ae2e7e39f..57edad0f859c2 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index a9dd8dd59d3d4..542beb673c5c1 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index 2d6a220cae349..3012e7b2a1ae8 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index 5d68adbdaab53..c5c7d2a4091a0 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index 3bd693b0117df..e8e8e20bf9060 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx index 047dc84d2a2c2..13acf47e03136 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server'] --- import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx index 9a582658fb417..48936066ff4e3 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server'] --- import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx index f93df83ca370f..ebe580f2829f5 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal'] --- import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx index 1db831750026b..85585be6ed2a1 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index 3ba0e416d2593..61f5bd8cf4d14 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index 1533ccb321ae7..1a062d643428c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 15abe462fd8be..58e0ea0b4a897 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index b43d8a064809e..33fe342ea2876 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index 5fc8fafc8905a..51fb6bc24abc0 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index c54904455e437..f81525e25275d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index 5178fe0a41b81..4691213348497 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index b0442fffe089c..bfa6fc38128c3 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index cda7ace6299d2..7c9ed26120d30 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index 3c8bbfa220379..08c7f3bd96734 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index 8786953bbd87b..220d81a51fe91 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index e6cbc4141375a..15f10d6a16911 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index 01f31b237d604..a389cfd1313f2 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx index f5e1a77f628e6..ef91cebf9051b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser'] --- import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx index e9703abe473ff..c0e678b6de090 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks'] --- import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx index c72a1e57c18d3..8c130f2c3314f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server'] --- import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx index 7b7794c5b4e4f..21e51b8fe584c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks'] --- import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx index c96d2d7d59038..2388913d27da1 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks'] --- import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx index 6c4eb28cc3199..c4a134230116c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal'] --- import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index e8f4f03595bbd..c436d464bf0db 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index b32f0adb30974..f0fbe42701e71 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index 2b299415bb7f4..abefb4c88ca34 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index 4a67c12d6d2d7..0d453bff503df 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index 711386d4d6a9b..a680738bcb144 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index e2180ca7e4fd1..47284b6c40244 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index de6b0844480d0..0cd0a747fd024 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index aa5d3d96e988b..25b7c25e3dff7 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index 9047d3307ee7a..dbc2376366560 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 5efd41b81a8fd..ad6c21ded0b88 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index c40095f328332..b28232b8cf32b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index 15bebec030e88..d9bd85b4ca70f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index eb66c736331eb..e2b5b58841c5c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index c9bfd4d6742ec..ea18819d66c7b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index c83e8f21498b5..93dce38e07ad4 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index c2a23bc5abe1f..ae8a1826a7dc6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index bed515625ace3..b4f582e62ba89 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index 48361c11fc5d1..f7d5262dca721 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx index 3f5c44f04dca6..e674818476963 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser'] --- import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx index 335087641df78..86e28739946c6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index 9abd1ea9fe1dc..8ce1af614055f 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index 1dc660c2796c7..5a88da18890e5 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index 36cd703696865..52067b0d1d1e3 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server'] --- import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx index b8db2c761fb36..9067c9be90c85 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks'] --- import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index 4012c2a076083..f4cee5b55c275 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index 6df762b9f081d..8fbc17ca2ce35 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 64be19e063f6e..0c5d86af19875 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx index 0b6e42b8c49f9..1ccbcb194a69c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal'] --- import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx index a64644eb4157a..ee6b86be704b6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks'] --- import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx index 193f093947b51..89b0d00db408e 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal'] --- import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index 20c9a6a323d49..8af5008dceb65 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index 4880984148ed7..30768c3f5c5e6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx index 15f70be2087b3..177f637fd03d4 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks'] --- import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index b89ad01abeb45..91a090e40fca3 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index a97221fca0e4a..087135a9386a5 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index b6543ed9e1c51..407781e420860 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index 4ef8954215fd7..8c42364411ca6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index 1a52d198eec33..83da00c108777 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index d14562dc5fc70..6cc980b667d7b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx index e1b7f4971844f..531042908d690 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal'] --- import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx index bb29c25a2330a..7c524e0cf61b6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] --- import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx index ef3a4a05a7e1e..2318fa6953eff 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal'] --- import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx index c01800c5544c4..839623f12678b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] --- import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index f18afc592e496..e0cf5d7938607 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx index dcd94820745bc..9200f61c3f624 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal'] --- import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx index 755b705d7dc4b..8b0f7c7e4a11d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks'] --- import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index 219ccc4e7da88..945cf229a637a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index 15caae740211d..39851ed246aeb 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx index eec36285d3dd5..cf989f5c0eb87 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal'] --- import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index c42a63ba43b8d..0e03ad205be3d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index 32c1f4bdaecb6..62219924abbc9 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index 18769bdc897ee..38b9e450a3e24 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index a2649ea53b6b0..c99f2a23659eb 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index 9fdb1035b46e9..0e7930973897a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx index 4c375555d9b68..71c760f4e745b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index bf209db758dd6..2be4ce3a0ae66 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index 93733d2a714a0..d90215ebaa5c0 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer'] --- import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx index 74941fabc9a4f..b02ea700cfdce 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils'] --- import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index 5f88b4bd6fd14..3fb1d23bc2030 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 0853d1c4def82..909acddb328d8 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index 80264e9df738e..6dfcafc6de7bd 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index b20f80347f0fb..5d1a7d5d74973 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index bdce1280d157a..e8facd1eee076 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index 6303698e09174..2c26962aa1d73 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index a0f8417295aa5..2b5497bff6b52 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index 7dbbb47251e86..1aeff89636e88 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index 0bd1f469edd4a..22bfdc330db14 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index f121dc1011305..46254f015d92a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server'] --- import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index 01e7bbdbdb934..6dc3241af443a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index 1b957a7adad9a..c0c16e0ea6814 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index 3e43a243dd599..d7a8142513883 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_internal.mdx b/api_docs/kbn_core_user_settings_server_internal.mdx index 479e6165d4d44..94af05154dc75 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-internal'] --- import kbnCoreUserSettingsServerInternalObj from './kbn_core_user_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index 6959270d2ab36..3e43f18231763 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks'] --- import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index 8f1aac5d840d6..725e921b0d9f5 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index c352b0a6dad84..840aa31e7ab45 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index 9e8c21f33d07a..9f81c4bd0328d 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index c9c5441052dff..7cd7180c33f15 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 55bc1517df86e..0611ce7865668 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-12-27 +date: 2023-12-28 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 af930672389f6..aeb6da2f69c5a 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-12-27 +date: 2023-12-28 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 79757b418b2ea..53b81363112c3 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx index bd1471ecc46cb..3ce188330d7a2 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics'] --- import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx index 21ce10e2a0b9f..633683833eb5d 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-12-27 +date: 2023-12-28 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 1693dd9c775dc..a9b54f2fa2021 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management'] --- import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx index 638798b3403d7..6221f06c9819f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml'] --- import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx index 08df8d9612e82..82d16440fa133 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability'] --- import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx index 9fcca26155f0a..e72b71b04591d 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-12-27 +date: 2023-12-28 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 69a4c628b7184..59b0e35f4bdf3 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics'] --- import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json'; diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx index 3c71268a917a2..a221f10ecebb8 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools'] --- import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json'; diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx index cc96b4852cbea..1d53a9f7d33d3 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management'] --- import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json'; diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx index 707dacaa33816..384d1a89b8632 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml'] --- import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index b31a843e36e4b..14171ed30dce2 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index 3c68b193e4243..6187f1b9c99bd 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index da29daebeef0e..2c5b3dde21644 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index 71113283107e3..16ea828b75c0a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx index 4e01c18d0a562..b2bed2f0c9877 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 0e8b0cb6d27f6..3108b82acc95f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index 2874933043c57..28978c74ce23f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx index 1824ae4692ce4..99e00e282bea0 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop'] --- import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index cd7efd6d3571b..0d506c3a77dab 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-12-27 +date: 2023-12-28 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 95a9f8c820bc7..9a148c1e9e7fe 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-12-27 +date: 2023-12-28 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 d2326b96084a8..67f8cef2b73ee 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index 33cd4e4b14c3e..8450b79bc1380 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index fdcb9f86120c2..ce1923d9e1dab 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index f48eb9b7c5e0c..baf4e81503e28 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 77bf8bd1e20ce..73980f0684309 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es'] --- import kbnEsObj from './kbn_es.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index c5ea73e03d380..19e121561bcff 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index 5b54d11c3e752..bc7986cac0511 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index ea6c0afc2deff..8c8e31a4c82a1 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index 43bf9b15dcc9b..2b468bb819ae0 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index c2a4a7ed0d8b0..048f1790309ef 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index c91115877a210..5db5a4af7b614 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index a4664445a6dae..7632bdd69d47e 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index 4746c045201b7..d7e1c09024203 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout'] --- import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index f99799b23529c..b511bf42b6216 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index b0278dc24a7a8..21ed82b250246 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 260e466e04180..c0c4d4518ecb4 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index 3e66b79b6b909..66121a0fd7534 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index a8058d86e6b3e..525eae2fe9b70 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 5b8907a0d30e8..451db4b9ce382 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx index 2f09a92d37dc2..da3123345d16d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions'] --- import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json'; diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx index 9587d630f1256..ff6b24a1fae72 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index 67898cd2e2ba8..84fcbafb4dbe4 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding'] --- import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index 7b5f45197797a..8f181bdc49c7a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index cb14f9789558a..1ae357c4757ac 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx index 4d7bf8232120f..7c3c699d05f52 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server'] --- import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index a55e97d6a60e0..0c0d45edb960e 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index e51940983a4a9..dc17f4470adbf 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index f23fcb23caf5b..aa14e3201f565 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx index e7e947cbc9cef..f84b3de06565d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react'] --- import kbnI18nReactObj from './kbn_i18n_react.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index 59fd1b2fc6c6b..51557a4afeb7c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index f568873e03e5b..e795e7427164b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge'] --- import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index e6743a15f2dbd..7773d79192ca1 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 202a89e74f314..d81584d09d24f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index d900914c12029..08c1b9077d2e2 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx index 348ad4b84ce3e..d5dcdadffcdde 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys'] --- import kbnJourneysObj from './kbn_journeys.devdocs.json'; diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx index 63e71af2d9230..0cacd188b735d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 38bc5606046a8..0851e6d71d3e0 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx index 382f7b5944fe9..c9e9d499b40ac 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index a37325653be6c..0152af5f074b4 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index e105581ad011e..566db241df25b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index 492c20b29052b..7ce7b9e522c69 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-12-27 +date: 2023-12-28 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 316e47c145fa2..5e38f03f80936 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx index 6dc7ddba66c8a..bc29877dd33d5 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index 05de64a45510d..b90621067bf61 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index f36d1bc62aba1..342013eb59fc8 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index a4859a101660f..012eb4ee66e89 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index a937cf0f495f4..9e1b51caa696d 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index dd5c9ef19bb57..a58e965538e43 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index 0010f41219100..f862090fefd78 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index 30557deb5da29..db32e19342028 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index c16bea845a456..859279a85beeb 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index a9a26946510f7..f1118f71ae802 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index a7c6236d3657b..a0a37d86be80a 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 9564ac42bc71c..3047b2f1a190d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config'] --- import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index 304ebb7aae5b0..37068e8e4b42a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx index af53867f2ecec..d4cfa59f0c90f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils'] --- import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index 5a81c2b7d730e..4d99078ffb6f8 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx index 16a1a9f28045f..9fb97182a7f2a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils'] --- import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index 5af1fb1288b09..a483196edb313 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index af252f96727af..1692aaa103efe 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index f8c3c04531a44..dbc7cd9790ea7 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils'] --- import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx index 11117924eec29..856a0d3fcea8a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid'] --- import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json'; diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx index 1d0a871a15669..07fd34fce3523 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker'] --- import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json'; diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx index df78d42895d50..999a428a6f0f8 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils'] --- import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx index 2a1c227a3bb5f..5ac46acf89a67 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx index 433f3c978f1a3..2cb78192bed51 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table'] --- import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index 5b9b5a3ba8c49..354e7a5cc38ee 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined'] --- import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index 2ed23c3b7c6ea..737abd0568828 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx index 3a8882e7fe460..92edecbd8ee7d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-kibana-theme'] --- import kbnMlKibanaThemeObj from './kbn_ml_kibana_theme.devdocs.json'; diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx index a5583e1d52a7b..63b7a7cbe6e71 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage'] --- import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json'; diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx index 7a0c100099fec..62f8d582b524a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property'] --- import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json'; diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx index f2b2dfa535c1b..62fdb7ec925f3 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils'] --- import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index e1463ca148c64..237656c184a9b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils'] --- import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx index a3fac7bf62950..1afd1b321b41a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils'] --- import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx index 7f35e1e08e927..aeac112e9ced9 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils'] --- import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx index c49804ea3ab9e..aac38d5718277 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils'] --- import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index bf560ceeeb0f1..c3542e9d2a8c7 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index dc7300b7b53da..e8d6aa0d6b3cb 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_ui_actions.mdx b/api_docs/kbn_ml_ui_actions.mdx index 7a9cefe315149..6d3044d48edd0 100644 --- a/api_docs/kbn_ml_ui_actions.mdx +++ b/api_docs/kbn_ml_ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-ui-actions title: "@kbn/ml-ui-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-ui-actions plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-ui-actions'] --- import kbnMlUiActionsObj from './kbn_ml_ui_actions.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 9e2bbdd5819bc..2b31a05d408e0 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 6b1e69d611543..ff2cc134bd21c 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-12-27 +date: 2023-12-28 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 df38150e7bcf3..6156e0ea3eb15 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning'] --- import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json'; diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx index acd9ea78ea887..ea481d851fd8d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index 788f61a365546..1ca5b3a16607c 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index 58cf5d9348b72..1333dab34bc3e 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index bdb3ccd26a5d2..80e15e01e8658 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index 159b2a7609bc3..2654ce5658b20 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index fde0f2719179b..e0a07b6a84cd1 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index 7baea47f94658..1d278ec9914c2 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx index 45738eeacac72..0115aab690628 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index 567c9d106bf2f..e0f3225bc2852 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 9bd78c0a48f20..1ef8c320a993f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index a6b356f122e79..9e06be730edf1 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index 39676623f8f41..e140f69dc07e4 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index b7f3c7ae8c1f5..3203cea48f2e8 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index f571365d847f8..21a5c4d230c3a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling'] --- import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index 4fe89c089e38d..582607ca803d6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index be68bc24635a2..979ccca4b8aeb 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common'] --- import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx index 321e8ae9e2b68..572512b8eab5e 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render'] --- import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx index 8447d45278fd5..c453724c9ee9f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root'] --- import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx index df4f545d888cc..11f050df5da50 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled'] --- import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx index ce0b8bbc1208b..baac99094ee30 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme'] --- import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx index 22ce1d3820771..f6a996e86b69d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index 290c4bd50b191..8f54ad15bb30a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps'] --- import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json'; diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx index c836665349cc9..53a5439f6e32e 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter'] --- import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json'; diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx index b5bf4845dab8b..a6fd2aed0fbf2 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path'] --- import kbnRepoPathObj from './kbn_repo_path.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index 6284d8995aa84..f8e6e1986b467 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx index 6ee92cc749ccf..3d604be01e60e 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index b46b4bd74c448..0b655635496dc 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index 1fca86b6a5ccb..1ec0082cc7743 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index 72d07ab9257ee..8c7bde9c45959 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index 30b679dd64e93..fac4df845894b 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index d71c03ebce5fc..69107fed8ee71 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index ee09a8ff7c9eb..c59fe56cd90bd 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index 618e659dc9c60..e4706d33e67f0 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index d7db850016d37..5483ba88aa0cd 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index 608a5238155e5..22eb96258fea9 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index 93ec12be37375..75d8aa64ce38f 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 202034a63099b..0e268f00d0e3c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index 9f6ec17c7c81c..4829e250083f9 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index 098f0b06db9d8..61296c4801b8b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule'] --- import kbnRruleObj from './kbn_rrule.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index d2a28f63f5b33..458d0b941dbb9 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx index cd10c5007c80c..5c10b2e0ee4c6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index 09bc62c550eea..d8062d317e099 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index 2e47dbf4ab243..de1280abe309f 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index c6ae710a6d969..00aa8d8bc2423 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index 04ef655c24f1e..4741e7fa2366e 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index b7236e793eb0f..bdb33661bb988 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index bbaf17f8c0591..eb5f5c77ff5c5 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index d4e7cdb811106..0d0da06d8cc6d 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index 9d1cef6d38df6..757980044adb2 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index 45d4d4407626f..17e46426e826f 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index 0e08bea546bc0..c6e15b3637c67 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation'] --- import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index e325a4258cb39..c4ca1f9c912f2 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav'] --- import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json'; diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx index 6bba933fc2dfb..616102e2788ee 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 5b3177f8c9788..36b8192c50015 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx index ef34269ed4bdc..78c17ceabd838 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table'] --- import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index 78fbabddabd7c..56abb706ec4a1 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index 8b8ef36e0fc42..1ccf5e4195632 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index 13b2eae47c94d..ba284b7e4fd26 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx index c66e7bf645968..78f120e992fec 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping'] --- import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index 55f32cbbc271e..b2ee47dda8a15 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index 6a9f12b90d6d8..b597ad39858c8 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index c10f9c1c47ebb..f5cb1f2509df6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] --- import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index ff80a75b17c4c..edbf3a246e0c6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index 12b3acafb8a87..3338d3ee9bd5f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index d89ef7048c5e6..8830ab42b13f2 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index 06da359665e18..dc1fcf69235a0 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index 58c0c3cece0d7..f6e9e5cd75f33 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index 174d6e92fc2a6..c3f105de213c5 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index 54c136b9244b9..12d23df8b51d1 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index d5e14d3513442..c7a221e5d49f9 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index 45e574013bab9..7990ea0970e33 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index d079bbf9760d3..e56456ad313cb 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index 16bb5edac4603..72eb8c335a03b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index 458c0bae20498..2ef99d3e4eca7 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index e2b8133d5af6d..59f9d90dc4820 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index 2fcfefeb6062d..c73e80e49bb7f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index 647cfb8d00c2d..b917072124ebb 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index 9624e2825a0ad..ad3bbf1e9afa5 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index 60d0126d1182a..ee0c0d35ea220 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config'] --- import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index 2286569ec6452..5dcb0a4d9d3a4 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx index e137d268996d5..adfd6a54bd23c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index 2cc32b69918fc..613769d973837 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index f08de3cf7fc9c..8056549580e48 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index 40137e42ed1b2..2676dd7e3c36d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index 6d4af4386bbc6..b7bce610912a3 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx index 0d7435907e21e..ed360a9810328 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index 5eaa2880f194b..02088c92f7e14 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index f13e2e017afca..f1a4a0bf56082 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context'] --- import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx index f372124233337..4ce6833ee9acb 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image'] --- import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx index dd520289c28ad..b487290ce3a60 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks'] --- import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx index cfdf61f11ed5b..0e478af073f5d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks'] --- import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx index a62c60b3f782e..cdbb5b49c32bc 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker'] --- import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx index 187777c7effe5..e9168fa7d7214 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types'] --- import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx index 77f7921b882ce..1ffbe35e3d4d2 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload'] --- import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx index ee6fce54ce470..ba0814a0e4f0c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util'] --- import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx index 090034517dc43..0459990d30cc7 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app'] --- import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index 405b46bb15984..838ed95f41d10 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx index 4901b348818d4..a0a700803eb49 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown'] --- import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx index 95275ccf3c322..35b4457142e9b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks'] --- import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx index 7a6a5139dc235..cde9d0412c85b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index 2239ed77607e8..f3c1aaecd7150 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx index bc0da6b552c3d..711f0b5347485 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index f00d03e3ef4c5..746d04556f419 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index d89845f0f7105..a3b93e62675b3 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index 91f2303f58998..1e84672e44390 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index f1ec8b7ed8b92..81d578cfc8289 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index 6dd427995ad43..1107ebd963a4b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index 20786e6e90a2a..eb956fe7b3d5b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index 04630b0988318..0f0017cc65abd 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index 63a1356fad08b..a4497fc501e9b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx index 5b12f7604ddc2..f9091e00f32fa 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index 36276b934d6af..168f9e1b92ec6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx index a4cf0d5b2137a..bb88fff0f39bc 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found'] --- import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx index a7f88b1eb62b4..baa418ee292a5 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index 841fb3eb4e987..1c84a36759976 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index eac0fefe06ee6..de976937e266d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index 6bedd9acb2fb9..03454d37eec86 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index e7a0a8ee9ac23..97867c3d28b9e 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index a00cae30e542f..79540fec69b0b 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-12-27 +date: 2023-12-28 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 4cb62f31bbe07..764a02931f1df 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index cd08a762123bd..7e4114b9f0dc9 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 99bc5fcf64b17..0cf2fa5e5d935 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index ca13c081c0f24..61cfbb8c5ba04 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index f245f010cef74..c4a9bc7b9fa18 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index 42b237fa129e7..dbf3736e1f6f4 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-12-27 +date: 2023-12-28 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 bf80e9582f4f3..b875ceb02b534 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx index c47b56aea0faf..df188aa02af6d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx index c0ce28ddc2e8c..68df9a83587a9 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-12-27 +date: 2023-12-28 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 c3ae24984850d..2f4da82845bbb 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index 8a3cbe95a02b8..f96adfe632a08 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 0572ba766d5b4..298f00476bcaa 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects'] --- import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index e77462889cc7b..65679c4b58ffc 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx index bb80ece6d3832..ccb3f24833187 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser'] --- import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json'; diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx index 0e5cda1255f1a..f44047350ce0f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src'] --- import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index 6951499db1a74..752ae9f308d4f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index 192a82919427b..456ba53166756 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index fb9816ef38965..6ad911b0799b4 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index ae32d691404a2..a0cc6a0300527 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index 4cea2f1ea4381..a9d8d7f0d2d10 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx index 6d50562aa32f2..0f9b894c87e7f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index d49a5e576a64f..08d9c40469994 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index d78ecdaf3e4bf..96037a34d125f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index 26fe4473ffc72..64bf690686945 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] --- import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json'; diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index d44c79faa2580..d53509c0b3f7b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] --- import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json'; diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index ce14097a9171f..78970f4c88499 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-12-27 +date: 2023-12-28 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 f054f167c5231..a0c223271c064 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_visualization_utils.mdx b/api_docs/kbn_visualization_utils.mdx index f0e91dfafe58d..1c56665b9f99c 100644 --- a/api_docs/kbn_visualization_utils.mdx +++ b/api_docs/kbn_visualization_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-utils title: "@kbn/visualization-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-utils plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-utils'] --- import kbnVisualizationUtilsObj from './kbn_visualization_utils.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index a4c40c7d6b69e..bedbd9354a867 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 92f52c1a5a4f5..9080a06179d35 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index 6721864171629..aba611d65d84a 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 42140afe43f17..4a597a0825501 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index c3eab18606546..2892b6920d3c4 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index 0738de2d3765d..8b8fdf300986b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index 72890d7699841..16128f8032936 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-12-27 +date: 2023-12-28 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 c80b59264469d..e7fccb9dc5b31 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-12-27 +date: 2023-12-28 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 023a39abf5353..d5537c7130996 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-12-27 +date: 2023-12-28 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 8a73ee1c6123e..54ed62fc43171 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index ceb8e3570dc51..19af033a4e8b6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index 5149830b45166..ca01f322cd7d6 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 43460476bee54..867563037fea1 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx index 865e4865db94d..5854f58db646f 100644 --- a/api_docs/log_explorer.mdx +++ b/api_docs/log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logExplorer title: "logExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logExplorer plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer'] --- import logExplorerObj from './log_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index a64b1c54d76c6..4b9f0d85a871f 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-12-27 +date: 2023-12-28 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 ef51f3a26320e..ff1d481c717e7 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-12-27 +date: 2023-12-28 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 e42386782643e..227d4bbb0ec67 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-12-27 +date: 2023-12-28 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 fa79159d8625e..cc038d8e61378 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index 0b9ebb90d49e5..8808bf15b3187 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index dd357d672097a..0baa64215b869 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index 92d4d9109ea52..9872403b4d82f 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index dd81705784388..def3cad297dc7 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index c5b35a368252a..c1effb2f0a949 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index d88d658d5b461..12ab894e499d6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index 040d91561d880..b6ae395bcb140 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index c0000376f83b2..18bbd3868b443 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 2f97ecc1255af..6b400619f57c7 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 621f8be13bdf7..c7b6189860c30 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index 428f88db9b8c9..419599917dcba 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_log_explorer.mdx b/api_docs/observability_log_explorer.mdx index 30b4bcfd79147..33660ca957c6f 100644 --- a/api_docs/observability_log_explorer.mdx +++ b/api_docs/observability_log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogExplorer title: "observabilityLogExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogExplorer plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogExplorer'] --- import observabilityLogExplorerObj from './observability_log_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 8824675dcaf57..82211d18f3086 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index 730ccb50c543d..3438e7759ec5f 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-12-27 +date: 2023-12-28 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 cfd8cc5c2cffe..dc6e3ba3c882c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index ad9c4fcbad671..52d34bb880c2e 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index faf2c148a80f1..215d6ed221f4a 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 9f30ae774c861..81a3e95f641ff 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index 970581f0fe809..95b881a2260e0 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index bdbd716516d57..8963fcba93b73 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 884a0cc61f6e7..34db35c12204e 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 10d3c78ef6473..367f42ad0baaf 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index cedbc7ae0e8fd..6b1ea9175c71d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index a56e305333309..f0040d2445636 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index 6009f9f1e4cdf..bae5c7e1c2cd7 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-12-27 +date: 2023-12-28 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 acf6d19d30e2f..ae89ab98f2538 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index eedd8b0882b62..7309f01d3dcf2 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 6ecde49ef3ce4..6622a2951c4dd 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index a18e096b49b68..94ed884e43cbf 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index 5e35353d5a11c..c9d27515c3e58 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index 9cbe5a9c544de..a50c4daac04ee 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index f163a8c8d8dd6..77c90a0b7654f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index c7f415841988f..b6458f92c45e3 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index c5388dfca11bc..cace6898e8a37 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index e6f503dd88970..1d5a9e79c7730 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index ce5d2076a0262..07a096b8b1606 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss'] --- import securitySolutionEssObj from './security_solution_ess.devdocs.json'; diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx index 88ad9d0732d45..d7b2452dcf033 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless'] --- import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index 96cd850a1919c..19f8e0751a7a5 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless'] --- import serverlessObj from './serverless.devdocs.json'; diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx index 52a26cb7e71f8..70687c4d26445 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability'] --- import serverlessObservabilityObj from './serverless_observability.devdocs.json'; diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx index 4cb42edec2ad0..981d9892edad3 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 8e15f2e33cc59..6ad47574de75d 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.mdx b/api_docs/share.mdx index a9e5eb099a8cf..c9570bad3c60d 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-12-27 +date: 2023-12-28 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 b1e443cebe921..9e703c274affd 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index cd4cb161b774d..cd73f2ed33f97 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 2a9312deb9a2a..5e6e32c990be3 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx index be5624e980915..7f6c09a8040e3 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 6cf010ce1004f..529fc21e46309 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 59e7fe106d6eb..cfc0586ba0a6c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index 09ae756f19ff9..19aeb1f2972fa 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index d319d0d6410ca..628f681ba61d6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] --- import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 62fe8c3ebf43c..b86093717bd1f 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx index 10800ef651270..afdf3583a7df3 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-12-27 +date: 2023-12-28 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 20b8a45024b21..ffdeeeda95023 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index f8e8ee5ab6f7a..b1fd33e56e074 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index 83ca627f9e2f8..26e1a063b8750 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 16a63476c3f4d..1f4b8fc2c8729 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 28708542cebc7..4eb7a82fc0055 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 2771791d09e4d..6f2cee4eccf01 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index b10cbfb1c9b74..ca448a5b6ea02 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2023-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index ccfd582039710..7a007288c1257 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 3f712edc0e5a6..ec8fbb60f0cec 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index 8c15f9ab2f1b1..7e4ed776c6a6b 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index 962f90f75858a..75f36a25139ce 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime'] --- import uptimeObj from './uptime.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index e03514b65a3e5..40176ab873ec3 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 2b792c214cdb5..3cb73c31470f4 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index ba3687c2fd523..13d7895352175 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index 228f450fa493c..a9a1eb0a174a2 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index 1cc2018f16ecc..9578591809d3e 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index 945df4ed637ba..3c6cace3a08c6 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index f40ae6a7c58c4..fb511db62c115 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index e7cf5a83efb34..f508cbe1cf879 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index f0ee81ffb0cf9..797ee06ba352c 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index 211bd2003da9d..31b49711ca866 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index a96aff6e1259b..28e904a278ad5 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index 60fb70b53c944..9a541972a83fb 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index 3ab4d397cdba2..6b03c5e9336f4 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-12-27 +date: 2023-12-28 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 b87414179ee44..b01d1aa330703 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-12-27 +date: 2023-12-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 62f19765f46ed1b6209bd69f7e541c77c1cc2cb6 Mon Sep 17 00:00:00 2001 From: parthpuri-elastic <150776158+parthpuri-elastic@users.noreply.github.com> Date: Thu, 28 Dec 2023 13:58:52 +0530 Subject: [PATCH 002/323] Add DLS parameters in native ServiceNow connector (#173982) ## Summary Related to https://github.com/elastic/connectors/issues/1819 Add new config parameter in ServiceNow Connector related to Document Level Security ### Checklist Delete any items that are not applicable to this PR. - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --- .../types/native_connectors.ts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/packages/kbn-search-connectors/types/native_connectors.ts b/packages/kbn-search-connectors/types/native_connectors.ts index b4efc74ba7969..0fcac23e1038c 100644 --- a/packages/kbn-search-connectors/types/native_connectors.ts +++ b/packages/kbn-search-connectors/types/native_connectors.ts @@ -2978,6 +2978,27 @@ export const NATIVE_CONNECTOR_DEFINITIONS: Record Date: Thu, 28 Dec 2023 10:14:42 +0100 Subject: [PATCH 003/323] [Cloud Security] use chart theme provider for CNVM dashboard trend chart (#173742) ## Summary Closes: - https://github.com/elastic/security-team/issues/6930 ## Screencast [screencast-github.aaakk.us.kg-2023.12.20-14_42_41.webm](https://github.com/elastic/kibana/assets/478762/18d1480e-fae9-42c5-84d3-9a79121d5930) --- .../vulnerability_trend_graph.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx index 92cffe08d9b0b..dcdc9ffccd7ce 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx @@ -14,11 +14,11 @@ import { timeFormatter, niceTimeFormatByDay, PartialTheme, - LEGACY_LIGHT_THEME, } from '@elastic/charts'; import { EuiButton, EuiComboBox } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; + import { truthy } from '../../../common/utils/helpers'; import { useNavigateVulnerabilities } from '../../common/hooks/use_navigate_findings'; import { VulnStatsTrend, VulnSeverity } from '../../../common/types_old'; @@ -26,6 +26,7 @@ import { useVulnerabilityDashboardApi } from '../../common/api/use_vulnerability import { getSeverityStatusColor } from '../../common/utils/get_vulnerability_colors'; import { ChartPanel } from '../../components/chart_panel'; import { VULNERABILITIES_SEVERITY } from '../../../common/constants'; +import { useKibana } from '../../common/hooks/use_kibana'; const stackAccessors: VulnSeverity[] = [ VULNERABILITIES_SEVERITY.CRITICAL, @@ -151,6 +152,9 @@ const getTrendData = (vulnTrends: VulnStatsTrend[], selectedAccount: string) => }; export const VulnerabilityTrendGraph = () => { + const { + services: { charts }, + } = useKibana(); const getVulnerabilityDashboard = useVulnerabilityDashboardApi(); const vulnTrends = getVulnerabilityDashboard.data?.vulnTrends || []; const [selectedAccount, setSelectedAccount] = useState(DEFAULT_ACCOUNT); @@ -208,8 +212,7 @@ export const VulnerabilityTrendGraph = () => {
Date: Thu, 28 Dec 2023 11:58:09 +0100 Subject: [PATCH 004/323] [SLO] Display values >100% in preview chart (#173840) ## Summary Fixes https://github.com/elastic/kibana/issues/170900 Display values >100% in preview chart with warning. image --- .../components/common/data_preview_chart.tsx | 86 ++++++++++++++++++- .../domain/services/compute_sli.test.ts | 4 +- .../server/domain/services/compute_sli.ts | 4 - 3 files changed, 87 insertions(+), 7 deletions(-) diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/common/data_preview_chart.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/common/data_preview_chart.tsx index 81556c2feb0f7..8fd1039c0c53c 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/common/data_preview_chart.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/common/data_preview_chart.tsx @@ -16,8 +16,11 @@ import { ScaleType, Settings, Tooltip, + TooltipTable, + TooltipTableColumn, } from '@elastic/charts'; import { + EuiCallOut, EuiFlexGroup, EuiFlexItem, EuiFormRow, @@ -77,6 +80,8 @@ export function DataPreviewChart({ isError, } = useDebouncedGetPreviewData(isIndicatorSectionValid, watch('indicator'), range); + const isMoreThan100 = previewData?.find((row) => row.sliValue > 1) != null; + const baseTheme = charts.theme.useChartsBaseTheme(); const dateFormat = uiSettings.get('dateFormat'); const numberFormat = @@ -165,9 +170,54 @@ export function DataPreviewChart({ ); + const columns: TooltipTableColumn[] = [ + { + id: 'color', + type: 'color', + }, + { + id: 'label', + type: 'custom', + truncate: true, + cell: ({ label }) => {label}, + style: { + textAlign: 'left', + }, + }, + { + id: 'value', + type: 'custom', + cell: ({ formattedValue }) => ( + <> + + {formattedValue} + + + ), + style: { + textAlign: 'right', + }, + }, + ]; + return ( {title} + {isMoreThan100 && ( + <> + + + + + )} {(isPreviewLoading || isError) && ( @@ -189,7 +239,40 @@ export function DataPreviewChart({ )} {isSuccess && ( - + { + const firstItem = items[0]; + const events = firstItem.datum.events; + const rows = [items[0]]; + if (events) { + rows.push({ + ...firstItem, + formattedValue: events.good, + value: events.good, + label: i18n.translate( + 'xpack.observability.slo.sloEdit.dataPreviewChart.goodEvents', + { + defaultMessage: 'Good events', + } + ), + }); + rows.push({ + ...firstItem, + value: events.total, + formattedValue: events.total, + label: i18n.translate( + 'xpack.observability.slo.sloEdit.dataPreviewChart.badEvents', + { + defaultMessage: 'Total events', + } + ), + }); + } + + return ; + }} + /> ({ date: new Date(datum.date).getTime(), value: datum.sliValue >= 0 ? datum.sliValue : null, + events: datum.events, }))} /> diff --git a/x-pack/plugins/observability/server/domain/services/compute_sli.test.ts b/x-pack/plugins/observability/server/domain/services/compute_sli.test.ts index f2c1a08d47c46..79494de1d7cf1 100644 --- a/x-pack/plugins/observability/server/domain/services/compute_sli.test.ts +++ b/x-pack/plugins/observability/server/domain/services/compute_sli.test.ts @@ -16,8 +16,8 @@ describe('computeSLI', () => { expect(computeSLI(100, 1000)).toEqual(0.1); }); - it('returns 1 when good is greater than total events', () => { - expect(computeSLI(9999, 9)).toEqual(1); + it('returns when good is greater than total events', () => { + expect(computeSLI(9999, 9)).toEqual(1111); }); it('returns rounds the value to 6 digits', () => { diff --git a/x-pack/plugins/observability/server/domain/services/compute_sli.ts b/x-pack/plugins/observability/server/domain/services/compute_sli.ts index eb7d0493f5534..bafab79104134 100644 --- a/x-pack/plugins/observability/server/domain/services/compute_sli.ts +++ b/x-pack/plugins/observability/server/domain/services/compute_sli.ts @@ -14,9 +14,5 @@ export function computeSLI(good: number, total: number): number { return NO_DATA; } - if (good >= total) { - return 1; - } - return toHighPrecision(good / total); } From 03726cf2f1d425c985057ad8451e492d1eebd550 Mon Sep 17 00:00:00 2001 From: Ido Cohen <90558359+CohenIdo@users.noreply.github.com> Date: Thu, 28 Dec 2023 14:35:42 +0200 Subject: [PATCH 005/323] [Cloud Security] Get rules state API --- .../common/constants.ts | 4 + .../common/types/rules/v3.ts | 9 +- .../bulk_action/bulk_action.ts | 3 + .../benchmark_rules/bulk_action/utils.ts | 18 +- .../routes/benchmark_rules/bulk_action/v1.ts | 14 +- .../benchmark_rules/get_states/get_states.ts | 51 ++++++ .../routes/benchmark_rules/get_states/v1.ts | 45 +++++ .../server/routes/setup_routes.ts | 2 + .../test/cloud_security_posture_api/config.ts | 1 + .../routes/csp_benchmark_rules_bulk_update.ts | 36 ++++ .../routes/csp_benchmark_rules_get_states.ts | 164 ++++++++++++++++++ 11 files changed, 327 insertions(+), 20 deletions(-) create mode 100644 x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts create mode 100644 x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts create mode 100644 x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_get_states.ts diff --git a/x-pack/plugins/cloud_security_posture/common/constants.ts b/x-pack/plugins/cloud_security_posture/common/constants.ts index 7f4f8c796f4c1..77e2dd38f326d 100644 --- a/x-pack/plugins/cloud_security_posture/common/constants.ts +++ b/x-pack/plugins/cloud_security_posture/common/constants.ts @@ -30,6 +30,10 @@ export const CSP_BENCHMARK_RULES_BULK_ACTION_ROUTE_PATH = '/internal/cloud_security_posture/rules/_bulk_action'; export const CSP_BENCHMARK_RULES_BULK_ACTION_API_CURRENT_VERSION = '1'; +export const CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH = + '/internal/cloud_security_posture/rules/_get_states'; +export const CSP_GET_BENCHMARK_RULES_STATE_API_CURRENT_VERSION = '1'; + export const GET_DETECTION_RULE_ALERTS_STATUS_PATH = '/internal/cloud_security_posture/detection_engine_rules/alerts/_status'; export const DETECTION_RULE_ALERTS_STATUS_API_CURRENT_VERSION = '1'; diff --git a/x-pack/plugins/cloud_security_posture/common/types/rules/v3.ts b/x-pack/plugins/cloud_security_posture/common/types/rules/v3.ts index f413c64856a88..c2b70352aef9f 100644 --- a/x-pack/plugins/cloud_security_posture/common/types/rules/v3.ts +++ b/x-pack/plugins/cloud_security_posture/common/types/rules/v3.ts @@ -137,18 +137,21 @@ export interface FindCspBenchmarkRuleResponse { export type PageUrlParams = Record<'policyId' | 'packagePolicyId', string>; -export const cspBenchmarkRules = schema.arrayOf( +export const rulesToUpdate = schema.arrayOf( schema.object({ rule_id: schema.string(), + benchmark_id: schema.string(), + benchmark_version: schema.string(), + rule_number: schema.string(), }) ); export const cspBenchmarkRulesBulkActionRequestSchema = schema.object({ action: schema.oneOf([schema.literal('mute'), schema.literal('unmute')]), - rules: cspBenchmarkRules, + rules: rulesToUpdate, }); -export type CspBenchmarkRules = TypeOf; +export type RulesToUpdate = TypeOf; export type CspBenchmarkRulesBulkActionRequestSchema = TypeOf< typeof cspBenchmarkRulesBulkActionRequestSchema diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/bulk_action.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/bulk_action.ts index 1b033867c03fd..207143e1ef58d 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/bulk_action.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/bulk_action.ts @@ -23,6 +23,9 @@ import { bulkActionBenchmarkRulesHandler } from './v1'; action: 'mute' | 'unmute'; // Specify the bulk action type (mute or unmute) rules: [ { + benchmark_id: string; // Identifier for the CSP benchmark + benchmark_version: string; // Version of the CSP benchmark + rule_number: string; // Rule number within the benchmark rule_id: string; // Unique identifier for the rule }, // ... (additional benchmark rules) diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/utils.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/utils.ts index 2f03af30c58b5..f026e75702c56 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/utils.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/utils.ts @@ -13,6 +13,7 @@ import type { FindResult, RulesClient } from '@kbn/alerting-plugin/server'; import type { RuleParams } from '@kbn/alerting-plugin/server/application/rule/types'; import type { CspBenchmarkRule, + RulesToUpdate, CspBenchmarkRulesStates, CspSettings, } from '../../../../common/types/rules/v3'; @@ -118,23 +119,22 @@ export const updateRulesStates = async ( export const setRulesStates = ( ruleIds: string[], state: boolean, - benchmarkRules: CspBenchmarkRule[] + rulesToUpdate: RulesToUpdate ): CspBenchmarkRulesStates => { const rulesStates: CspBenchmarkRulesStates = {}; ruleIds.forEach((ruleId, index) => { - const benchmarkRule = benchmarkRules[index]; + const benchmarkRule = rulesToUpdate[index]; rulesStates[ruleId] = { muted: state, - benchmark_id: benchmarkRule.metadata.benchmark.id, - benchmark_version: benchmarkRule.metadata.benchmark.version, - rule_number: benchmarkRule.metadata.benchmark.rule_number || '', - rule_id: benchmarkRule.metadata.id, + benchmark_id: benchmarkRule.benchmark_id, + benchmark_version: benchmarkRule.benchmark_version, + rule_number: benchmarkRule.rule_number, + rule_id: benchmarkRule.rule_id, }; }); return rulesStates; }; -export const buildRuleKey = (benchmarkRule: CspBenchmarkRule) => { - const ruleNumber = benchmarkRule.metadata.benchmark.rule_number; - return `${benchmarkRule.metadata.benchmark.id};${benchmarkRule.metadata.benchmark.version};${ruleNumber}`; +export const buildRuleKey = (benchmarkId: string, benchmarkVersion: string, ruleNumber: string) => { + return `${benchmarkId};${benchmarkVersion};${ruleNumber}`; }; diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/v1.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/v1.ts index 907b8cea3d73c..4a35afd6eb642 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/v1.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/v1.ts @@ -16,8 +16,7 @@ import { } from './utils'; import type { BulkActionBenchmarkRulesResponse, - CspBenchmarkRule, - CspBenchmarkRules, + RulesToUpdate, } from '../../../../common/types/rules/v3'; const muteStatesMap = { @@ -29,7 +28,7 @@ export const bulkActionBenchmarkRulesHandler = async ( soClient: SavedObjectsClientContract, encryptedSoClient: SavedObjectsClientContract, detectionRulesClient: RulesClient, - rulesToUpdate: CspBenchmarkRules, + rulesToUpdate: RulesToUpdate, action: 'mute' | 'unmute', logger: Logger ): Promise => { @@ -39,13 +38,12 @@ export const bulkActionBenchmarkRulesHandler = async ( if (benchmarkRules.includes(undefined)) throw new Error('At least one of the provided benchmark rule IDs does not exist'); - const rulesKeys = benchmarkRules.map((benchmarkRule) => buildRuleKey(benchmarkRule!)); - const newRulesStates = setRulesStates( - rulesKeys, - muteStatesMap[action], - benchmarkRules as CspBenchmarkRule[] + const rulesKeys = rulesToUpdate.map((rule) => + buildRuleKey(rule.benchmark_id, rule.benchmark_version, rule.rule_number) ); + const newRulesStates = setRulesStates(rulesKeys, muteStatesMap[action], rulesToUpdate); + const newCspSettings = await updateRulesStates(encryptedSoClient, newRulesStates); const disabledRulesCounter = action === 'mute' ? await muteDetectionRules(soClient, detectionRulesClient, rulesIds) : 0; diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts new file mode 100644 index 0000000000000..985be3cb48eeb --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { transformError } from '@kbn/securitysolution-es-utils'; +import { CspRouter } from '../../../types'; +import { CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH } from '../../../../common/constants'; +import { CspBenchmarkRulesStates } from '../../../../common/types/rules/v3'; +import { getCspBenchmarkRulesStatesHandler } from './v1'; + +export const defineGetCspBenchmarkRulesStatesRoute = (router: CspRouter) => + router.versioned + .get({ + access: 'internal', + path: CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH, + }) + .addVersion( + { + version: '1', + validate: {}, + }, + async (context, request, response) => { + if (!(await context.fleet).authz.fleet.all) { + return response.forbidden(); + } + const cspContext = await context.csp; + + try { + const encryptedSoClient = cspContext.encryptedSavedObjects; + + const rulesStates: CspBenchmarkRulesStates = await getCspBenchmarkRulesStatesHandler( + encryptedSoClient + ); + + return response.ok({ + body: rulesStates, + }); + } catch (err) { + const error = transformError(err); + + cspContext.logger.error(`Failed to fetch CSP benchmark rules state: ${error.message}`); + return response.customError({ + body: { message: error.message }, + statusCode: error.statusCode || 500, // Default to 500 if no specific status code is provided + }); + } + } + ); diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts new file mode 100644 index 0000000000000..5697841bb3526 --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; +import { transformError } from '@kbn/securitysolution-es-utils'; +import { CspBenchmarkRulesStates, CspSettings } from '../../../../common/types/rules/v3'; +import { + INTERNAL_CSP_SETTINGS_SAVED_OBJECT_ID, + INTERNAL_CSP_SETTINGS_SAVED_OBJECT_TYPE, +} from '../../../../common/constants'; + +export const createCspSettingObject = async (soClient: SavedObjectsClientContract) => { + return soClient.create( + INTERNAL_CSP_SETTINGS_SAVED_OBJECT_TYPE, + { + rules: {}, + }, + { id: INTERNAL_CSP_SETTINGS_SAVED_OBJECT_ID } + ); +}; + +export const getCspBenchmarkRulesStatesHandler = async ( + encryptedSoClient: SavedObjectsClientContract +): Promise => { + try { + const getSoResponse = await encryptedSoClient.get( + INTERNAL_CSP_SETTINGS_SAVED_OBJECT_TYPE, + INTERNAL_CSP_SETTINGS_SAVED_OBJECT_ID + ); + return getSoResponse.attributes.rules; + } catch (err) { + const error = transformError(err); + if (error.statusCode === 404) { + const newCspSettings = await createCspSettingObject(encryptedSoClient); + return newCspSettings.attributes.rules; + } + + throw new Error( + `An error occurred while trying to fetch csp settings: ${error.message}, ${error.statusCode}` + ); + } +}; diff --git a/x-pack/plugins/cloud_security_posture/server/routes/setup_routes.ts b/x-pack/plugins/cloud_security_posture/server/routes/setup_routes.ts index 88570781ed066..732017db1090f 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/setup_routes.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/setup_routes.ts @@ -21,6 +21,7 @@ import { defineGetCspStatusRoute } from './status/status'; import { defineFindCspBenchmarkRuleRoute } from './benchmark_rules/find/find'; import { defineGetDetectionEngineAlertsStatus } from './detection_engine/get_detection_engine_alerts_count_by_rule_tags'; import { defineBulkActionCspBenchmarkRulesRoute } from './benchmark_rules/bulk_action/bulk_action'; +import { defineGetCspBenchmarkRulesStatesRoute } from './benchmark_rules/get_states/get_states'; /** * 1. Registers routes @@ -43,6 +44,7 @@ export async function setupRoutes({ defineFindCspBenchmarkRuleRoute(router); defineGetDetectionEngineAlertsStatus(router); defineBulkActionCspBenchmarkRulesRoute(router); + defineGetCspBenchmarkRulesStatesRoute(router); core.http.registerRouteHandlerContext( PLUGIN_ID, diff --git a/x-pack/test/cloud_security_posture_api/config.ts b/x-pack/test/cloud_security_posture_api/config.ts index 625236022cd14..a1a0714a2d5a6 100644 --- a/x-pack/test/cloud_security_posture_api/config.ts +++ b/x-pack/test/cloud_security_posture_api/config.ts @@ -19,6 +19,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { require.resolve('./routes/vulnerabilities_dashboard.ts'), require.resolve('./routes/stats.ts'), require.resolve('./routes/csp_benchmark_rules_bulk_update.ts'), + require.resolve('./routes/csp_benchmark_rules_get_states.ts'), ], junit: { reportName: 'X-Pack Cloud Security Posture API Tests', diff --git a/x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts b/x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts index fd08e1cae3f3a..c2e597b2d4873 100644 --- a/x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts +++ b/x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts @@ -115,9 +115,15 @@ export default function ({ getService }: FtrProviderContext) { action: 'mute', rules: [ { + benchmark_id: rule1.metadata.benchmark.id, + benchmark_version: rule1.metadata.benchmark.version, + rule_number: rule1.metadata.benchmark.rule_number || '', rule_id: rule1.metadata.id, }, { + benchmark_id: rule2.metadata.benchmark.id, + benchmark_version: rule2.metadata.benchmark.version, + rule_number: rule2.metadata.benchmark.rule_number || '', rule_id: rule2.metadata.id, }, ], @@ -162,9 +168,15 @@ export default function ({ getService }: FtrProviderContext) { action: 'unmute', rules: [ { + benchmark_id: rule1.metadata.benchmark.id, + benchmark_version: rule1.metadata.benchmark.version, + rule_number: rule1.metadata.benchmark.rule_number || '', rule_id: rule1.metadata.id, }, { + benchmark_id: rule2.metadata.benchmark.id, + benchmark_version: rule2.metadata.benchmark.version, + rule_number: rule2.metadata.benchmark.rule_number || '', rule_id: rule2.metadata.id, }, ], @@ -210,9 +222,15 @@ export default function ({ getService }: FtrProviderContext) { action: 'unmute', rules: [ { + benchmark_id: rule1.metadata.benchmark.id, + benchmark_version: rule1.metadata.benchmark.version, + rule_number: rule1.metadata.benchmark.rule_number || '', rule_id: rule1.metadata.id, }, { + benchmark_id: rule2.metadata.benchmark.id, + benchmark_version: rule2.metadata.benchmark.version, + rule_number: rule2.metadata.benchmark.rule_number || '', rule_id: rule2.metadata.id, }, ], @@ -252,9 +270,15 @@ export default function ({ getService }: FtrProviderContext) { action: 'mute', rules: [ { + benchmark_id: rule1.metadata.benchmark.id, + benchmark_version: rule1.metadata.benchmark.version, + rule_number: rule1.metadata.benchmark.rule_number || '', rule_id: rule1.metadata.id, }, { + benchmark_id: rule3.metadata.benchmark.id, + benchmark_version: rule3.metadata.benchmark.version, + rule_number: rule3.metadata.benchmark.rule_number || '', rule_id: rule3.metadata.id, }, ], @@ -299,6 +323,9 @@ export default function ({ getService }: FtrProviderContext) { action: 'mute', rules: [ { + benchmark_id: rule1.metadata.benchmark.id, + benchmark_version: rule1.metadata.benchmark.version, + rule_number: rule1.metadata.benchmark.rule_number || '', rule_id: rule1.metadata.id, }, ], @@ -323,9 +350,15 @@ export default function ({ getService }: FtrProviderContext) { action: 'mute', rules: [ { + benchmark_id: rule1.metadata.benchmark.id, + benchmark_version: rule1.metadata.benchmark.version, + rule_number: rule1.metadata.benchmark.rule_number || '', rule_id: rule1.metadata.id, }, { + benchmark_id: rule2.metadata.benchmark.id, + benchmark_version: rule2.metadata.benchmark.version, + rule_number: rule2.metadata.benchmark.rule_number || '', rule_id: rule2.metadata.id, }, ], @@ -347,6 +380,9 @@ export default function ({ getService }: FtrProviderContext) { action: 'foo', rules: [ { + benchmark_id: rule1.metadata.benchmark.id, + benchmark_version: rule1.metadata.benchmark.version, + rule_number: rule1.metadata.benchmark.rule_number || '', rule_id: rule1.metadata.id, }, ], diff --git a/x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_get_states.ts b/x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_get_states.ts new file mode 100644 index 0000000000000..737013950d611 --- /dev/null +++ b/x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_get_states.ts @@ -0,0 +1,164 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { expect as expectExpect } from 'expect'; + +import { + ELASTIC_HTTP_VERSION_HEADER, + X_ELASTIC_INTERNAL_ORIGIN_REQUEST, +} from '@kbn/core-http-common'; +import { CSP_BENCHMARK_RULE_SAVED_OBJECT_TYPE } from '@kbn/cloud-security-posture-plugin/common/constants'; +import type { CspBenchmarkRule } from '@kbn/cloud-security-posture-plugin/common/types/latest'; +import type { FtrProviderContext } from '../ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default function ({ getService }: FtrProviderContext) { + const retry = getService('retry'); + const supertest = getService('supertest'); + const log = getService('log'); + const kibanaServer = getService('kibanaServer'); + + const generateRuleKey = (rule: CspBenchmarkRule): string => { + return `${rule.metadata.benchmark.id};${rule.metadata.benchmark.version};${rule.metadata.benchmark.rule_number}`; + }; + + const getRandomCspBenchmarkRule = async () => { + const cspBenchmarkRules = await kibanaServer.savedObjects.find({ + type: CSP_BENCHMARK_RULE_SAVED_OBJECT_TYPE, + }); + + expect(cspBenchmarkRules.saved_objects.length).greaterThan(0); + + const randomIndex = Math.floor(Math.random() * cspBenchmarkRules.saved_objects.length); + return cspBenchmarkRules.saved_objects[randomIndex].attributes; + }; + + /** + * required before indexing findings + */ + const waitForPluginInitialized = (): Promise => + retry.try(async () => { + log.debug('Check CSP plugin is initialized'); + const response = await supertest + .get('/internal/cloud_security_posture/status?check=init') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .expect(200); + expect(response.body).to.eql({ isPluginInitialized: true }); + log.debug('CSP plugin is initialized'); + }); + + describe('Tests get rules states API', async () => { + before(async () => { + await waitForPluginInitialized(); + }); + + beforeEach(async () => { + await kibanaServer.savedObjects.clean({ + types: ['cloud-security-posture-settings'], + }); + }); + + it('get rules states successfully', async () => { + const rule1 = await getRandomCspBenchmarkRule(); + const rule2 = await getRandomCspBenchmarkRule(); + const rule3 = await getRandomCspBenchmarkRule(); + + await supertest + .post(`/internal/cloud_security_posture/rules/_bulk_action`) + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .set('kbn-xsrf', 'xxxx') + .send({ + action: 'mute', + rules: [ + { + benchmark_id: rule1.metadata.benchmark.id, + benchmark_version: rule1.metadata.benchmark.version, + rule_number: rule1.metadata.benchmark.rule_number || '', + rule_id: rule1.metadata.id, + }, + { + benchmark_id: rule2.metadata.benchmark.id, + benchmark_version: rule2.metadata.benchmark.version, + rule_number: rule2.metadata.benchmark.rule_number || '', + rule_id: rule2.metadata.id, + }, + ], + }) + .expect(200); + + await supertest + .post(`/internal/cloud_security_posture/rules/_bulk_action`) + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .set('kbn-xsrf', 'xxxx') + .send({ + action: 'unmute', + rules: [ + { + benchmark_id: rule3.metadata.benchmark.id, + benchmark_version: rule3.metadata.benchmark.version, + rule_number: rule3.metadata.benchmark.rule_number || '', + rule_id: rule3.metadata.id, + }, + ], + }) + .expect(200); + + const { body } = await supertest + .get(`/internal/cloud_security_posture/rules/_get_states`) + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .set('kbn-xsrf', 'xxxx') + .expect(200); + + expectExpect(body).toEqual( + expectExpect.objectContaining({ + [generateRuleKey(rule1)]: { + muted: true, + benchmark_id: rule1.metadata.benchmark.id, + benchmark_version: rule1.metadata.benchmark.version, + rule_number: rule1.metadata.benchmark.rule_number + ? rule1.metadata.benchmark.rule_number + : '', + rule_id: rule1.metadata.id, + }, + [generateRuleKey(rule2)]: { + muted: true, + benchmark_id: rule2.metadata.benchmark.id, + benchmark_version: rule2.metadata.benchmark.version, + rule_number: rule2.metadata.benchmark.rule_number + ? rule2.metadata.benchmark.rule_number + : '', + rule_id: rule2.metadata.id, + }, + [generateRuleKey(rule3)]: { + muted: false, + benchmark_id: rule3.metadata.benchmark.id, + benchmark_version: rule3.metadata.benchmark.version, + rule_number: rule3.metadata.benchmark.rule_number + ? rule3.metadata.benchmark.rule_number + : '', + rule_id: rule3.metadata.id, + }, + }) + ); + }); + + it('get empty object when rules states not exists', async () => { + const { body } = await supertest + .get(`/internal/cloud_security_posture/rules/_get_states`) + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .set('kbn-xsrf', 'xxxx') + .expect(200); + + expectExpect(body).toEqual({}); + }); + }); +} From b93868ec3886b2acb3af18735a1602730dcd3811 Mon Sep 17 00:00:00 2001 From: Jonathan Budzenski Date: Thu, 28 Dec 2023 07:54:16 -0600 Subject: [PATCH 006/323] skip failing test suite (#174020) --- .buildkite/ftr_configs.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.buildkite/ftr_configs.yml b/.buildkite/ftr_configs.yml index 62ca848819d1c..cd0c62dd4c5e6 100644 --- a/.buildkite/ftr_configs.yml +++ b/.buildkite/ftr_configs.yml @@ -91,6 +91,9 @@ disabled: - x-pack/test_serverless/api_integration/test_suites/security/config.feature_flags.ts - x-pack/test_serverless/functional/test_suites/security/config.feature_flags.ts + # Failing: See https://github.com/elastic/kibana/issues/174020 + - x-pack/test/api_integration/apis/asset_manager/config_when_enabled.ts + defaultQueue: 'n2-4-spot' enabled: - test/accessibility/config.ts @@ -185,7 +188,6 @@ enabled: - x-pack/test/api_integration/config_security_trial.ts - x-pack/test/api_integration/apis/aiops/config.ts - x-pack/test/api_integration/apis/asset_manager/config_when_disabled.ts - - x-pack/test/api_integration/apis/asset_manager/config_when_enabled.ts - x-pack/test/api_integration/apis/cases/config.ts - x-pack/test/api_integration/apis/cloud_security_posture/config.ts - x-pack/test/api_integration/apis/console/config.ts From 0d86b40e2dd0b4f70dd344c8078125c515165dd9 Mon Sep 17 00:00:00 2001 From: Jordan <51442161+JordanSh@users.noreply.github.com> Date: Thu, 28 Dec 2023 16:50:45 +0200 Subject: [PATCH 007/323] [Cloud Security] Hide temporarily unsupported option from azure manual options (#173988) --- .../get_azure_credentials_form_options.tsx | 20 +++++++++------- .../policy_template_form.test.tsx | 24 +++++++++++++++++-- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/get_azure_credentials_form_options.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/get_azure_credentials_form_options.tsx index d6044118f1afd..c4135ecaf2eb7 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/get_azure_credentials_form_options.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/azure_credentials_form/get_azure_credentials_form_options.tsx @@ -26,15 +26,17 @@ export const getAzureCredentialsFormManualOptions = (): Array<{ value: AzureCredentialsType; text: string; }> => { - return ( - Object.entries(getAzureCredentialsFormOptions()) - .map(([key, value]) => ({ - value: key as AzureCredentialsType, - text: value.label, - })) - // TODO: remove 'manual' for stack version 8.13 - .filter(({ value }) => value !== 'arm_template' && value !== 'manual') - ); + return Object.entries(getAzureCredentialsFormOptions()) + .map(([key, value]) => ({ + value: key as AzureCredentialsType, + text: value.label, + })) + .filter( + ({ value }) => + value !== 'arm_template' && // we remove this in order to hide it from the selectable options in the manual drop down + value !== 'manual' && // TODO: remove 'manual' for stack version 8.13 + value !== 'service_principal_with_client_username_and_password' // this option is temporarily hidden + ); }; export const getInputVarsFields = (input: NewPackagePolicyInput, fields: AzureCredentialsFields) => diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx index 3b549dcc9d9ed..c7413bdac83ba 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx @@ -1644,7 +1644,26 @@ describe('', () => { }); }); - it(`renders Service principal with Client Username and Password fields`, () => { + it(`should not render Service principal with Client Username and Password option`, () => { + let policy = getMockPolicyAzure(); + policy = getPosturePolicy(policy, CLOUDBEAT_AZURE, { + 'azure.credentials.type': { value: 'managed_identity' }, + }); + + const { queryByRole } = render( + + ); + + expect( + queryByRole('option', { + name: 'Service principal with Client Username and Password', + selected: false, + }) + ).not.toBeInTheDocument(); + }); + + // TODO: remove when service_principal_with_client_username_and_password is removed from the code base + it.skip(`renders Service principal with Client Username and Password fields`, () => { let policy = getMockPolicyAzure(); policy = getPosturePolicy(policy, CLOUDBEAT_AZURE, { 'azure.credentials.type': { value: 'service_principal_with_client_username_and_password' }, @@ -1666,7 +1685,8 @@ describe('', () => { expect(getByLabelText('Client Password')).toBeInTheDocument(); }); - it(`updates Service principal with Client Username and Password fields`, () => { + // TODO: remove when service_principal_with_client_username_and_password is removed from the code base + it.skip(`updates Service principal with Client Username and Password fields`, () => { let policy = getMockPolicyAzure(); policy = getPosturePolicy(policy, CLOUDBEAT_AZURE, { 'azure.credentials.type': { value: 'service_principal_with_client_username_and_password' }, From bf8f7216e738bf4393c683e7d039600dce673fc8 Mon Sep 17 00:00:00 2001 From: Gloria Hornero Date: Thu, 28 Dec 2023 16:05:06 +0100 Subject: [PATCH 008/323] [Security Solution] Updating investigations dependencies (#174013) ## Summary After a conversation with @michaelolo24 we found out that: - We were missing a dependency for the investigations team - Not all the dependencies added in https://github.com/elastic/kibana/pull/173815 apply to the investigations team In this PR we are adding a new conditional for the investigations team execution with the aim of having more granularity and more accurate dependencies. --------- Co-authored-by: Jon --- .../pipelines/pull_request/pipeline.ts | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/.buildkite/scripts/pipelines/pull_request/pipeline.ts b/.buildkite/scripts/pipelines/pull_request/pipeline.ts index f9eab6138834c..ca0a83616492e 100644 --- a/.buildkite/scripts/pipelines/pull_request/pipeline.ts +++ b/.buildkite/scripts/pipelines/pull_request/pipeline.ts @@ -233,10 +233,35 @@ const uploadPipeline = (pipelineContent: string | object) => { ); pipeline.push(getPipeline('.buildkite/pipelines/pull_request/security_solution/explore.yml')); pipeline.push( - getPipeline('.buildkite/pipelines/pull_request/security_solution/investigations.yml') + getPipeline('.buildkite/pipelines/pull_request/security_solution/rule_management.yml') ); + } + + if ( + (await doAnyChangesMatch([ + /^package.json/, + /^packages\/kbn-securitysolution-.*/, + /^x-pack\/plugins\/alerting/, + /^x-pack\/plugins\/data_views\/common/, + /^x-pack\/plugins\/lists/, + /^x-pack\/plugins\/rule_registry\/common/, + /^x-pack\/plugins\/security_solution/, + /^x-pack\/plugins\/security_solution_ess/, + /^x-pack\/plugins\/security_solution_serverless/, + /^x-pack\/plugins\/task_manager/, + /^x-pack\/plugins\/timelines/, + /^x-pack\/plugins\/triggers_actions_ui\/public\/application\/sections\/alerts_table/, + /^x-pack\/plugins\/usage_collection\/public/, + /^x-pack\/plugins\/elastic_assistant/, + /^x-pack\/packages\/security-solution/, + /^x-pack\/packages\/kbn-elastic-assistant/, + /^x-pack\/packages\/kbn-elastic-assistant-common/, + /^x-pack\/test\/security_solution_cypress/, + ])) || + GITHUB_PR_LABELS.includes('ci:all-cypress-suites') + ) { pipeline.push( - getPipeline('.buildkite/pipelines/pull_request/security_solution/rule_management.yml') + getPipeline('.buildkite/pipelines/pull_request/security_solution/investigations.yml') ); } From 5359ebe9c8838bd5b3fb347d1dbd556fcd88d566 Mon Sep 17 00:00:00 2001 From: Dario Gieselaar Date: Thu, 28 Dec 2023 16:13:24 +0100 Subject: [PATCH 009/323] [Obs AI Assistant] Use Mocha & Synthtrace (#173993) Two changes here: 1. Use Mocha instead of custom test runner. This allows us to use Mocha's much more extensive API to run the tests: skipping tests, before and after hooks, grep etc. 2. Make Synthtrace available for running tests. One note: - I've added a rule to automatically inject a type reference for Mocha, via `@kbn/ambient-ftr-types`. The reason is Mocha is not typed by default (ie, the types are not available in the global space), because it conflicts with Jest. The rule enforces that `@kbn/ambient-ftr-types` is imported so things like `before()` can be used. --- packages/kbn-eslint-plugin-imports/README.mdx | 4 + packages/kbn-eslint-plugin-imports/index.ts | 2 + .../src/rules/require_import.test.ts | 89 ++++++ .../src/rules/require_import.ts | 105 ++++++ .../observability_ai_assistant/jest.config.js | 7 +- .../scripts/evaluation/.eslintrc.json | 21 ++ .../scripts/evaluation/evaluation.ts | 111 ++++--- .../scripts/evaluation/get_service_urls.ts | 2 +- .../scripts/evaluation/kibana_client.ts | 47 ++- .../scenarios/elasticsearch/index.spec.ts | 26 ++ .../scenarios/elasticsearch/index.ts | 21 -- .../evaluation/scenarios/esql/index.spec.ts | 298 ++++++++++++++++++ .../evaluation/scenarios/esql/index.ts | 173 ---------- .../scripts/evaluation/services/index.ts | 43 +++ .../scripts/evaluation/setup_synthtrace.ts | 90 ++++++ .../scripts/evaluation/types.ts | 3 + .../observability_ai_assistant/tsconfig.json | 5 +- 17 files changed, 789 insertions(+), 258 deletions(-) create mode 100644 packages/kbn-eslint-plugin-imports/src/rules/require_import.test.ts create mode 100644 packages/kbn-eslint-plugin-imports/src/rules/require_import.ts create mode 100644 x-pack/plugins/observability_ai_assistant/scripts/evaluation/.eslintrc.json create mode 100644 x-pack/plugins/observability_ai_assistant/scripts/evaluation/scenarios/elasticsearch/index.spec.ts delete mode 100644 x-pack/plugins/observability_ai_assistant/scripts/evaluation/scenarios/elasticsearch/index.ts create mode 100644 x-pack/plugins/observability_ai_assistant/scripts/evaluation/scenarios/esql/index.spec.ts delete mode 100644 x-pack/plugins/observability_ai_assistant/scripts/evaluation/scenarios/esql/index.ts create mode 100644 x-pack/plugins/observability_ai_assistant/scripts/evaluation/services/index.ts create mode 100644 x-pack/plugins/observability_ai_assistant/scripts/evaluation/setup_synthtrace.ts diff --git a/packages/kbn-eslint-plugin-imports/README.mdx b/packages/kbn-eslint-plugin-imports/README.mdx index 1d6971d30e97f..b8eb60e98c3ed 100644 --- a/packages/kbn-eslint-plugin-imports/README.mdx +++ b/packages/kbn-eslint-plugin-imports/README.mdx @@ -39,6 +39,10 @@ This rule validates that every import request in the repsitory follows a standar This rule is not configurable, should never be skipped, and is auto-fixable. +## `@kbn/imports/require_import` + +This rule validates that specific imports are present in a file. This allows you to e.g. require Mocha globals in test files automatically. Currently the only supported import type is a TypeScript reference type. This rule is auto-fixable. + ## `@kbn/imports/exports_moved_packages` This rule assists package authors who are doing the good work of breaking up large packages. The goal is to define exports which used to be part of one package as having moved to another package. The configuration maintains this mapping and is designed to be extended in the future is additional needs arrise like targetting specific package types. diff --git a/packages/kbn-eslint-plugin-imports/index.ts b/packages/kbn-eslint-plugin-imports/index.ts index 2db05a0d59baa..5ff083ce4a1e0 100644 --- a/packages/kbn-eslint-plugin-imports/index.ts +++ b/packages/kbn-eslint-plugin-imports/index.ts @@ -12,6 +12,7 @@ import { UniformImportsRule } from './src/rules/uniform_imports'; import { ExportsMovedPackagesRule } from './src/rules/exports_moved_packages'; import { NoUnusedImportsRule } from './src/rules/no_unused_imports'; import { NoBoundaryCrossingRule } from './src/rules/no_boundary_crossing'; +import { RequireImportRule } from './src/rules/require_import'; /** * Custom ESLint rules, add `'@kbn/eslint-plugin-imports'` to your eslint config to use them @@ -23,4 +24,5 @@ export const rules = { exports_moved_packages: ExportsMovedPackagesRule, no_unused_imports: NoUnusedImportsRule, no_boundary_crossing: NoBoundaryCrossingRule, + require_import: RequireImportRule, }; diff --git a/packages/kbn-eslint-plugin-imports/src/rules/require_import.test.ts b/packages/kbn-eslint-plugin-imports/src/rules/require_import.test.ts new file mode 100644 index 0000000000000..ad2ca020f3d28 --- /dev/null +++ b/packages/kbn-eslint-plugin-imports/src/rules/require_import.test.ts @@ -0,0 +1,89 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { RuleTester } from 'eslint'; +import { RequireImportRule } from './require_import'; +import dedent from 'dedent'; + +const fmt = (str: TemplateStringsArray) => dedent(str) + '\n'; + +const tsTester = [ + '@typescript-eslint/parser', + new RuleTester({ + parser: require.resolve('@typescript-eslint/parser'), + parserOptions: { + sourceType: 'module', + ecmaVersion: 2018, + ecmaFeatures: { + jsx: true, + }, + }, + }), +] as const; + +const babelTester = [ + '@babel/eslint-parser', + new RuleTester({ + parser: require.resolve('@babel/eslint-parser'), + parserOptions: { + sourceType: 'module', + ecmaVersion: 2018, + requireConfigFile: false, + babelOptions: { + presets: ['@kbn/babel-preset/node_preset'], + }, + }, + }), +] as const; + +for (const [name, tester] of [tsTester, babelTester]) { + describe(name, () => { + tester.run('@kbn/imports/require_import', RequireImportRule, { + valid: [ + { + options: ['mocha'], + filename: 'foo.ts', + code: fmt` + import 'mocha'; + + /// + + describe(( ) => { + before(( ) => { + }); + }); + `, + }, + ], + invalid: [ + { + options: ['mocha'], + filename: 'foo.ts', + code: fmt` + describe(( ) => { + before(( ) => { + }); + }); + `, + output: fmt`/// + + describe(( ) => { + before(( ) => { + }); + });`, + errors: [ + { + line: 1, + message: `Required module 'mocha' is not imported as a type reference`, + }, + ], + }, + ], + }); + }); +} diff --git a/packages/kbn-eslint-plugin-imports/src/rules/require_import.ts b/packages/kbn-eslint-plugin-imports/src/rules/require_import.ts new file mode 100644 index 0000000000000..f766735ab7e66 --- /dev/null +++ b/packages/kbn-eslint-plugin-imports/src/rules/require_import.ts @@ -0,0 +1,105 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { Rule } from 'eslint'; +import { load } from 'cheerio'; + +type StringModuleConfig = string; + +interface ObjectModuleConfig { + module: string; + as: ReferenceModuleAs; +} + +type ModuleConfig = StringModuleConfig | ObjectModuleConfig; + +enum ReferenceModuleAs { + typeReference = 'typeReference', +} + +export const RequireImportRule: Rule.RuleModule = { + meta: { + type: 'problem', + fixable: 'code', + docs: { + url: 'https://github.com/elastic/kibana/blob/main/packages/kbn-eslint-plugin-imports/README.mdx#kbnimportsrequire_import', + }, + schema: { + type: 'array', + items: { + oneOf: [ + { + type: 'string', + }, + { + type: 'object', + additionalProperties: false, + additionalItems: false, + properties: { + module: { + type: 'string', + }, + as: { + type: 'string', + }, + }, + required: ['module', 'type'], + }, + ], + }, + }, + }, + + create(context) { + const requiredImports: ModuleConfig[] = context.options; + + const mappedOptions: ObjectModuleConfig[] = requiredImports.map((config) => { + if (typeof config === 'string') { + return { + module: config, + as: ReferenceModuleAs.typeReference, + }; + } + return config; + }); + + return { + 'Program:exit': (node) => { + mappedOptions.forEach((option) => { + switch (option.as) { + case ReferenceModuleAs.typeReference: + const hasImport = node.comments?.some((comment) => { + const nodeText = comment.value.match(/\/\s*(<.*>)/)?.[1]; + if (nodeText) { + const parsedNode = load(nodeText, { xml: true })()._root?.children()[0]; + return ( + parsedNode && + parsedNode.name === 'reference' && + parsedNode.attribs.types === option.module + ); + } + }); + + if (!hasImport) { + context.report({ + node, + message: `Required module '${option.module}' is not imported as a type reference`, + fix(fixer) { + return fixer.insertTextBefore( + node.body[0], + `/// \n\n` + ); + }, + }); + } + } + }); + }, + }; + }, +}; diff --git a/x-pack/plugins/observability_ai_assistant/jest.config.js b/x-pack/plugins/observability_ai_assistant/jest.config.js index ff54dbc08c2b0..61cc1b353b1cf 100644 --- a/x-pack/plugins/observability_ai_assistant/jest.config.js +++ b/x-pack/plugins/observability_ai_assistant/jest.config.js @@ -8,11 +8,16 @@ module.exports = { preset: '@kbn/test', rootDir: '../../..', - roots: ['/x-pack/plugins/observability_ai_assistant'], + roots: [ + '/x-pack/plugins/observability_ai_assistant/public', + '/x-pack/plugins/observability_ai_assistant/common', + '/x-pack/plugins/observability_ai_assistant/server', + ], setupFiles: ['/x-pack/plugins/observability_ai_assistant/.storybook/jest_setup.js'], collectCoverage: true, collectCoverageFrom: [ '/x-pack/plugins/observability_ai_assistant/{common,public,server}/**/*.{js,ts,tsx}', ], + coverageReporters: ['html'], }; diff --git a/x-pack/plugins/observability_ai_assistant/scripts/evaluation/.eslintrc.json b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/.eslintrc.json new file mode 100644 index 0000000000000..c803815e57692 --- /dev/null +++ b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/.eslintrc.json @@ -0,0 +1,21 @@ +{ + "overrides": [ + { + "files": [ + "**/*.spec.ts" + ], + "rules": { + "@kbn/imports/require_import": [ + "error", + "@kbn/ambient-ftr-types" + ], + "@typescript-eslint/triple-slash-reference": [ + "off" + ], + "spaced-comment": [ + "off" + ] + } + } + ] +} diff --git a/x-pack/plugins/observability_ai_assistant/scripts/evaluation/evaluation.ts b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/evaluation.ts index 5c51653036645..c39087249285c 100644 --- a/x-pack/plugins/observability_ai_assistant/scripts/evaluation/evaluation.ts +++ b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/evaluation.ts @@ -5,22 +5,25 @@ * 2.0. */ -import yargs from 'yargs'; -import { run } from '@kbn/dev-cli-runner'; import { Client } from '@elastic/elasticsearch'; -import inquirer from 'inquirer'; +import { run } from '@kbn/dev-cli-runner'; import * as fastGlob from 'fast-glob'; -import Path from 'path'; +import inquirer from 'inquirer'; +import yargs from 'yargs'; import chalk from 'chalk'; +import { castArray, omit } from 'lodash'; +// @ts-expect-error +import Mocha from 'mocha'; +import Path from 'path'; import * as table from 'table'; -import { castArray, omit, sortBy } from 'lodash'; import { TableUserConfig } from 'table'; import { format, parse } from 'url'; +import { MessageRole } from '../../common'; import { options } from './cli'; import { getServiceUrls } from './get_service_urls'; import { KibanaClient } from './kibana_client'; -import { EvaluationFunction } from './types'; -import { MessageRole } from '../../common'; +import { initServices } from './services'; +import { setupSynthtrace } from './setup_synthtrace'; function runEvaluations() { yargs(process.argv.slice(2)) @@ -69,43 +72,24 @@ function runEvaluations() { const scenarios = (argv.files !== undefined && castArray(argv.files).map((file) => Path.join(process.cwd(), file))) || - fastGlob.sync(Path.join(__dirname, './scenarios/**/*.ts')); + fastGlob.sync(Path.join(__dirname, './scenarios/**/*.spec.ts')); if (!scenarios.length) { throw new Error('No scenarios to run'); } - if (argv.clear) { - log.info('Clearing conversations'); - await esClient.deleteByQuery({ - index: '.kibana-observability-ai-assistant-conversations', - query: { - ...(argv.spaceId ? { term: { namespace: argv.spaceId } } : { match_all: {} }), - }, - refresh: true, - }); - } + log.info('Setting up Synthtrace clients'); - let evaluationFunctions: Array<{ - name: string; - fileName: string; - fn: EvaluationFunction; - }> = []; - - for (const fileName of scenarios) { - log.info(`Running scenario ${fileName}`); - const mod = await import(fileName); - Object.keys(mod).forEach((key) => { - evaluationFunctions.push({ name: key, fileName, fn: mod[key] }); - }); - } + const synthtraceEsClients = await setupSynthtrace({ + target: serviceUrls.kibanaUrl, + client: esClient, + log, + }); - if (argv.grep) { - const lc = argv.grep.toLowerCase(); - evaluationFunctions = evaluationFunctions.filter((fn) => - fn.name.toLowerCase().includes(lc) - ); - } + const chatClient = kibanaClient.createChatClient({ + connectorId: connector.id!, + persist: argv.persist, + }); const header: string[][] = [ [chalk.bold('Criterion'), chalk.bold('Result'), chalk.bold('Reasoning')], @@ -144,19 +128,7 @@ function runEvaluations() { ], }; - const sortedEvaluationFunctions = sortBy(evaluationFunctions, 'fileName', 'name'); - - for (const { name, fn } of sortedEvaluationFunctions) { - log.debug(`Executing ${name}`); - const result = await fn({ - esClient, - kibanaClient, - chatClient: kibanaClient.createChatClient({ - connectorId: connector.id!, - persist: argv.persist, - title: argv.autoTitle ? undefined : name, - }), - }); + chatClient.onResult((result) => { log.debug(`Result:`, JSON.stringify(result)); const output: string[][] = [ [ @@ -184,7 +156,46 @@ function runEvaluations() { ]); }); log.write(table.table(output, tableConfig)); + }); + + initServices({ + kibanaClient, + esClient, + chatClient, + synthtraceEsClients, + }); + + const mocha = new Mocha({ + grep: argv.grep, + timeout: '5m', + }); + + mocha.suite.beforeAll(async () => { + if (argv.clear) { + log.info('Clearing conversations'); + await esClient.deleteByQuery({ + index: '.kibana-observability-ai-assistant-conversations', + query: { + ...(argv.spaceId ? { term: { namespace: argv.spaceId } } : { match_all: {} }), + }, + refresh: true, + }); + } + }); + + for (const filename of scenarios) { + mocha.addFile(filename); } + + return new Promise((resolve, reject) => { + mocha.run((failures: any) => { + if (failures) { + reject(new Error(`Some tests failed`)); + return; + } + resolve(); + }); + }); }, { log: { diff --git a/x-pack/plugins/observability_ai_assistant/scripts/evaluation/get_service_urls.ts b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/get_service_urls.ts index d554e6c70a2fc..ce909c7a97394 100644 --- a/x-pack/plugins/observability_ai_assistant/scripts/evaluation/get_service_urls.ts +++ b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/get_service_urls.ts @@ -140,7 +140,7 @@ export async function getServiceUrls({ const kibanaUrlWithAuth = format({ ...parsedKibanaUrl, - auth, + auth: parsedKibanaUrl.auth || auth, }); const validatedKibanaUrl = await getKibanaUrl({ kibana: kibanaUrlWithAuth, log }); diff --git a/x-pack/plugins/observability_ai_assistant/scripts/evaluation/kibana_client.ts b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/kibana_client.ts index 7c447931f30de..585dec254db24 100644 --- a/x-pack/plugins/observability_ai_assistant/scripts/evaluation/kibana_client.ts +++ b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/kibana_client.ts @@ -6,7 +6,7 @@ */ import axios, { AxiosInstance, AxiosResponse } from 'axios'; -import { pick } from 'lodash'; +import { pick, remove } from 'lodash'; import { filter, lastValueFrom, map, tap, toArray } from 'rxjs'; import { format, parse, UrlObject } from 'url'; import { Message, MessageRole } from '../../common'; @@ -29,7 +29,7 @@ import { EvaluationResult } from './types'; type InnerMessage = Message['message']; type StringOrMessageList = string | InnerMessage[]; -interface ChatClient { +export interface ChatClient { chat: (message: StringOrMessageList) => Promise; complete: ( ...args: [StringOrMessageList] | [string, InnerMessage[]] @@ -39,6 +39,8 @@ interface ChatClient { {}: { conversationId?: string; messages: InnerMessage[] }, criteria: string[] ) => Promise; + getResults: () => EvaluationResult[]; + onResult: (cb: (result: EvaluationResult) => void) => () => void; } export class KibanaClient { @@ -72,11 +74,9 @@ export class KibanaClient { createChatClient({ connectorId, persist, - title, }: { connectorId: string; persist: boolean; - title?: string; }): ChatClient { function getMessages(message: string | Array): Array { if (typeof message === 'string') { @@ -103,6 +103,11 @@ export class KibanaClient { return { functionDefinitions, contextDefinitions }; } + const onResultCallbacks: Array<{ + callback: (result: EvaluationResult) => void; + unregister: () => void; + }> = []; + async function chat({ messages, functions, @@ -137,6 +142,8 @@ export class KibanaClient { return receivedMessage.message; } + const results: EvaluationResult[] = []; + return { chat: async (message) => { const { functionDefinitions, contextDefinitions } = await getFunctions(); @@ -172,7 +179,6 @@ export class KibanaClient { messages, connectorId, persist, - title, }, { responseType: 'stream' } ) @@ -287,14 +293,17 @@ export class KibanaClient { functionCall: 'scores', }); - return { + const scoredCriteria = ( + JSON.parse(message.function_call.arguments) as { + criteria: Array<{ index: number; score: number; reasoning: string }>; + } + ).criteria; + + const result: EvaluationResult = { conversationId, messages, - scores: ( - JSON.parse(message.function_call.arguments) as { - criteria: Array<{ index: number; score: number; reasoning: string }>; - } - ).criteria.map(({ index, score, reasoning }) => { + passed: scoredCriteria.every(({ score }) => score >= 1), + scores: scoredCriteria.map(({ index, score, reasoning }) => { return { criterion: criteria[index], score, @@ -302,6 +311,22 @@ export class KibanaClient { }; }), }; + + results.push(result); + + onResultCallbacks.forEach(({ callback }) => { + callback(result); + }); + + return result; + }, + getResults: () => results, + onResult: (callback) => { + const unregister = () => { + remove(onResultCallbacks, { callback }); + }; + onResultCallbacks.push({ callback, unregister }); + return unregister; }, }; } diff --git a/x-pack/plugins/observability_ai_assistant/scripts/evaluation/scenarios/elasticsearch/index.spec.ts b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/scenarios/elasticsearch/index.spec.ts new file mode 100644 index 0000000000000..6f7ff7e333215 --- /dev/null +++ b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/scenarios/elasticsearch/index.spec.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/// + +import expect from '@kbn/expect'; +import { chatClient } from '../../services'; + +describe('health', () => { + it('returns the cluster health state', async () => { + const conversation = await chatClient.complete( + 'Can you tell me what the state of my Elasticsearch cluster is?' + ); + + const result = await chatClient.evaluate(conversation, [ + 'Calls the Elasticsearch function with method: GET and path: _cluster/health', + 'Describes the cluster status based on the response from the Elasticsearch function', + ]); + + expect(result.passed).to.be(true); + }); +}); diff --git a/x-pack/plugins/observability_ai_assistant/scripts/evaluation/scenarios/elasticsearch/index.ts b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/scenarios/elasticsearch/index.ts deleted file mode 100644 index 1f73f9a9a625d..0000000000000 --- a/x-pack/plugins/observability_ai_assistant/scripts/evaluation/scenarios/elasticsearch/index.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 { EvaluationFunction } from '../../types'; - -export const health: EvaluationFunction = async ({ chatClient }) => { - const conversation = await chatClient.complete( - 'Can you tell me what the state of my Elasticsearch cluster is?' - ); - - const evaluation = await chatClient.evaluate(conversation, [ - 'Calls the Elasticsearch function with method: GET and path: _cluster/health', - 'Describes the cluster status based on the response from the Elasticsearch function', - ]); - - return evaluation; -}; diff --git a/x-pack/plugins/observability_ai_assistant/scripts/evaluation/scenarios/esql/index.spec.ts b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/scenarios/esql/index.spec.ts new file mode 100644 index 0000000000000..8acc2c98aa504 --- /dev/null +++ b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/scenarios/esql/index.spec.ts @@ -0,0 +1,298 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/// + +import { last } from 'lodash'; +import moment from 'moment'; +import { apm, timerange } from '@kbn/apm-synthtrace-client'; +import expect from '@kbn/expect'; +import { MessageRole } from '../../../../common'; +import { chatClient, esClient, synthtraceEsClients } from '../../services'; + +function extractEsqlQuery(response: string) { + return response.match(/```esql([\s\S]*?)```/)?.[1]; +} + +async function evaluateEsqlQuery({ + question, + expected, + criteria = [], + execute = true, +}: { + question: string; + expected?: string; + criteria?: string[]; + execute?: boolean; +}): Promise { + let conversation = await chatClient.complete(question); + + const esqlQuery = extractEsqlQuery(last(conversation.messages)?.content || ''); + + if (esqlQuery && execute) { + conversation = await chatClient.complete( + conversation.conversationId!, + conversation.messages.concat({ + content: '', + role: MessageRole.Assistant, + function_call: { + name: 'execute_query', + arguments: JSON.stringify({ + query: esqlQuery, + }), + trigger: MessageRole.User, + }, + }) + ); + } + + const evaluation = await chatClient.evaluate(conversation, [ + ...(expected + ? [ + `Returns a ES|QL query that is functionally equivalent to: + ${expected}`, + ] + : []), + ...(execute && expected ? [`The query successfully executed without an error`] : []), + ...criteria, + ]); + + expect(evaluation.passed).to.be(true); + + return; +} + +describe('ES|QL query generation', () => { + describe('other queries', () => { + describe('with packetbeat data', () => { + before(async () => { + await esClient.indices.create({ + index: 'packetbeat-8.11.3', + mappings: { + properties: { + '@timestamp': { + type: 'date', + }, + destination: { + type: 'object', + properties: { + domain: { + type: 'keyword', + }, + }, + }, + url: { + type: 'object', + properties: { + domain: { + type: 'keyword', + }, + }, + }, + }, + }, + }); + }); + + it('top 10 unique domains', async () => { + await evaluateEsqlQuery({ + question: + 'For standard Elastic ECS compliant packetbeat data view, create an ES|QL query that shows the top 10 unique domains by doc count', + expected: `FROM packetbeat-* + | STATS doc_count = COUNT(destination.domain) BY destination.domain + | SORT doc_count DESC + | LIMIT 10`, + }); + }); + + after(async () => { + await esClient.indices.delete({ + index: 'packetbeat-8.11.3', + allow_no_indices: true, + }); + }); + }); + + describe('with employees data', () => { + before(async () => { + await esClient.indices.create({ + index: 'employees', + mappings: { + properties: { + hire_date: { + type: 'date', + }, + emp_no: { + type: 'integer', + }, + salary: { + type: 'integer', + }, + }, + }, + }); + }); + + it('five earliest employees', async () => { + await evaluateEsqlQuery({ + question: + 'From employees, I want to see the 5 earliest employees (hire_date), I want to display only the month and the year that they were hired in and their employee number (emp_no). Format the date as e.g. "September 2019".', + expected: `FROM employees + | EVAL hire_date_formatted = DATE_FORMAT(hire_date, ""MMMM yyyy"") + | SORT hire_date + | KEEP emp_no, hire_date_formatted + | LIMIT 5`, + execute: false, + }); + }); + + it('employees with pagination', async () => { + await evaluateEsqlQuery({ + question: + 'From employees, I want to sort the documents by salary, and then return 10 results per page, and then see the second page', + criteria: [ + 'The assistant should mention that pagination is currently not supported in ES|QL', + ], + }); + }); + + after(async () => { + await esClient.indices.delete({ + index: 'employees', + }); + }); + }); + + it('logs avg cpu', async () => { + await evaluateEsqlQuery({ + question: + 'My logs data (ECS) is in `logs-*`. Show me a query that gets the average CPU per host, limit it to the top 10 results, in 1m buckets, and only include the last 15m. ', + expected: `FROM logs-* + | WHERE @timestamp >= NOW() - 15 minutes + | EVAL bucket = DATE_TRUNC(1 minute, @timestamp) + | STATS avg_cpu = AVG(system.cpu.total.norm.pct) BY bucket, host.name + | LIMIT 10`, + }); + }); + + it('metricbeat avg cpu', async () => { + await evaluateEsqlQuery({ + question: `from \`metricbeat*\`, using ES|QL, I want to see the percentage of CPU time normalized by the number of CPU cores, broken down by hostname. the fields are system.cpu.user.pct, system.cpu.system.pct, and system.cpu.cores`, + expected: `FROM metricbeat* + | EVAL cpu_pct_normalized = (system.cpu.user.pct + system.cpu.system.pct) / system.cpu.cores + | STATS AVG(cpu_pct_normalized) BY host.name`, + }); + }); + + it('postgres avg duration', async () => { + await evaluateEsqlQuery({ + question: + 'extract the query duration from postgres log messages in postgres-logs*, using ECS fields, and calculate the avg', + expected: `FROM postgres-logs + | DISSECT message "%{} duration: %{query_duration} ms" + | EVAL query_duration_num = TO_DOUBLE(query_duration) + | STATS avg_duration = AVG(query_duration_num)`, + }); + }); + + it('high cardinality logs', async () => { + await evaluateEsqlQuery({ + question: `i have logs in high-cardinality-data-fake_stack.admin-console-* . errors are found when log.level contais the value ERROR. generate a query to obtain the error rate as a percetage of the total logs per day for the last 7 days`, + expected: `FROM high-cardinality-data-fake_stack.admin-console-* + | WHERE @timestamp >= NOW() - 7 days + | EVAL error = CASE(log.level == "ERROR", 1, 0), total = 1 + | EVAL bucket = DATE_TRUNC(1 day, @timestamp) + | STATS total_errors = SUM(error), total_logs = SUM(total) BY bucket + | EVAL error_rate = (total_errors / total_logs) * 100`, + }); + }); + + it('nyc taxis dropoff time', async () => { + await evaluateEsqlQuery({ + question: + 'From `nyc_taxis`, give me a query that shows the top 10 results where the drop off time was between 6am and 10am.', + expected: `FROM nyc_taxis + | WHERE DATE_EXTRACT(drop_off_time, "hour") >= 6 AND DATE_EXTRACT(drop_off_time, "hour") < 10 + | LIMIT 10`, + }); + }); + }); + + describe('APM queries', () => { + before(async () => { + const myServiceInstance = apm + .service('my-service', 'production', 'go') + .instance('my-instance'); + + await synthtraceEsClients.apmSynthtraceEsClient.index( + timerange(moment().subtract(15, 'minutes'), moment()) + .interval('1m') + .rate(10) + .generator((timestamp) => + myServiceInstance + .transaction('GET /api') + .timestamp(timestamp) + .duration(50) + .outcome('success') + ) + ); + }); + + it('metrics avg duration', async () => { + await evaluateEsqlQuery({ + question: + 'I want to see a query for metrics-apm*, filtering on metricset.name:transaction and metricset.interval:1m, showing the average duration (via transaction.duration.histogram), in 50 buckets.', + expected: `FROM metrics-apm* + | WHERE metricset.name == "transaction" AND metricset.interval == "1m" + | EVAL bucket = AUTO_BUCKET(@timestamp, 50, , ) + | STATS avg_duration = AVG(transaction.duration.histogram) BY bucket`, + }); + }); + + it('service inventory', async () => { + await evaluateEsqlQuery({ + question: + 'I want to show a list of services with APM data. My data is in `traces-apm*`. I want to show the average transaction duration, the success rate (by dividing event.outcome:failure by event.outcome:failure+success), and total amount of requests. As a time range, select the last 24 hours. Use ES|QL.', + expected: `FROM traces-apm* + | WHERE @timestamp >= NOW() - 24 hours + | EVAL successful = CASE(event.outcome == "success", 1, 0), + failed = CASE(event.outcome == "failure", 1, 0) + | STATS success_rate = AVG(successful), + avg_duration = AVG(transaction.duration), + total_requests = COUNT(transaction.id) BY service.name`, + }); + }); + + it('exit span', async () => { + await evaluateEsqlQuery({ + question: `I've got APM data in \`metrics-apm\`. Filter on \`metricset.name:service_destination\` and the last 24 hours. Break down by span.destination.service.resource. Each document contains the count of total events (span.destination.service.response_time.count) for that document's interval and the total amount of latency (span.destination.service.response_time.sum.us). A document either contains an aggregate of failed events (event.outcome:success) or failed events (event.outcome:failure). A single document might represent multiple failures or successes, depending on the value of span.destination.service.response_time.count. For each value of span.destination.service.resource, give me the average throughput, latency per request, and failure rate, as a value between 0 and 1. Just show me the query.`, + expected: `FROM metrics-apm + | WHERE metricset.name == "service_destination" AND @timestamp >= NOW() - 24 hours + | EVAL total_response_time = span.destination.service.response_time.sum.us / span.destination.service.response_time.count, total_failures = CASE(event.outcome == "failure", 1, 0) * span.destination.service.response_time.count + | STATS + avg_throughput = AVG(span.destination.service.response_time.count), + avg_latency = AVG(total_response_time), + failure_rate = AVG(total_failures) + BY span.destination.service.resource`, + }); + }); + + it('trace duration', async () => { + await evaluateEsqlQuery({ + question: + 'My APM data is in `traces-apm*`. What’s the average for `transaction.duration.us` per service over the last hour?', + expected: `FROM traces-apm* + | WHERE @timestamp > NOW() - 1 hour + | STATS AVG(transaction.duration.us) BY service.name`, + }); + }); + + after(async () => { + await synthtraceEsClients.apmSynthtraceEsClient.clean(); + }); + }); +}); diff --git a/x-pack/plugins/observability_ai_assistant/scripts/evaluation/scenarios/esql/index.ts b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/scenarios/esql/index.ts deleted file mode 100644 index c55df6e08849b..0000000000000 --- a/x-pack/plugins/observability_ai_assistant/scripts/evaluation/scenarios/esql/index.ts +++ /dev/null @@ -1,173 +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 { last } from 'lodash'; -import { MessageRole } from '../../../../common'; -import { EvaluationFunction } from '../../types'; - -function extractEsqlQuery(response: string) { - return response.match(/```esql([\s\S]*?)```/)?.[1]; -} - -function createEsqlQueryEvaluation({ - question, - expected, - criteria = [], - execute = true, -}: { - question: string; - expected?: string; - criteria?: string[]; - execute?: boolean; -}): EvaluationFunction { - return async ({ chatClient }) => { - let conversation = await chatClient.complete(question); - - const esqlQuery = extractEsqlQuery(last(conversation.messages)?.content || ''); - - if (esqlQuery && execute) { - conversation = await chatClient.complete( - conversation.conversationId!, - conversation.messages.concat({ - content: '', - role: MessageRole.Assistant, - function_call: { - name: 'execute_query', - arguments: JSON.stringify({ - query: esqlQuery, - }), - trigger: MessageRole.User, - }, - }) - ); - } - - const evaluation = await chatClient.evaluate(conversation, [ - ...(expected - ? [ - `Returns a ES|QL query that is functionally equivalent to: - ${expected}`, - ] - : []), - ...(execute && expected ? [`The query successfully executed without an error`] : []), - ...criteria, - ]); - - return evaluation; - }; -} - -export const metricsApmQuery = createEsqlQueryEvaluation({ - question: - 'I want to see a query for metrics-apm*, filtering on metricset.name:transaction and metricset.interval:1m, showing the average duration (via transaction.duration.histogram), in 50 buckets.', - expected: `FROM metrics-apm* - | WHERE metricset.name == "transaction" AND metricset.interval == "1m" - | EVAL bucket = AUTO_BUCKET(@timestamp, 50, , ) - | STATS avg_duration = AVG(transaction.duration.histogram) BY bucket`, -}); - -export const packetbeatUniqueDomainsQuery = createEsqlQueryEvaluation({ - question: - 'For standard Elastic ECS compliant packetbeat data view, create an ES|QL query that shows the top 10 unique domains by doc count', - expected: `FROM packetbeat-* - | STATS doc_count = COUNT(destination.domain) BY destination.domain - | SORT doc_count DESC - | LIMIT 10`, -}); - -export const fiveEarliestEmployeesQuery = createEsqlQueryEvaluation({ - question: - 'From employees, I want to see the 5 earliest employees (hire_date), I want to display only the month and the year that they were hired in and their employee number (emp_no). Format the date as e.g. "September 2019".', - expected: `FROM employees - | EVAL hire_date_formatted = DATE_FORMAT(hire_date, ""MMMM yyyy"") - | SORT hire_date - | KEEP emp_no, hire_date_formatted - | LIMIT 5`, - execute: false, -}); - -export const employeesWithPaginationQuery = createEsqlQueryEvaluation({ - question: - 'From employees, I want to sort the documents by salary, and then return 10 results per page, and then see the second page', - criteria: ['The assistant should mention that pagination is currently not supported in ES|QL'], -}); - -export const logsAvgCpuQuery = createEsqlQueryEvaluation({ - question: - 'My logs data (ECS) is in `logs-*`. Show me a query that gets the average CPU per host, limit it to the top 10 results, in 1m buckets, and only include the last 15m. ', - expected: `FROM logs-* - | WHERE @timestamp >= NOW() - 15 minutes - | EVAL bucket = DATE_TRUNC(1 minute, @timestamp) - | STATS avg_cpu = AVG(system.cpu.total.norm.pct) BY bucket, host.name - | LIMIT 10`, -}); - -export const apmServiceInventoryQuery = createEsqlQueryEvaluation({ - question: - 'I want to show a list of services with APM data. My data is in `traces-apm*`. I want to show the average transaction duration, the success rate (by dividing event.outcome:failure by event.outcome:failure+success), and total amount of requests. As a time range, select the last 24 hours. Use ES|QL.', - expected: `FROM traces-apm* - | WHERE @timestamp >= NOW() - 24 hours - | EVAL successful = CASE(event.outcome == "success", 1, 0), - failed = CASE(event.outcome == "failure", 1, 0) - | STATS success_rate = AVG(successful), - avg_duration = AVG(transaction.duration), - total_requests = COUNT(transaction.id) BY service.name`, -}); - -export const metricbeatCpuQuery = createEsqlQueryEvaluation({ - question: `from \`metricbeat*\`, using ES|QL, I want to see the percentage of CPU time normalized by the number of CPU cores, broken down by hostname. the fields are system.cpu.user.pct, system.cpu.system.pct, and system.cpu.cores`, - expected: `FROM metricbeat* - | EVAL cpu_pct_normalized = (system.cpu.user.pct + system.cpu.system.pct) / system.cpu.cores - | STATS AVG(cpu_pct_normalized) BY host.name`, -}); - -export const postgresDurationQuery = createEsqlQueryEvaluation({ - question: - 'extract the query duration from postgres log messages in postgres-logs*, using ECS fields, and calculate the avg', - expected: `FROM postgres-logs - | DISSECT message "%{} duration: %{query_duration} ms" - | EVAL query_duration_num = TO_DOUBLE(query_duration) - | STATS avg_duration = AVG(query_duration_num)`, -}); - -export const apmExitSpanQuery = createEsqlQueryEvaluation({ - question: `I've got APM data in \`metrics-apm\`. Filter on \`metricset.name:service_destination\` and the last 24 hours. Break down by span.destination.service.resource. Each document contains the count of total events (span.destination.service.response_time.count) for that document's interval and the total amount of latency (span.destination.service.response_time.sum.us). A document either contains an aggregate of failed events (event.outcome:success) or failed events (event.outcome:failure). A single document might represent multiple failures or successes, depending on the value of span.destination.service.response_time.count. For each value of span.destination.service.resource, give me the average throughput, latency per request, and failure rate, as a value between 0 and 1. Just show me the query.`, - expected: `FROM metrics-apm - | WHERE metricset.name == "service_destination" AND @timestamp >= NOW() - 24 hours - | EVAL total_response_time = span.destination.service.response_time.sum.us / span.destination.service.response_time.count, total_failures = CASE(event.outcome == "failure", 1, 0) * span.destination.service.response_time.count - | STATS - avg_throughput = AVG(span.destination.service.response_time.count), - avg_latency = AVG(total_response_time), - failure_rate = AVG(total_failures) - BY span.destination.service.resource`, -}); - -export const highCardinalityLogsErrorQuery = createEsqlQueryEvaluation({ - question: `i have logs in high-cardinality-data-fake_stack.admin-console-* . errors are found when log.level contais the value ERROR. generate a query to obtain the error rate as a percetage of the total logs per day for the last 7 days`, - expected: `FROM high-cardinality-data-fake_stack.admin-console-* - | WHERE @timestamp >= NOW() - 7 days - | EVAL error = CASE(log.level == "ERROR", 1, 0), total = 1 - | EVAL bucket = DATE_TRUNC(1 day, @timestamp) - | STATS total_errors = SUM(error), total_logs = SUM(total) BY bucket - | EVAL error_rate = (total_errors / total_logs) * 100`, -}); - -export const nycTaxisDropoffTimeQuery = createEsqlQueryEvaluation({ - question: - 'From `nyc_taxis`, give me a query that shows the top 10 results where the drop off time was between 6am and 10am.', - expected: `FROM nyc_taxis - | WHERE DATE_EXTRACT(drop_off_time, "hour") >= 6 AND DATE_EXTRACT(drop_off_time, "hour") < 10 - | LIMIT 10`, -}); - -export const apmTraceDurationQuery = createEsqlQueryEvaluation({ - question: - 'My APM data is in `traces-apm*`. What’s the average for `transaction.duration.us` per service over the last hour?', - expected: `FROM traces-apm* - | WHERE @timestamp > NOW() - 1 hour - | STATS AVG(transaction.duration.us) BY service.name`, -}); diff --git a/x-pack/plugins/observability_ai_assistant/scripts/evaluation/services/index.ts b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/services/index.ts new file mode 100644 index 0000000000000..5ecf0c48ddec3 --- /dev/null +++ b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/services/index.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Client } from '@elastic/elasticsearch'; +import type { ChatClient, KibanaClient } from '../kibana_client'; +import type { SynthtraceEsClients } from '../setup_synthtrace'; + +function createErrorThrowingProxy(name: string): any { + return new Proxy( + {}, + { + get: () => { + throw new Error(`${name} has not been instantiated yet`); + }, + set: () => { + throw new Error(`${name} has not been instantiated yet`); + }, + } + ); +} + +export let chatClient: ChatClient = createErrorThrowingProxy('ChatClient'); +export let esClient: Client = createErrorThrowingProxy('esClient'); +export let kibanaClient: KibanaClient = createErrorThrowingProxy('kibanaClient'); + +export let synthtraceEsClients: SynthtraceEsClients = + createErrorThrowingProxy('synthtraceEsClients'); + +export const initServices = (services: { + chatClient: ChatClient; + esClient: Client; + kibanaClient: KibanaClient; + synthtraceEsClients: SynthtraceEsClients; +}) => { + chatClient = services.chatClient; + esClient = services.esClient; + kibanaClient = services.kibanaClient; + synthtraceEsClients = services.synthtraceEsClients; +}; diff --git a/x-pack/plugins/observability_ai_assistant/scripts/evaluation/setup_synthtrace.ts b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/setup_synthtrace.ts new file mode 100644 index 0000000000000..f6b3180541ee2 --- /dev/null +++ b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/setup_synthtrace.ts @@ -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 { + ApmSynthtraceEsClient, + InfraSynthtraceEsClient, + LogsSynthtraceEsClient, + ApmSynthtraceKibanaClient, +} from '@kbn/apm-synthtrace'; +import { ToolingLog } from '@kbn/tooling-log'; +import { isPromise } from 'util/types'; +import { Logger } from '@kbn/apm-synthtrace/src/lib/utils/create_logger'; +import { Client } from '@elastic/elasticsearch'; + +export interface SynthtraceEsClients { + apmSynthtraceEsClient: ApmSynthtraceEsClient; + infraSynthtraceEsClient: InfraSynthtraceEsClient; + logsSynthtraceEsClient: LogsSynthtraceEsClient; +} + +export async function setupSynthtrace({ + log, + client, + target, +}: { + log: ToolingLog; + client: Client; + target: string; +}): Promise { + const logger: Logger = { + debug: (...args) => log.debug(...args), + info: (...args) => log.info(...args), + error: (...args) => log.error(args.map((arg) => arg.toString()).join(' ')), + perf: (name, cb) => { + const now = performance.now(); + + const result = cb(); + + function measure() { + const after = performance.now(); + log.debug(`[${name}] took ${after - now} ms`); + } + + if (isPromise(result)) { + result.finally(measure); + } else { + measure(); + } + + return result; + }, + }; + const kibanaClient = new ApmSynthtraceKibanaClient({ + target, + logger, + }); + + const latestVersion = await kibanaClient.fetchLatestApmPackageVersion(); + + await kibanaClient.installApmPackage(latestVersion); + + const apmSynthtraceEsClient = new ApmSynthtraceEsClient({ + logger, + client, + version: latestVersion, + refreshAfterIndex: true, + }); + + const logsSynthtraceEsClient = new LogsSynthtraceEsClient({ + client, + logger, + refreshAfterIndex: true, + }); + + const infraSynthtraceEsClient = new InfraSynthtraceEsClient({ + client, + logger, + refreshAfterIndex: true, + }); + + return { + apmSynthtraceEsClient, + logsSynthtraceEsClient, + infraSynthtraceEsClient, + }; +} diff --git a/x-pack/plugins/observability_ai_assistant/scripts/evaluation/types.ts b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/types.ts index 3ee8c2eaebe99..88182c480ff21 100644 --- a/x-pack/plugins/observability_ai_assistant/scripts/evaluation/types.ts +++ b/x-pack/plugins/observability_ai_assistant/scripts/evaluation/types.ts @@ -8,16 +8,19 @@ import type { Client } from '@elastic/elasticsearch'; import { Message } from '../../common'; import { KibanaClient } from './kibana_client'; +import { SynthtraceEsClients } from './setup_synthtrace'; export interface ScenarioOptions { esClient: Client; kibanaClient: KibanaClient; chatClient: ReturnType; + synthtraceClients: SynthtraceEsClients; } export interface EvaluationResult { conversationId?: string; messages: Array; + passed: boolean; scores: Array<{ criterion: string; reasoning: string; diff --git a/x-pack/plugins/observability_ai_assistant/tsconfig.json b/x-pack/plugins/observability_ai_assistant/tsconfig.json index bf6f8ae0ad30b..31e5d0e6fe9bc 100644 --- a/x-pack/plugins/observability_ai_assistant/tsconfig.json +++ b/x-pack/plugins/observability_ai_assistant/tsconfig.json @@ -56,7 +56,10 @@ "@kbn/core-analytics-browser", "@kbn/core-http-browser", "@kbn/security-plugin-types-common", - "@kbn/ml-plugin" + "@kbn/ml-plugin", + "@kbn/expect", + "@kbn/apm-synthtrace-client", + "@kbn/apm-synthtrace" ], "exclude": ["target/**/*"] } From b04dace671469865a8719bfb154dd31a96a793f4 Mon Sep 17 00:00:00 2001 From: Jonathan Budzenski Date: Thu, 28 Dec 2023 09:42:17 -0600 Subject: [PATCH 010/323] skip suite failing es promotion #(174028) --- .../default_license/user_roles/read_privileges.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/user_roles/read_privileges.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/user_roles/read_privileges.ts index ee55d4ebfb331..dd906aebdd180 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/user_roles/read_privileges.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/user_roles/read_privileges.ts @@ -19,7 +19,8 @@ export default ({ getService }: FtrProviderContext) => { const supertest = getService('supertest'); const supertestWithoutAuth = getService('supertestWithoutAuth'); - describe('@ess @serverless @brokenInServerless read_privileges', () => { + // Failing ES Promotion: https://github.com/elastic/kibana/issues/174028 + describe.skip('@ess @serverless @brokenInServerless read_privileges', () => { it('should return expected privileges for elastic admin', async () => { const { body } = await supertest.get(DETECTION_ENGINE_PRIVILEGES_URL).send().expect(200); expect(body).to.eql({ From d4be2a33ac7322bb3aec65164b1d77216a99f328 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patryk=20Kopyci=C5=84ski?= Date: Thu, 28 Dec 2023 17:35:17 +0100 Subject: [PATCH 011/323] Replace deprecated node-sass with sass #2 (#173942) ## Summary The previous PR https://github.com/elastic/kibana/pull/161813 was reverted due to the broken webpack config https://github.com/elastic/kibana/commit/eef1afcd59334e94e8ef3a99b62176099125e336 --------- Co-authored-by: Tiago Costa Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Jon --- WORKSPACE.bazel | 1 - kbn_pm/src/lib/bazel.mjs | 2 - package.json | 4 +- .../kbn-dom-drag-drop/src/sass/drag_drop.scss | 2 +- .../src/worker/webpack.config.ts | 8 +- packages/kbn-storybook/src/webpack.config.ts | 3 +- .../field_list_sidebar.scss | 2 +- renovate.json | 4 +- .../build/tasks/install_dependencies_task.ts | 2 - src/dev/license_checker/config.ts | 1 + src/plugins/console/public/styles/_app.scss | 2 +- .../options_list/components/options_list.scss | 4 +- .../components/doc_table/_doc_table.scss | 2 +- .../public/markdown/_markdown.scss | 2 +- .../filter_bar/filter_item/filter_item.scss | 8 +- .../saved_query_management_list.scss | 4 +- .../public/_agg_params.scss | 2 +- .../components/_vis_with_splits.scss | 2 +- .../visualizations/views/_metric.scss | 2 +- .../public/vislib/lib/layout/_layout.scss | 2 +- .../shareable_runtime/webpack.config.js | 7 +- .../canvas/storybook/canvas_webpack.ts | 2 +- .../field_data_row/column_chart.scss | 2 +- .../guidance_panel/_guidance_panel.scss | 2 +- .../editor_frame/suggestion_panel.scss | 4 +- .../layer_toc/toc_entry/_toc_entry.scss | 2 +- .../influencers_list/_influencers_list.scss | 4 +- .../components/rule_editor/_rule_editor.scss | 2 +- .../explorer_charts/_explorer_chart.scss | 2 +- .../_timeseriesexplorer_annotations.scss | 8 +- .../shard_allocation/shard_allocation.scss | 2 +- .../components/status_icon/_status_icon.scss | 2 +- .../components/policy_form/_policy_form.scss | 4 +- .../_restore_snapshot_form.scss | 4 +- .../_deprecation_logging_toggle.scss | 2 +- yarn.lock | 452 +++++------------- 36 files changed, 167 insertions(+), 393 deletions(-) diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel index e614bdff172f9..49623728f1afe 100644 --- a/WORKSPACE.bazel +++ b/WORKSPACE.bazel @@ -60,7 +60,6 @@ yarn_install( "GECKODRIVER_CDNURL": "https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache", "CHROMEDRIVER_CDNURL": "https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache", "CHROMEDRIVER_CDNBINARIESURL": "https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache", - "SASS_BINARY_SITE": "https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-sass", "RE2_DOWNLOAD_MIRROR": "https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2", "CYPRESS_DOWNLOAD_MIRROR": "https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/cypress", } diff --git a/kbn_pm/src/lib/bazel.mjs b/kbn_pm/src/lib/bazel.mjs index 2ec27b359f153..022447ded129c 100644 --- a/kbn_pm/src/lib/bazel.mjs +++ b/kbn_pm/src/lib/bazel.mjs @@ -150,8 +150,6 @@ export async function installYarnDeps(log, opts = undefined) { offline: opts?.offline, quiet: opts?.quiet, env: { - SASS_BINARY_SITE: - 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-sass', RE2_DOWNLOAD_MIRROR: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2', }, diff --git a/package.json b/package.json index 6997cd3343e72..2b58cae82ad6d 100644 --- a/package.json +++ b/package.json @@ -1597,7 +1597,6 @@ "mutation-observer": "^1.0.3", "native-hdr-histogram": "^1.0.0", "nock": "12.0.3", - "node-sass": "^8.0.0", "null-loader": "^3.0.0", "nyc": "^15.1.0", "oboe": "^2.1.4", @@ -1625,7 +1624,8 @@ "regenerate": "^1.4.0", "resolve": "^1.22.0", "rxjs-marbles": "^7.0.1", - "sass-loader": "^10.4.1", + "sass-embedded": "^1.69.5", + "sass-loader": "^10.5.1", "selenium-webdriver": "^4.16.0", "simple-git": "^3.16.0", "sinon": "^7.4.2", diff --git a/packages/kbn-dom-drag-drop/src/sass/drag_drop.scss b/packages/kbn-dom-drag-drop/src/sass/drag_drop.scss index c26bb6c49b6cf..c68ae0c0d6f1e 100644 --- a/packages/kbn-dom-drag-drop/src/sass/drag_drop.scss +++ b/packages/kbn-dom-drag-drop/src/sass/drag_drop.scss @@ -99,7 +99,7 @@ $reorderItemMargin: $euiSizeS; position: absolute; width: 100%; top: 0; - height: calc(100% + #{$reorderItemMargin / 2}); + height: calc(100% + #{calc($reorderItemMargin / 2)}); } .domDragDrop-translatableDrop { diff --git a/packages/kbn-optimizer/src/worker/webpack.config.ts b/packages/kbn-optimizer/src/worker/webpack.config.ts index 189ca29072afe..7b4a5b27b78c7 100644 --- a/packages/kbn-optimizer/src/worker/webpack.config.ts +++ b/packages/kbn-optimizer/src/worker/webpack.config.ts @@ -185,12 +185,12 @@ export function getWebpackConfig( ) )};\n${content}`; }, - webpackImporter: false, - implementation: require('node-sass'), + implementation: require('sass-embedded'), sassOptions: { - outputStyle: worker.dist ? 'compressed' : 'nested', + outputStyle: worker.dist ? 'compressed' : 'expanded', includePaths: [Path.resolve(worker.repoRoot, 'node_modules')], - sourceMapRoot: `/${bundle.type}:${bundle.id}`, + sourceMap: true, + quietDeps: true, }, }, }, diff --git a/packages/kbn-storybook/src/webpack.config.ts b/packages/kbn-storybook/src/webpack.config.ts index 35bda9718d7cb..282a41dcbd453 100644 --- a/packages/kbn-storybook/src/webpack.config.ts +++ b/packages/kbn-storybook/src/webpack.config.ts @@ -115,9 +115,10 @@ export default ({ config: storybookConfig }: { config: Configuration }) => { resolve(REPO_ROOT, 'src/core/public/styles/core_app/_globals_v8light.scss') )};\n${content}`; }, - implementation: require('node-sass'), + implementation: require('sass-embedded'), sassOptions: { includePaths: [resolve(REPO_ROOT, 'node_modules')], + quietDeps: true, }, }, }, diff --git a/packages/kbn-unified-field-list/src/containers/unified_field_list_sidebar/field_list_sidebar.scss b/packages/kbn-unified-field-list/src/containers/unified_field_list_sidebar/field_list_sidebar.scss index 48fb44f1663e3..08402941bf74b 100644 --- a/packages/kbn-unified-field-list/src/containers/unified_field_list_sidebar/field_list_sidebar.scss +++ b/packages/kbn-unified-field-list/src/containers/unified_field_list_sidebar/field_list_sidebar.scss @@ -53,7 +53,7 @@ .unifiedFieldListSidebar .unifiedFieldListItemButton { &.kbnFieldButton { - margin-bottom: $euiSizeXS / 2; + margin-bottom: calc($euiSizeXS / 2); } &.domDragDrop-isDraggable { diff --git a/renovate.json b/renovate.json index 4a725ce80a5f5..7fb5b9020388c 100644 --- a/renovate.json +++ b/renovate.json @@ -362,7 +362,7 @@ { "groupName": "scss", "packageNames": [ - "node-sass" + "sass-embedded" ], "reviewers": [ "team:kibana-operations" @@ -673,4 +673,4 @@ "enabled": true } ] -} \ No newline at end of file +} diff --git a/src/dev/build/tasks/install_dependencies_task.ts b/src/dev/build/tasks/install_dependencies_task.ts index 59c9e38911243..0eebadec5ca79 100644 --- a/src/dev/build/tasks/install_dependencies_task.ts +++ b/src/dev/build/tasks/install_dependencies_task.ts @@ -32,8 +32,6 @@ export const InstallDependencies: Task = { { cwd: build.resolvePath(), env: { - SASS_BINARY_SITE: - 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-sass', RE2_DOWNLOAD_MIRROR: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2', }, diff --git a/src/dev/license_checker/config.ts b/src/dev/license_checker/config.ts index b0919d0ab6141..6ba5deb6408ac 100644 --- a/src/dev/license_checker/config.ts +++ b/src/dev/license_checker/config.ts @@ -88,4 +88,5 @@ export const LICENSE_OVERRIDES = { '@elastic/eui@91.0.0-backport.0': ['SSPL-1.0 OR Elastic License 2.0'], 'language-subtag-registry@0.3.21': ['CC-BY-4.0'], // retired ODC‑By license https://github.com/mattcg/language-subtag-registry 'buffers@0.1.1': ['MIT'], // license in importing module https://www.npmjs.com/package/binary + '@bufbuild/protobuf@1.2.1': ['Apache-2.0'], // license (Apache-2.0 AND BSD-3-Clause) }; diff --git a/src/plugins/console/public/styles/_app.scss b/src/plugins/console/public/styles/_app.scss index 9cbe643722047..2f4340f1de0ab 100644 --- a/src/plugins/console/public/styles/_app.scss +++ b/src/plugins/console/public/styles/_app.scss @@ -42,7 +42,7 @@ padding: 0 $euiSizeS; display: inline-block; text-decoration: none; - border-radius: $euiBorderRadius / 2; + border-radius: calc($euiBorderRadius / 2); white-space: nowrap; vertical-align: middle; cursor: default; diff --git a/src/plugins/controls/public/options_list/components/options_list.scss b/src/plugins/controls/public/options_list/components/options_list.scss index ff4014d0cc41d..e0c749441ff6a 100644 --- a/src/plugins/controls/public/options_list/components/options_list.scss +++ b/src/plugins/controls/public/options_list/components/options_list.scss @@ -65,7 +65,7 @@ } .optionsList__actionsRow { - margin: ($euiSizeS / 2) 0 !important; + margin: calc($euiSizeS / 2) 0 !important; .optionsList__actionBarDivider { height: $euiSize; @@ -97,4 +97,4 @@ color: $euiTextSubduedColor; padding: $euiSizeM; } -} \ No newline at end of file +} diff --git a/src/plugins/discover/public/components/doc_table/_doc_table.scss b/src/plugins/discover/public/components/doc_table/_doc_table.scss index 8a9b629a9694b..67de9cfae42e1 100644 --- a/src/plugins/discover/public/components/doc_table/_doc_table.scss +++ b/src/plugins/discover/public/components/doc_table/_doc_table.scss @@ -69,7 +69,7 @@ dt { background-color: transparentize(shade($euiColorPrimary, 20%), .9); color: $euiTextColor; - padding: ($euiSizeXS / 2) $euiSizeXS; + padding: calc($euiSizeXS / 2) $euiSizeXS; margin-right: $euiSizeXS; word-break: normal; border-radius: $euiBorderRadius; diff --git a/src/plugins/kibana_react/public/markdown/_markdown.scss b/src/plugins/kibana_react/public/markdown/_markdown.scss index c11aefe1f4d97..a3bba38509bcd 100644 --- a/src/plugins/kibana_react/public/markdown/_markdown.scss +++ b/src/plugins/kibana_react/public/markdown/_markdown.scss @@ -14,7 +14,7 @@ $kbnDefaultFontSize: 14px; @function canvasToEm($size) { - @return #{$size / $kbnDefaultFontSize}em; + @return #{calc($size / $kbnDefaultFontSize)}em; } .kbnMarkdown__body { diff --git a/src/plugins/unified_search/public/filter_bar/filter_item/filter_item.scss b/src/plugins/unified_search/public/filter_bar/filter_item/filter_item.scss index 1c16adbfc8c13..362aec7264983 100644 --- a/src/plugins/unified_search/public/filter_bar/filter_item/filter_item.scss +++ b/src/plugins/unified_search/public/filter_bar/filter_item/filter_item.scss @@ -8,8 +8,8 @@ line-height: $euiSize; border: none; color: $euiTextColor; - padding-top: $euiSizeM / 2 + 1px; - padding-bottom: $euiSizeM / 2 + 1px; + padding-top: calc($euiSizeM / 2) + 1px; + padding-bottom: calc($euiSizeM / 2) + 1px; white-space: normal; /* 1 */ &:not(.globalFilterItem-isDisabled) { @@ -54,8 +54,8 @@ left: 0; width: $euiSizeXS; background-color: $kbnGlobalFilterItemBorderColor; - border-top-left-radius: $euiBorderRadius / 2; - border-bottom-left-radius: $euiBorderRadius / 2; + border-top-left-radius: calc($euiBorderRadius / 2); + border-bottom-left-radius: calc($euiBorderRadius / 2); } } diff --git a/src/plugins/unified_search/public/saved_query_management/saved_query_management_list.scss b/src/plugins/unified_search/public/saved_query_management/saved_query_management_list.scss index 7ce304310ae56..2e6f639ea792d 100644 --- a/src/plugins/unified_search/public/saved_query_management/saved_query_management_list.scss +++ b/src/plugins/unified_search/public/saved_query_management/saved_query_management_list.scss @@ -5,7 +5,7 @@ } .kbnSavedQueryManagement__text { - padding: $euiSizeM $euiSizeM ($euiSizeM / 2) $euiSizeM; + padding: $euiSizeM $euiSizeM calc($euiSizeM / 2) $euiSizeM; } .kbnSavedQueryManagement__list { @@ -13,5 +13,5 @@ max-height: inherit; // Fixes overflow for applied max-height // Left/Right padding is calculated to match the left alignment of the // popover text and buttons - padding: ($euiSizeM / 2) $euiSizeXS !important; // Override flush + padding: calc($euiSizeM / 2) $euiSizeXS !important; // Override flush } diff --git a/src/plugins/vis_default_editor/public/_agg_params.scss b/src/plugins/vis_default_editor/public/_agg_params.scss index 81faa06681c0d..c56ef94c3a4ba 100644 --- a/src/plugins/vis_default_editor/public/_agg_params.scss +++ b/src/plugins/vis_default_editor/public/_agg_params.scss @@ -1,7 +1,7 @@ .visEditorAggParam--half { margin: $euiSize 0; display: inline-block; - width: calc(50% - #{$euiSizeS / 2}); + width: calc(50% - #{calc($euiSizeS / 2)}); } .visEditorAggParam--half-size { diff --git a/src/plugins/vis_types/timeseries/public/application/components/_vis_with_splits.scss b/src/plugins/vis_types/timeseries/public/application/components/_vis_with_splits.scss index 9e09a6c3477f3..036cf3f6a8fbd 100644 --- a/src/plugins/vis_types/timeseries/public/application/components/_vis_with_splits.scss +++ b/src/plugins/vis_types/timeseries/public/application/components/_vis_with_splits.scss @@ -20,7 +20,7 @@ > .tvbVis { // Apply the minimum height on the vis itself so it doesn't interfere with flex calculations // Gauges are not completely square, so the height is just slightly less than the width - min-height: $euiSize * 12 / 1.25; + min-height: calc($euiSize * 12 / 1.25); } } diff --git a/src/plugins/vis_types/timeseries/public/application/visualizations/views/_metric.scss b/src/plugins/vis_types/timeseries/public/application/visualizations/views/_metric.scss index bc2ce4f1a9e44..d5eb056dd172e 100644 --- a/src/plugins/vis_types/timeseries/public/application/visualizations/views/_metric.scss +++ b/src/plugins/vis_types/timeseries/public/application/visualizations/views/_metric.scss @@ -101,7 +101,7 @@ .tvbVisMetric__label--additional { @include euiTextTruncate; font-size: .25em; /* 1 */ - padding: ($euiSizeXS / 2) 0 0; + padding: calc($euiSizeXS / 2) 0 0; text-align: center; color: $tvbValueColor; line-height: 1.2; // Ensure the descenders don't get cut off diff --git a/src/plugins/vis_types/vislib/public/vislib/lib/layout/_layout.scss b/src/plugins/vis_types/vislib/public/vislib/lib/layout/_layout.scss index 4612602d93f1c..8b92af5a4fdcf 100644 --- a/src/plugins/vis_types/vislib/public/vislib/lib/layout/_layout.scss +++ b/src/plugins/vis_types/vislib/public/vislib/lib/layout/_layout.scss @@ -203,7 +203,7 @@ } .slice { - stroke-width: $euiSizeXS / 2; + stroke-width: calc($euiSizeXS / 2); stroke: $euiColorEmptyShade; &:hover { diff --git a/x-pack/plugins/canvas/shareable_runtime/webpack.config.js b/x-pack/plugins/canvas/shareable_runtime/webpack.config.js index c60230c6bd684..e3786b937ea64 100644 --- a/x-pack/plugins/canvas/shareable_runtime/webpack.config.js +++ b/x-pack/plugins/canvas/shareable_runtime/webpack.config.js @@ -110,7 +110,7 @@ module.exports = { { loader: 'sass-loader', options: { - implementation: require('node-sass'), + implementation: require('sass-embedded'), sourceMap: !isProd, }, }, @@ -147,10 +147,9 @@ module.exports = { path.resolve(KIBANA_ROOT, 'src/core/public/styles/core_app/_globals_v8light.scss') )};\n${content}`; }, - implementation: require('node-sass'), - webpackImporter: false, + implementation: require('sass-embedded'), sassOptions: { - outputStyle: 'nested', + outputStyle: 'expanded', includePaths: [path.resolve(KIBANA_ROOT, 'node_modules')], }, }, diff --git a/x-pack/plugins/canvas/storybook/canvas_webpack.ts b/x-pack/plugins/canvas/storybook/canvas_webpack.ts index 946b6c5b78cec..c6ae4a9dbaa95 100644 --- a/x-pack/plugins/canvas/storybook/canvas_webpack.ts +++ b/x-pack/plugins/canvas/storybook/canvas_webpack.ts @@ -38,7 +38,7 @@ export const canvasWebpack = { { loader: 'sass-loader', options: { - implementation: require('node-sass'), + implementation: require('sass-embedded'), }, }, ], diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/components/field_data_row/column_chart.scss b/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/components/field_data_row/column_chart.scss index 8a0b9cc992c3e..a98eb200f022e 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/components/field_data_row/column_chart.scss +++ b/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/components/field_data_row/column_chart.scss @@ -16,7 +16,7 @@ font-weight: normal; text-align: left; line-height: 1.1; - font-size: #{$euiFontSizeL / 2}; // 10px + font-size: #{calc($euiFontSizeL / 2)}; // 10px } .dataGridChart__legend--numeric { diff --git a/x-pack/plugins/graph/public/components/guidance_panel/_guidance_panel.scss b/x-pack/plugins/graph/public/components/guidance_panel/_guidance_panel.scss index add1d0bdf8aa3..28e05afe0c781 100644 --- a/x-pack/plugins/graph/public/components/guidance_panel/_guidance_panel.scss +++ b/x-pack/plugins/graph/public/components/guidance_panel/_guidance_panel.scss @@ -28,7 +28,7 @@ .gphGuidancePanel__itemIcon { position: absolute; left: 0; - top: -($euiSizeXS / 2); + top: -(calc($euiSizeXS / 2)); width: $euiSizeL; height: $euiSizeL; padding: $euiSizeXS; diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.scss b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.scss index cd2ee706c1e18..35606c67382d5 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.scss +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.scss @@ -25,8 +25,8 @@ flex: 0 0 auto; height: $lnsSuggestionHeight; margin-right: $euiSizeS; - margin-left: $euiSizeXS / 2; - margin-bottom: $euiSizeXS / 2; + margin-left: calc($euiSizeXS / 2); + margin-bottom: calc($euiSizeXS / 2); padding: 0 $euiSizeS; box-shadow: none !important; // sass-lint:disable-line no-important diff --git a/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/layer_toc/toc_entry/_toc_entry.scss b/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/layer_toc/toc_entry/_toc_entry.scss index c88f343f7dbfa..7f1c61801a4f3 100644 --- a/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/layer_toc/toc_entry/_toc_entry.scss +++ b/x-pack/plugins/maps/public/connected_components/right_side_controls/layer_control/layer_toc/toc_entry/_toc_entry.scss @@ -128,7 +128,7 @@ background-color: $euiColorEmptyShade; border: $euiBorderThin; color: $euiTextColor; - border-radius: $euiBorderRadius / 2; + border-radius: calc($euiBorderRadius / 2); height: $euiSize; width: $euiSizeXL; line-height: $euiSize; diff --git a/x-pack/plugins/ml/public/application/components/influencers_list/_influencers_list.scss b/x-pack/plugins/ml/public/application/components/influencers_list/_influencers_list.scss index e33811aa9a8cc..1b091e4046c50 100644 --- a/x-pack/plugins/ml/public/application/components/influencers_list/_influencers_list.scss +++ b/x-pack/plugins/ml/public/application/components/influencers_list/_influencers_list.scss @@ -28,7 +28,7 @@ } .progress-bar { - height: $euiSizeXS / 2; + height: calc($euiSizeXS / 2); margin-top: $euiSizeM; text-align: right; line-height: 18px; // SASSTODO: Calc proper value @@ -96,7 +96,7 @@ font-size: 11px; line-height: 14px; border-radius: $euiBorderRadius; - padding: $euiSizeXS / 2; + padding: calc($euiSizeXS / 2); margin-top: $euiSizeXS; display: inline-block; border: $euiBorderThin; diff --git a/x-pack/plugins/ml/public/application/components/rule_editor/_rule_editor.scss b/x-pack/plugins/ml/public/application/components/rule_editor/_rule_editor.scss index 03eca2842c300..09605c4016565 100644 --- a/x-pack/plugins/ml/public/application/components/rule_editor/_rule_editor.scss +++ b/x-pack/plugins/ml/public/application/components/rule_editor/_rule_editor.scss @@ -41,7 +41,7 @@ // SASSTODO: Dangerous EUI overwrite .scope-field-checkbox { - margin-right: $euiSizeXS / 2; + margin-right: calc($euiSizeXS / 2); .euiCheckbox { margin-top: $euiSizeXS; diff --git a/x-pack/plugins/ml/public/application/explorer/explorer_charts/_explorer_chart.scss b/x-pack/plugins/ml/public/application/explorer/explorer_charts/_explorer_chart.scss index 55ebfe8ab3edb..29967e8db9b3f 100644 --- a/x-pack/plugins/ml/public/application/explorer/explorer_charts/_explorer_chart.scss +++ b/x-pack/plugins/ml/public/application/explorer/explorer_charts/_explorer_chart.scss @@ -15,7 +15,7 @@ rect.selected-interval { fill: rgba(200, 200, 200, .1); stroke: $euiColorDarkShade; - stroke-width: $euiSizeXS / 2; + stroke-width: calc($euiSizeXS / 2); stroke-opacity: .8; } diff --git a/x-pack/plugins/ml/public/application/timeseriesexplorer/_timeseriesexplorer_annotations.scss b/x-pack/plugins/ml/public/application/timeseriesexplorer/_timeseriesexplorer_annotations.scss index a7186597b4135..656f38590d3a5 100644 --- a/x-pack/plugins/ml/public/application/timeseriesexplorer/_timeseriesexplorer_annotations.scss +++ b/x-pack/plugins/ml/public/application/timeseriesexplorer/_timeseriesexplorer_annotations.scss @@ -40,10 +40,10 @@ $mlAnnotationRectDefaultFillOpacity: .05; } .mlAnnotationRect-isBlur { - stroke-opacity: $mlAnnotationRectDefaultStrokeOpacity / 2; + stroke-opacity: calc($mlAnnotationRectDefaultStrokeOpacity / 2); transition: stroke-opacity $euiAnimSpeedFast; - fill-opacity: $mlAnnotationRectDefaultFillOpacity / 2; + fill-opacity: calc($mlAnnotationRectDefaultFillOpacity / 2); transition: fill-opacity $euiAnimSpeedFast; } @@ -95,9 +95,9 @@ $mlAnnotationRectDefaultFillOpacity: .05; } .mlContextAnnotationRect-isBlur { - stroke-opacity: $mlAnnotationRectDefaultStrokeOpacity / 2; + stroke-opacity: calc($mlAnnotationRectDefaultStrokeOpacity / 2); transition: stroke-opacity $euiAnimSpeedFast; - fill-opacity: $mlAnnotationRectDefaultFillOpacity / 2; + fill-opacity: calc($mlAnnotationRectDefaultFillOpacity / 2); transition: fill-opacity $euiAnimSpeedFast; } diff --git a/x-pack/plugins/monitoring/public/components/elasticsearch/shard_allocation/shard_allocation.scss b/x-pack/plugins/monitoring/public/components/elasticsearch/shard_allocation/shard_allocation.scss index c46d7a048b93b..961e0350ccc85 100644 --- a/x-pack/plugins/monitoring/public/components/elasticsearch/shard_allocation/shard_allocation.scss +++ b/x-pack/plugins/monitoring/public/components/elasticsearch/shard_allocation/shard_allocation.scss @@ -22,7 +22,7 @@ margin: $euiSizeS; border: 1px solid $euiColorMediumShade; border-radius: $euiSizeXS; - padding: $euiSizeXS / 2 0; + padding: calc($euiSizeXS / 2) 0; &.monChild--index { border-left: $euiSizeXS solid $euiColorSuccess; diff --git a/x-pack/plugins/monitoring/public/components/status_icon/_status_icon.scss b/x-pack/plugins/monitoring/public/components/status_icon/_status_icon.scss index 2d36e7fc90f22..50c705f80650e 100644 --- a/x-pack/plugins/monitoring/public/components/status_icon/_status_icon.scss +++ b/x-pack/plugins/monitoring/public/components/status_icon/_status_icon.scss @@ -1,7 +1,7 @@ .monStatusIcon { display: inline-block; margin-left: $euiSizeXS; - padding: ($euiSizeXS / 2) $euiSizeS; + padding: calc($euiSizeXS / 2) $euiSizeS; border-radius: $euiBorderRadius; color: $euiColorGhost; min-width: 1.9em; diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/_policy_form.scss b/x-pack/plugins/snapshot_restore/public/application/components/policy_form/_policy_form.scss index 0a5187908f854..389e925f392c2 100644 --- a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/_policy_form.scss +++ b/x-pack/plugins/snapshot_restore/public/application/components/policy_form/_policy_form.scss @@ -4,7 +4,7 @@ .snapshotRestore__policyForm__stepSettings { .euiFormRow--hasEmptyLabelSpace { min-height: auto; - margin-top: $euiFontSizeXS + $euiSizeS + ($euiSizeXXL / 4); + margin-top: $euiFontSizeXS + $euiSizeS + calc($euiSizeXXL / 4); } } @@ -13,4 +13,4 @@ */ .snapshotRestore__policyForm__stepSettings__indicesFieldWrapper .euiFormLabel { width: 100%; -} \ No newline at end of file +} diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/_restore_snapshot_form.scss b/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/_restore_snapshot_form.scss index 6a8f0b951c99f..ec680472edf46 100644 --- a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/_restore_snapshot_form.scss +++ b/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/_restore_snapshot_form.scss @@ -5,7 +5,7 @@ .snapshotRestore__restoreForm__stepSettings { .euiFormRow--hasEmptyLabelSpace { min-height: auto; - margin-top: $euiFontSizeXS + $euiSizeS + ($euiSizeXXL / 4); + margin-top: $euiFontSizeXS + $euiSizeS + calc($euiSizeXXL / 4); } } @@ -14,4 +14,4 @@ */ .snapshotRestore__restoreForm__stepLogistics__indicesFieldWrapper .euiFormLabel { width: 100%; -} \ No newline at end of file +} diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/deprecation_logging_toggle/_deprecation_logging_toggle.scss b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/deprecation_logging_toggle/_deprecation_logging_toggle.scss index e8b6ec06ed7c9..abcc87b75cd08 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/deprecation_logging_toggle/_deprecation_logging_toggle.scss +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/deprecation_logging_toggle/_deprecation_logging_toggle.scss @@ -3,5 +3,5 @@ // them. With this selector we offset the difference so that the content // of the page doesnt jump when toggling between states. .upgToggleLoading > .upgLoadingItem { - margin: $euiSizeM / 2; + margin: calc($euiSizeM / 2); } diff --git a/yarn.lock b/yarn.lock index afdd833e1de25..fd4b64bed4be9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1426,6 +1426,11 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@bufbuild/protobuf@^1.0.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-1.2.1.tgz#f8b1fbbe79726a4eafa9772ddde147b57f85d177" + integrity sha512-cwwGvLGqvoaOZmoP5+i4v/rbW+rHkguvTehuZyM2p/xpmaNSdT2h3B7kHw33aiffv35t1XrYHIkdJSEkSEMJuA== + "@cbor-extract/cbor-extract-darwin-arm64@2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.0.0.tgz#cf0667e4c22111c9d45e16c29964892b12460a76" @@ -2348,7 +2353,7 @@ pngjs "7.0.0" sharp "0.32.1" -"@gar/promisify@^1.0.1", "@gar/promisify@^1.1.3": +"@gar/promisify@^1.0.1": version "1.1.3" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== @@ -6891,14 +6896,6 @@ "@gar/promisify" "^1.0.1" semver "^7.3.5" -"@npmcli/fs@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" - integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== - dependencies: - "@gar/promisify" "^1.1.3" - semver "^7.3.5" - "@npmcli/fs@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.0.tgz#233d43a25a91d68c3a863ba0da6a3f00924a173e" @@ -6913,14 +6910,6 @@ dependencies: mkdirp "^1.0.4" -"@npmcli/move-file@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" - integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== - dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" - "@octokit/auth-token@^2.4.0": version "2.4.4" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.4.tgz#ee31c69b01d0378c12fd3ffe406030f3d94d3b56" @@ -8658,11 +8647,6 @@ dependencies: "@babel/runtime" "^7.12.5" -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - "@tootallnate/once@2": version "2.0.0" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" @@ -10994,7 +10978,7 @@ after-all-results@^2.0.0: resolved "https://registry.yarnpkg.com/after-all-results/-/after-all-results-2.0.0.tgz#6ac2fc202b500f88da8f4f5530cfa100f4c6a2d0" integrity sha1-asL8ICtQD4jaj09VMM+hAPTGotA= -agent-base@6, agent-base@^6.0.2: +agent-base@6: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== @@ -11355,14 +11339,6 @@ are-we-there-yet@^2.0.0: delegates "^1.0.0" readable-stream "^3.6.0" -are-we-there-yet@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d" - integrity sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw== - dependencies: - 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" @@ -11664,11 +11640,6 @@ async-cache@^1.1.0: dependencies: lru-cache "^4.0.0" -async-foreach@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" - integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= - async-value-promise@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/async-value-promise/-/async-value-promise-1.1.1.tgz#68957819e3eace804f3b4b69477e2bd276c15378" @@ -12508,6 +12479,11 @@ btoa-lite@^1.0.0: resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= +buffer-builder@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/buffer-builder/-/buffer-builder-0.2.0.tgz#3322cd307d8296dab1f604618593b261a3fade8f" + integrity sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg== + buffer-crc32@^0.2.1, buffer-crc32@^0.2.13, buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" @@ -12634,7 +12610,7 @@ cacache@^12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" -cacache@^15.0.4, cacache@^15.0.5, cacache@^15.2.0: +cacache@^15.0.4, cacache@^15.0.5: version "15.3.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== @@ -12658,30 +12634,6 @@ cacache@^15.0.4, cacache@^15.0.5, cacache@^15.2.0: tar "^6.0.2" unique-filename "^1.1.1" -cacache@^16.1.0: - version "16.1.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" - integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== - dependencies: - "@npmcli/fs" "^2.1.0" - "@npmcli/move-file" "^2.0.0" - chownr "^2.0.0" - fs-minipass "^2.1.0" - glob "^8.0.1" - infer-owner "^1.0.4" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - mkdirp "^1.0.4" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^9.0.0" - tar "^6.1.11" - unique-filename "^2.0.0" - cacache@^18.0.0: version "18.0.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-18.0.0.tgz#17a9ecd6e1be2564ebe6cdca5f7cfed2bfeb6ddc" @@ -13101,9 +13053,9 @@ ci-info@^2.0.0: integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== ci-info@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.1.tgz#58331f6f472a25fe3a50a351ae3052936c2c7f32" - integrity sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg== + version "3.8.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -14614,7 +14566,7 @@ debug@3.X, debug@^3.0.0, debug@^3.1.0, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -15638,7 +15590,7 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -encoding@^0.1.12, encoding@^0.1.13: +encoding@^0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== @@ -17416,7 +17368,7 @@ fs-extra@^9.0.0, fs-extra@^9.0.1, fs-extra@^9.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-minipass@^2.0.0, fs-minipass@^2.1.0: +fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== @@ -17518,28 +17470,6 @@ gauge@^3.0.0: strip-ansi "^6.0.1" wide-align "^1.1.2" -gauge@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.2.tgz#c3777652f542b6ef62797246e8c7caddecb32cc7" - integrity sha512-aSPRm2CvA9R8QyU5eXMFPd+cYkyxLsXHd2l5/FOH2V/eml//M04G6KZOmTap07O1PvEwNcl2NndyLfK8g3QrKA== - dependencies: - ansi-regex "^5.0.1" - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.3" - console-control-strings "^1.1.0" - has-unicode "^2.0.1" - signal-exit "^3.0.7" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.5" - -gaze@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" - integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== - dependencies: - globule "^1.0.0" - geckodriver@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/geckodriver/-/geckodriver-4.3.0.tgz#8586e80ddd23e5d5cd47382d9f6897051ca12ea3" @@ -17793,7 +17723,7 @@ glob@7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@8.1.0, glob@^8.0.1, glob@^8.0.3: +glob@8.1.0, glob@^8.0.3: version "8.1.0" resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== @@ -17827,18 +17757,6 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, gl once "^1.3.0" path-is-absolute "^1.0.0" -glob@~7.1.1: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - global-dirs@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" @@ -17971,15 +17889,6 @@ globjoin@^0.1.4: resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" integrity sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM= -globule@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d" - integrity sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ== - dependencies: - glob "~7.1.1" - 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" @@ -18637,7 +18546,7 @@ htmlparser2@^8.0.1: domutils "^3.0.1" entities "^4.4.0" -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== @@ -18685,15 +18594,6 @@ http-parser-js@>=0.5.1: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - http-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" @@ -18753,7 +18653,7 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: +https-proxy-agent@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== @@ -18864,6 +18764,11 @@ immer@^9.0.15, immer@^9.0.7: resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.15.tgz#0b9169e5b1d22137aba7d43f8a81a495dd1b62dc" integrity sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ== +immutable@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" + integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== + import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -20519,11 +20424,6 @@ jquery@^3.5.0: resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw== -js-base64@^2.4.9: - version "2.5.2" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.2.tgz#313b6274dda718f714d00b3330bbae6e38e90209" - integrity sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ== - js-beautify@1.10.3: version "1.10.3" resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.10.3.tgz#c73fa10cf69d3dfa52d8ed624f23c64c0a6a94c1" @@ -21458,7 +21358,7 @@ lodash.uniq@4.5.0, lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@>4.17.4, lodash@^4.0.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@~4.17.10: +lodash@>4.17.4, lodash@^4.0.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -21627,7 +21527,7 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-cache@^7.14.1, lru-cache@^7.7.1: +lru-cache@^7.14.1: version "7.18.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== @@ -21686,28 +21586,6 @@ make-error@^1.1.1: 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" - integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== - dependencies: - agentkeepalive "^4.2.1" - cacache "^16.1.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-fetch "^2.0.3" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - promise-retry "^2.0.1" - socks-proxy-agent "^7.0.0" - ssri "^9.0.0" - make-fetch-happen@^13.0.0: version "13.0.0" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz#705d6f6cbd7faecb8eac2432f551e49475bfedf0" @@ -21725,28 +21603,6 @@ make-fetch-happen@^13.0.0: promise-retry "^2.0.1" ssri "^10.0.0" -make-fetch-happen@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" - integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== - dependencies: - agentkeepalive "^4.1.3" - cacache "^15.2.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" - minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.2" - promise-retry "^2.0.1" - socks-proxy-agent "^6.0.0" - ssri "^8.0.0" - makeerror@1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" @@ -22353,7 +22209,7 @@ minimatch@5.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2, minimatch@~3.0.2: +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -22395,28 +22251,6 @@ minipass-collect@^1.0.2: dependencies: minipass "^3.0.0" -minipass-fetch@^1.3.2: - version "1.3.4" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.3.4.tgz#63f5af868a38746ca7b33b03393ddf8c291244fe" - integrity sha512-TielGogIzbUEtd1LsjZFs47RWuHHfhl6TiCx1InVxApBAmQ8bL0dL5ilkLGcRvuyW/A9nE+Lvn855Ewz8S0PnQ== - dependencies: - minipass "^3.1.0" - minipass-sized "^1.0.3" - minizlib "^2.0.0" - optionalDependencies: - encoding "^0.1.12" - -minipass-fetch@^2.0.3: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" - integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== - dependencies: - minipass "^3.1.6" - minipass-sized "^1.0.3" - minizlib "^2.1.2" - optionalDependencies: - encoding "^0.1.13" - minipass-fetch@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.3.tgz#d9df70085609864331b533c960fd4ffaa78d15ce" @@ -22449,7 +22283,7 @@ minipass-sized@^1.0.3: dependencies: minipass "^3.0.0" -minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3, minipass@^3.1.6: +minipass@^3.0.0, minipass@^3.1.1: version "3.3.6" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== @@ -22473,7 +22307,7 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== -minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2: +minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== @@ -22848,7 +22682,7 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nan@^2.17.0, nan@^2.18.0: +nan@^2.18.0: version "2.18.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.18.0.tgz#26a6faae7ffbeb293a39660e88a76b82e30b7554" integrity sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w== @@ -22929,7 +22763,7 @@ nearley@^2.7.10: randexp "0.4.6" semver "^5.4.1" -negotiator@0.6.3, negotiator@^0.6.2, negotiator@^0.6.3: +negotiator@0.6.3, negotiator@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== @@ -23096,22 +22930,6 @@ node-gyp@^10.0.1: tar "^6.1.2" which "^4.0.0" -node-gyp@^8.4.1: - version "8.4.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" - integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.6" - make-fetch-happen "^9.1.0" - nopt "^5.0.0" - npmlog "^6.0.0" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.2" - which "^2.0.2" - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -23173,26 +22991,6 @@ node-releases@^2.0.14: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== -node-sass@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-8.0.0.tgz#c80d52148db0ce88610bcf1e1d112027393c13e1" - integrity sha512-jPzqCF2/e6JXw6r3VxfIqYc8tKQdkj5Z/BDATYyG6FL6b/LuYBNFGFVhus0mthcWifHm/JzBpKAd+3eXsWeK/A== - dependencies: - async-foreach "^0.1.3" - chalk "^4.1.2" - cross-spawn "^7.0.3" - gaze "^1.0.0" - get-stdin "^4.0.1" - glob "^7.0.3" - lodash "^4.17.15" - make-fetch-happen "^10.0.4" - meow "^9.0.0" - nan "^2.17.0" - node-gyp "^8.4.1" - sass-graph "^4.0.1" - 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" @@ -23213,13 +23011,6 @@ nopt@^4.0.1, nopt@~4.0.1: abbrev "1" osenv "^0.1.4" -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - nopt@^7.0.0: version "7.2.0" resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.0.tgz#067378c68116f602f552876194fd11f1292503d7" @@ -23310,16 +23101,6 @@ npmlog@^5.0.1: gauge "^3.0.0" set-blocking "^2.0.0" -npmlog@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.1.tgz#06f1344a174c06e8de9c6c70834cfba2964bba17" - integrity sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg== - dependencies: - are-we-there-yet "^3.0.0" - console-control-strings "^1.1.0" - gauge "^4.0.0" - set-blocking "^2.0.0" - nth-check@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" @@ -23599,9 +23380,9 @@ onetime@^5.1.0, onetime@^5.1.2: mimic-fn "^2.1.0" open@^7.0.3: - version "7.1.0" - resolved "https://registry.yarnpkg.com/open/-/open-7.1.0.tgz#68865f7d3cb238520fa1225a63cf28bcf8368a1c" - integrity sha512-lLPI5KgOwEYCDKXf4np7y1PBEkj7HYIyP2DY8mVDRnx0VIIu6bNrRB0R66TuO7Mack6EnTNLm4uvcl1UoklTpA== + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== dependencies: is-docker "^2.0.0" is-wsl "^2.1.1" @@ -26999,10 +26780,10 @@ rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.1, rxjs@^6.6.0, rxjs@^6.6.7: dependencies: tslib "^1.9.0" -rxjs@^7.0.0, rxjs@^7.5.5: - version "7.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" - integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== +rxjs@^7.0.0, rxjs@^7.4.0, rxjs@^7.5.5: + version "7.8.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" + integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== dependencies: tslib "^2.1.0" @@ -27084,20 +26865,71 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sass-graph@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-4.0.1.tgz#2ff8ca477224d694055bf4093f414cf6cfad1d2e" - integrity sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA== - dependencies: - glob "^7.0.0" - lodash "^4.17.11" - scss-tokenizer "^0.4.3" - yargs "^17.2.1" - -sass-loader@^10.4.1: - version "10.4.1" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.4.1.tgz#bea4e173ddf512c9d7f53e9ec686186146807cbf" - integrity sha512-aX/iJZTTpNUNx/OSYzo2KsjIUQHqvWsAhhUijFjAPdZTEhstjZI9zTNvkTTwsx+uNUJqUwOw5gacxQMx4hJxGQ== +sass-embedded-darwin-arm64@1.69.5: + version "1.69.5" + resolved "https://registry.yarnpkg.com/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.69.5.tgz#69e246d4a6875184a593906dfd7b84a21eb6eeb2" + integrity sha512-zVuXJzgT54t24E4QPP/iteHsw/cawZE8gAXGEm20cP2DKsIQBF7bvSTk0zzY0bS01YFtJviYM13HcGUe4q7/7w== + +sass-embedded-darwin-x64@1.69.5: + version "1.69.5" + resolved "https://registry.yarnpkg.com/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.69.5.tgz#82c2a659dafa93b54d2690f08f7aac9b2447c43f" + integrity sha512-HcA9YER3Ax7lMnHouxnIY462gnst5lNL56QXkZaTQmg9nH7oqR2bMfWbckEQL+mHIXGSM/QfX0aD59VOm5iKZw== + +sass-embedded-linux-arm64@1.69.5: + version "1.69.5" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.69.5.tgz#8585bbcc6996ba04d8aa4216a2bf65de2e6592ea" + integrity sha512-HWCjdFSLGh0dMUNLNh+slc2j9koSZnfTEO9qQR6WEIuC+We6vYKJugGPo1V9pFbBeoW6VAJGYdlqsRPquteCZw== + +sass-embedded-linux-arm@1.69.5: + version "1.69.5" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.69.5.tgz#ded653fe37d6b07d778c5f414cba5f28107dc438" + integrity sha512-m0NxVkrfcS3UsF33q0FgItMWIz/F1FZdfVZpjp+dP6qd0KLeTuoPUCh2GSize0DAU5T0Zj24b2mXeowDKv463g== + +sass-embedded-linux-ia32@1.69.5: + version "1.69.5" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.69.5.tgz#61ad8b3b43be563f6fcd6ff04d0e121b195ecc2a" + integrity sha512-0taR6AJDb+eLOBTEMc1nfX2fI1hgRF9M+Hmv+wwGrxfBu/MkASk6fmR9B8MDw9hPHIqGVUkTVizjOh50O7nIKg== + +sass-embedded-linux-x64@1.69.5: + version "1.69.5" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.69.5.tgz#3d490f520200d596b2b6072d6d3f4460b7114241" + integrity sha512-gN9yLTbKC0hUHukx4mdRs4V39WD719PM2GhWQBUA+3Z8qr9ywywi7LiU2atWrKESRF34V+eqF9lYiYVQxtTHZw== + +sass-embedded-win32-ia32@1.69.5: + version "1.69.5" + resolved "https://registry.yarnpkg.com/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.69.5.tgz#e84a053d25aec1176fac485bee65a384f39dfa9e" + integrity sha512-9OgSaufHP53b33gaH1Y5NZ/Im3druCHIQvLUEqJBCFuOzly47g/hZGrO+dBDiWgYGYKbSYI7Z4/PBtQoK5Vkxg== + +sass-embedded-win32-x64@1.69.5: + version "1.69.5" + resolved "https://registry.yarnpkg.com/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.69.5.tgz#8d803e99cccc0e8105dde50e49a2fd7839e360ec" + integrity sha512-p1PsOJnpwXdPfiRbX6QdRa4PnL2QXPpIRy8fkeAZpQFYZ278ZIlwemC2MukKMVLcE3iQ5lBulbC8IYm91rod6Q== + +sass-embedded@^1.69.5: + version "1.69.5" + resolved "https://registry.yarnpkg.com/sass-embedded/-/sass-embedded-1.69.5.tgz#ae217d4b17b0fb07e5ed146917c9c9de0c4383c6" + integrity sha512-0YNcRcbSpgGd4AnE+mm3a3g4S97puFLIZ0cYJgbwdD4iGz/hiOzE+yh72XS+u1LMhE+pQfNeC9MNnRsc8n1yRg== + dependencies: + "@bufbuild/protobuf" "^1.0.0" + buffer-builder "^0.2.0" + immutable "^4.0.0" + rxjs "^7.4.0" + supports-color "^8.1.1" + varint "^6.0.0" + optionalDependencies: + sass-embedded-darwin-arm64 "1.69.5" + sass-embedded-darwin-x64 "1.69.5" + sass-embedded-linux-arm "1.69.5" + sass-embedded-linux-arm64 "1.69.5" + sass-embedded-linux-ia32 "1.69.5" + sass-embedded-linux-x64 "1.69.5" + sass-embedded-win32-ia32 "1.69.5" + sass-embedded-win32-x64 "1.69.5" + +sass-loader@^10.5.1: + version "10.5.1" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.5.1.tgz#4cfb9cd17e09afc7d8787fdb57d665254c3aadcb" + integrity sha512-P8BGIW6OxYLJWaWG8DROibc98Uw/B90oHPYOjPQ5/tF572OTTwkhxSxpaQzD5lYam36zQd0cxjh24b4rcdNIZQ== dependencies: klona "^2.0.4" loader-utils "^2.0.0" @@ -27195,14 +27027,6 @@ screenfull@^5.0.0: resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.0.0.tgz#5c2010c0e84fd4157bf852877698f90b8cbe96f6" integrity sha512-yShzhaIoE9OtOhWVyBBffA6V98CDCoyHTsp8228blmqYy1Z5bddzE/4FPiJKlr8DVR4VBiiUyfPzIQPIYDkeMA== -scss-tokenizer@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz#1058400ee7d814d71049c29923d2b25e61dc026c" - integrity sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw== - dependencies: - js-base64 "^2.4.9" - source-map "^0.7.3" - secure-json-parse@^2.4.0: version "2.6.0" resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.6.0.tgz#95d89f84adf32d76ff7800e68a673b129fe918b0" @@ -27703,24 +27527,6 @@ sockjs@^0.3.24: uuid "^8.3.2" websocket-driver "^0.7.4" -socks-proxy-agent@^6.0.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87" - integrity sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew== - dependencies: - agent-base "^6.0.2" - debug "^4.3.1" - socks "^2.6.1" - -socks-proxy-agent@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" - integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== - dependencies: - agent-base "^6.0.2" - debug "^4.3.3" - socks "^2.6.2" - socks-proxy-agent@^8.0.1, socks-proxy-agent@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz#5acbd7be7baf18c46a3f293a840109a430a640ad" @@ -27730,7 +27536,7 @@ socks-proxy-agent@^8.0.1, socks-proxy-agent@^8.0.2: debug "^4.3.4" socks "^2.7.1" -socks@^2.6.1, socks@^2.6.2, socks@^2.7.1: +socks@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== @@ -28064,20 +27870,13 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" -ssri@^8.0.0, ssri@^8.0.1: +ssri@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== dependencies: minipass "^3.1.1" -ssri@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" - integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== - dependencies: - minipass "^3.1.1" - stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -28186,13 +27985,6 @@ stats-lite@^2.2.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -stdout-stream@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b" - integrity sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s= - dependencies: - readable-stream "^2.0.1" - store2@^2.12.0: version "2.12.0" resolved "https://registry.yarnpkg.com/store2/-/store2-2.12.0.tgz#e1f1b7e1a59b6083b2596a8d067f6ee88fd4d3cf" @@ -29322,11 +29114,6 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.1.tgz#a9fd8b0394b0ae8fff82e0633a0a36ccad5b5f86" integrity sha1-qf2LA5Swro//guBjOgo2zK1bX4Y= -"true-case-path@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" - integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== - ts-algebra@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/ts-algebra/-/ts-algebra-1.2.0.tgz#f91c481207a770f0d14d055c376cbee040afdfc9" @@ -29771,13 +29558,6 @@ unique-filename@^1.1.1: dependencies: unique-slug "^2.0.0" -unique-filename@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" - integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== - dependencies: - unique-slug "^3.0.0" - unique-filename@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" @@ -29792,13 +29572,6 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" -unique-slug@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" - integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== - dependencies: - imurmurhash "^0.1.4" - unique-slug@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" @@ -30239,6 +30012,11 @@ variable-diff@1.1.0: chalk "^1.1.1" object-assign "^4.0.1" +varint@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" + integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -31147,7 +30925,7 @@ which@^1.2.9, which@^1.3.1: dependencies: isexe "^2.0.0" -which@^2.0.1, which@^2.0.2: +which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== @@ -31161,7 +30939,7 @@ which@^4.0.0: dependencies: isexe "^3.1.1" -wide-align@^1.1.2, wide-align@^1.1.5: +wide-align@^1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== From 471eb3b600d384580685a57860fda084d4b18f56 Mon Sep 17 00:00:00 2001 From: Jonathan Budzenski Date: Thu, 28 Dec 2023 11:07:49 -0600 Subject: [PATCH 012/323] fix yarn.lock --- yarn.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index fd4b64bed4be9..5dee6f8471c99 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14566,7 +14566,7 @@ debug@3.X, debug@^3.0.0, debug@^3.1.0, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -21358,7 +21358,7 @@ lodash.uniq@4.5.0, lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@>4.17.4, lodash@^4.0.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: +lodash@>4.17.4, lodash@^4.0.1, lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== From 079db3e7ebcbed934c39d0efe67821317fe9eaec Mon Sep 17 00:00:00 2001 From: Kurt Date: Thu, 28 Dec 2023 12:15:24 -0500 Subject: [PATCH 013/323] Upgrading axios 1.6.x versions (#174002) ## Summary Upgrading patch version of `axios` 1.6.0 -> 1.6.3 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 2b58cae82ad6d..8cbf3288874ed 100644 --- a/package.json +++ b/package.json @@ -888,7 +888,7 @@ "archiver": "^5.3.1", "async": "^3.2.3", "aws4": "^1.12.0", - "axios": "^1.6.0", + "axios": "^1.6.3", "base64-js": "^1.3.1", "bitmap-sdf": "^1.0.3", "blurhash": "^2.0.1", diff --git a/yarn.lock b/yarn.lock index 5dee6f8471c99..784e60fc139bb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11773,10 +11773,10 @@ axios@^0.26.0: dependencies: follow-redirects "^1.14.8" -axios@^1.3.4, axios@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.0.tgz#f1e5292f26b2fd5c2e66876adc5b06cdbd7d2102" - integrity sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg== +axios@^1.3.4, axios@^1.6.0, axios@^1.6.3: + version "1.6.3" + resolved "https://registry.npmjs.org/axios/-/axios-1.6.3.tgz#7f50f23b3aa246eff43c54834272346c396613f4" + integrity sha512-fWyNdeawGam70jXSVlKl+SUNVcL6j6W79CuSIPfi6HnDUmSCH6gyUys/HrqHeA/wU0Az41rRgean494d0Jb+ww== dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" From 9ca9f73bf03b2e93c2bd805b8dba28f5096a6eee Mon Sep 17 00:00:00 2001 From: Ersin Erdal <92688503+ersin-erdal@users.noreply.github.com> Date: Thu, 28 Dec 2023 19:31:39 +0100 Subject: [PATCH 014/323] Uncheck "Exclude matches from previous runs" by default (#174019) Resolves: #171790 Sets default value of the "Exclude matches from previous runs" checkbox' on Es Query rule type unchecked. --- .../public/rule_types/es_query/constants.ts | 2 +- .../es_query/expression/es_query_expression.test.tsx | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/constants.ts b/x-pack/plugins/stack_alerts/public/rule_types/es_query/constants.ts index 690387d054939..db579f4813788 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/es_query/constants.ts +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/constants.ts @@ -21,7 +21,7 @@ export const DEFAULT_VALUES = { AGGREGATION_TYPE: 'count', TERM_SIZE: 5, GROUP_BY: 'all', - EXCLUDE_PREVIOUS_HITS: true, + EXCLUDE_PREVIOUS_HITS: false, CAN_SELECT_MULTI_TERMS: true, SOURCE_FIELDS: [], }; diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/es_query_expression.test.tsx b/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/es_query_expression.test.tsx index cbc1c60598afc..77a0f17651574 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/es_query_expression.test.tsx +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/es_query_expression.test.tsx @@ -206,6 +206,18 @@ describe('EsQueryRuleTypeExpression', () => { expect(testQueryButton.prop('disabled')).toBe(true); }); + test('should show excludeHitsFromPreviousRun unchecked by default', async () => { + const wrapper = await setup({ + ...defaultEsQueryExpressionParams, + excludeHitsFromPreviousRun: undefined, + } as unknown as EsQueryRuleParams); + const excludeMatchesCheckBox = wrapper.find( + 'EuiCheckbox[data-test-subj="excludeHitsFromPreviousRunExpression"]' + ); + expect(excludeMatchesCheckBox.exists()).toBeTruthy(); + expect(excludeMatchesCheckBox.prop('checked')).toBe(false); + }); + test('should show success message if ungrouped Test Query is successful', async () => { const searchResponseMock$ = of({ rawResponse: { From d67c0eff2f304075cf57fd5e2c466e565e098426 Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Thu, 28 Dec 2023 21:52:11 +0100 Subject: [PATCH 015/323] [DataViews] Unskip and stabilize functional tests of dataviews management (#173900) Improving data view related functional test code to reduce flakiness --- .../data_view_editor_flyout_content.tsx | 2 + .../components/form_fields/title_field.tsx | 1 + .../public/data_view_editor_service.ts | 10 ++-- .../data_views/_data_view_create_delete.ts | 3 +- .../data_views/_index_pattern_filter.ts | 5 +- .../management/data_views/_runtime_fields.ts | 3 ++ test/functional/page_objects/settings_page.ts | 48 ++++++++++++++----- .../data_views/_data_view_create_delete.ts | 3 +- .../data_views/_index_pattern_filter.ts | 5 +- .../management/data_views/_runtime_fields.ts | 8 ++-- 10 files changed, 62 insertions(+), 26 deletions(-) diff --git a/src/plugins/data_view_editor/public/components/data_view_editor_flyout_content.tsx b/src/plugins/data_view_editor/public/components/data_view_editor_flyout_content.tsx index 73432737f9321..d24a77d01a6e4 100644 --- a/src/plugins/data_view_editor/public/components/data_view_editor_flyout_content.tsx +++ b/src/plugins/data_view_editor/public/components/data_view_editor_flyout_content.tsx @@ -257,6 +257,8 @@ const IndexPatternEditorFlyoutContentComponent = ({ className="indexPatternEditor__form" error={form.getErrors()} isInvalid={form.isSubmitted && !form.isValid && form.getErrors().length} + data-validation-error={form.getErrors().length ? '1' : '0'} + data-test-subj="indexPatternEditorForm" > {indexPatternTypeSelect} diff --git a/src/plugins/data_view_editor/public/components/form_fields/title_field.tsx b/src/plugins/data_view_editor/public/components/form_fields/title_field.tsx index 3824a6cea5258..5428f5455aeea 100644 --- a/src/plugins/data_view_editor/public/components/form_fields/title_field.tsx +++ b/src/plugins/data_view_editor/public/components/form_fields/title_field.tsx @@ -197,6 +197,7 @@ export const TitleField = ({ data-test-subj="createIndexPatternTitleInput" append={} placeholder="example-*" + data-is-validating={field.isValidating ? '1' : '0'} /> ); diff --git a/src/plugins/data_view_editor/public/data_view_editor_service.ts b/src/plugins/data_view_editor/public/data_view_editor_service.ts index dcc50567c4b44..52ac001b1f0a4 100644 --- a/src/plugins/data_view_editor/public/data_view_editor_service.ts +++ b/src/plugins/data_view_editor/public/data_view_editor_service.ts @@ -308,8 +308,12 @@ export class DataViewEditorService { getFieldsOptions: GetFieldsOptions, requireTimestampField: boolean ) => { - const fields = await ensureMinimumTime(this.dataViews.getFieldsForWildcard(getFieldsOptions)); - return extractTimeFields(fields as DataViewField[], requireTimestampField); + try { + const fields = await ensureMinimumTime(this.dataViews.getFieldsForWildcard(getFieldsOptions)); + return extractTimeFields(fields as DataViewField[], requireTimestampField); + } catch (e) { + return []; + } }; private getTimestampOptionsForWildcardCached = async ( @@ -374,7 +378,7 @@ export class DataViewEditorService { ); // necessary to get new observable value if the field hasn't changed - this.loadIndices(); + await this.loadIndices(); // Wait until we have fetched the indices. // The result will then be sent to the field validator(s) (when calling await provider();); diff --git a/test/functional/apps/management/data_views/_data_view_create_delete.ts b/test/functional/apps/management/data_views/_data_view_create_delete.ts index 245ac88606b50..e3bc2240887ad 100644 --- a/test/functional/apps/management/data_views/_data_view_create_delete.ts +++ b/test/functional/apps/management/data_views/_data_view_create_delete.ts @@ -187,8 +187,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); }); - // FLAKY: https://github.com/elastic/kibana/issues/173625 - describe.skip('index pattern edit', function () { + describe('index pattern edit', function () { it('should update field list', async function () { await PageObjects.settings.editIndexPattern( 'kibana_sample_data_flights', diff --git a/test/functional/apps/management/data_views/_index_pattern_filter.ts b/test/functional/apps/management/data_views/_index_pattern_filter.ts index 5c0dc5d0284f0..81ff2b450755d 100644 --- a/test/functional/apps/management/data_views/_index_pattern_filter.ts +++ b/test/functional/apps/management/data_views/_index_pattern_filter.ts @@ -24,13 +24,16 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.settings.clickKibanaIndexPatterns(); }); + after(async function () { + await kibanaServer.savedObjects.cleanStandardList(); + }); + beforeEach(async function () { await PageObjects.settings.createIndexPattern('logstash-*'); }); afterEach(async function () { await PageObjects.settings.removeIndexPattern(); - await kibanaServer.savedObjects.cleanStandardList(); }); it('should filter indexed fields by type', async function () { diff --git a/test/functional/apps/management/data_views/_runtime_fields.ts b/test/functional/apps/management/data_views/_runtime_fields.ts index d6aca3a88c925..cf0fb7f498974 100644 --- a/test/functional/apps/management/data_views/_runtime_fields.ts +++ b/test/functional/apps/management/data_views/_runtime_fields.ts @@ -61,6 +61,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('should modify runtime field', async function () { await PageObjects.settings.filterField(fieldName); await testSubjects.click('editFieldFormat'); + await retry.try(async () => { + await testSubjects.existOrFail('flyoutTitle'); + }); await PageObjects.settings.setFieldType('Long'); await PageObjects.settings.setFieldScriptWithoutToggle('emit(6);'); await PageObjects.settings.toggleRow('formatRow'); diff --git a/test/functional/page_objects/settings_page.ts b/test/functional/page_objects/settings_page.ts index 5172d7d7d0ff4..cd650086e9e1a 100644 --- a/test/functional/page_objects/settings_page.ts +++ b/test/functional/page_objects/settings_page.ts @@ -177,9 +177,20 @@ export class SettingsPageObject extends FtrService { async selectTimeFieldOption(selection: string) { // open dropdown const timefield = await this.getTimeFieldNameField(); - await timefield.click(); - await this.browser.pressKeys(selection); - await this.browser.pressKeys(this.browser.keys.TAB); + const prevValue = await timefield.getAttribute('value'); + const enabled = await timefield.isEnabled(); + + if (prevValue === selection || !enabled) { + return; + } + await this.retry.waitFor('time field dropdown have the right value', async () => { + await timefield.click(); + await timefield.type(this.browser.keys.DELETE, { charByChar: true }); + await this.browser.pressKeys(selection); + await this.browser.pressKeys(this.browser.keys.TAB); + const value = await timefield.getAttribute('value'); + return value === selection; + }); } async getTimeFieldOption(selection: string) { @@ -192,7 +203,7 @@ export class SettingsPageObject extends FtrService { async setNameField(dataViewName: string) { const field = await this.getNameField(); - await field.clearValue(); + await field.clearValueWithKeyboard(); await field.type(dataViewName); } @@ -486,7 +497,7 @@ export class SettingsPageObject extends FtrService { async allowHiddenClick() { await this.testSubjects.click('toggleAdvancedSetting'); const allowHiddenField = await this.testSubjects.find('allowHiddenField'); - (await allowHiddenField.findByTagName('button')).click(); + await (await allowHiddenField.findByTagName('button')).click(); } async createIndexPattern( @@ -567,19 +578,26 @@ export class SettingsPageObject extends FtrService { throw new Error('No Data View name provided for edit'); } - this.clickEditIndexButton(); + await this.clickEditIndexButton(); await this.header.waitUntilLoadingHasFinished(); await this.retry.try(async () => { + if (dataViewName) { + await this.setNameField(dataViewName); + } await this.setIndexPatternField(indexPatternName); + await this.header.waitUntilLoadingHasFinished(); + if (timefield) { + await this.selectTimeFieldOption(timefield); + } + const indexPatternSaveBtn = await this.getSaveIndexPatternButton(); + await indexPatternSaveBtn.click(); + + const form = await this.testSubjects.findAll('indexPatternEditorForm'); + const hasValidationErrors = + form.length !== 0 && (await form[0].getAttribute('data-validation-error')) === '1'; + expect(hasValidationErrors).to.eql(false); }); - if (dataViewName) { - await this.setNameField(dataViewName); - } - if (timefield) { - await this.selectTimeFieldOption(timefield); - } - await (await this.getSaveIndexPatternButton()).click(); if (errorCheck) { await this.retry.try(async () => { @@ -653,6 +671,10 @@ export class SettingsPageObject extends FtrService { const currentName = await field.getAttribute('value'); this.log.debug(`setIndexPatternField set to ${currentName}`); expect(currentName).to.eql(indexPatternName); + await this.retry.waitFor('validating the given index pattern should be finished', async () => { + const isValidating = await field.getAttribute('data-is-validating'); + return isValidating === '0'; + }); } async getCreateIndexPatternGoToStep2Button() { diff --git a/x-pack/test_serverless/functional/test_suites/common/management/data_views/_data_view_create_delete.ts b/x-pack/test_serverless/functional/test_suites/common/management/data_views/_data_view_create_delete.ts index f8309602d87ac..ca7bc4bc55569 100644 --- a/x-pack/test_serverless/functional/test_suites/common/management/data_views/_data_view_create_delete.ts +++ b/x-pack/test_serverless/functional/test_suites/common/management/data_views/_data_view_create_delete.ts @@ -198,8 +198,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); }); - // FLAKY: https://github.com/elastic/kibana/issues/173564 - describe.skip('index pattern edit', function () { + describe('index pattern edit', function () { it('should update field list', async function () { await PageObjects.settings.editIndexPattern( 'kibana_sample_data_flights', diff --git a/x-pack/test_serverless/functional/test_suites/common/management/data_views/_index_pattern_filter.ts b/x-pack/test_serverless/functional/test_suites/common/management/data_views/_index_pattern_filter.ts index 9da55f122114c..e5d51f55aa7c1 100644 --- a/x-pack/test_serverless/functional/test_suites/common/management/data_views/_index_pattern_filter.ts +++ b/x-pack/test_serverless/functional/test_suites/common/management/data_views/_index_pattern_filter.ts @@ -24,13 +24,16 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await testSubjects.click('app-card-dataViews'); }); + after(async function () { + await kibanaServer.savedObjects.cleanStandardList(); + }); + beforeEach(async function () { await PageObjects.settings.createIndexPattern('logstash-*'); }); afterEach(async function () { await PageObjects.settings.removeIndexPattern(); - await kibanaServer.savedObjects.cleanStandardList(); }); it('should filter indexed fields by type', async function () { diff --git a/x-pack/test_serverless/functional/test_suites/common/management/data_views/_runtime_fields.ts b/x-pack/test_serverless/functional/test_suites/common/management/data_views/_runtime_fields.ts index 47af432c0dad0..f900329539e69 100644 --- a/x-pack/test_serverless/functional/test_suites/common/management/data_views/_runtime_fields.ts +++ b/x-pack/test_serverless/functional/test_suites/common/management/data_views/_runtime_fields.ts @@ -16,10 +16,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['settings', 'common']); const testSubjects = getService('testSubjects'); - // Failing: See https://github.com/elastic/kibana/issues/173580 - // FLAKY: https://github.com/elastic/kibana/issues/173558 - // FLAKY: https://github.com/elastic/kibana/issues/173572 - describe.skip('runtime fields', function () { + describe('runtime fields', function () { this.tags(['skipFirefox']); before(async function () { @@ -64,6 +61,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('should modify runtime field', async function () { await PageObjects.settings.filterField(fieldName); await testSubjects.click('editFieldFormat'); + await retry.try(async () => { + await testSubjects.existOrFail('flyoutTitle'); + }); await PageObjects.settings.setFieldType('Long'); await PageObjects.settings.setFieldScriptWithoutToggle('emit(6);'); await PageObjects.settings.toggleRow('formatRow'); From c06a6a1a22ec8faffbf9fda98ff01be118cc1485 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20C=C3=B4t=C3=A9?= Date: Thu, 28 Dec 2023 16:10:26 -0500 Subject: [PATCH 016/323] Cancel EQL and ES|QL queries when an alerting rule times out from running (#171348) ## Problem Statement I noticed when investigating OOM errors in serverless that we have some large EQL queries being returned by Elasticsearch alongside a series of logs mentioning the rule execution timed out. I later on noticed that EQL queries are not cancelled in that scenario, causing task cancellation to not work properly and have Kibana handle responses of tasks it stopped running. ## Solution To solve this issue, I'm enhancing the ES Client provided to rule type executors so that it makes EQL (and also ES|QL while I'm in the area) cancel queries whenever the rule execution times out by providing the `abortController`'s signal that we trigger when a rule times out. Additional changes: - Adding total search duration and es search duration metrics to EQL queries. - Adding total search duration metrics to ES|QL queries (`took` isn't returned for these types of queries, so we don't know how much ES processing occurred). - Moving some code in the jest test into a function so my additional tests don't add too much code ## To verify 1. Create an ES|QL alerting rule using ES Query rule type 2. Create an EQL rule in security solution - Index pattern: '.kibana-event-log*` - EQL: `process where event.kind == "execute"` 3. Notice rules are running successfully 4. Apply the following diff to your codebase. This diff will abort the queries shortly after they are sent to Elasticsearch. This is the easiest approach to ensure we are passing the signal properly through. Unfortunately it is not easy to write queries that would take a while to run for testing purposes nor was it easy to find a mechanism to flood the queue so the test query would timeout to have a full end to end test.
Click here to expand ``` diff --git a/x-pack/plugins/alerting/server/lib/wrap_scoped_cluster_client.ts b/x-pack/plugins/alerting/server/lib/wrap_scoped_cluster_client.ts index 9ddd22a292b..6ae8e07630e 100644 --- a/x-pack/plugins/alerting/server/lib/wrap_scoped_cluster_client.ts +++ b/x-pack/plugins/alerting/server/lib/wrap_scoped_cluster_client.ts @@ -133,10 +133,15 @@ function getWrappedTransportRequestFn(opts: WrapEsClientOpts) { opts.rule.spaceId } - ${JSON.stringify(params)} - with options ${JSON.stringify(requestOptions)}` ); - const result = (await originalRequestFn.call(opts.esClient.transport, params, { + + const promise = originalRequestFn.call(opts.esClient.transport, params, { ...requestOptions, signal: opts.abortController.signal, - })) as Promise | TransportResult; + }); + + opts.abortController.abort(); + + const result = (await promise) as Promise | TransportResult; const end = Date.now(); const durationMs = end - start; @@ -190,10 +195,16 @@ function getWrappedEqlSearchFn(opts: WrapEsClientOpts) { opts.rule.spaceId } - ${JSON.stringify(params)} - with options ${JSON.stringify(searchOptions)}` ); - const result = (await originalEqlSearch.call(opts.esClient, params, { + const promise = originalEqlSearch.call(opts.esClient, params, { ...searchOptions, signal: opts.abortController.signal, - })) as TransportResult, unknown> | EqlSearchResponse; + }); + + opts.abortController.abort(); + + const result = (await promise) as + | TransportResult, unknown> + | EqlSearchResponse; const end = Date.now(); const durationMs = end - start; ```
5. Restart the Kibana server (if not done automatically) 6. Use the "Run rule" feature in Stack Management to trigger each created rule to run soon. 7. Wait for the rules to run 8. Notice each rule now fails with the following error message: `search has been aborted due to cancelled execution`. I noticed when writing this test plan that the EQL rule marks as success in the framework but if you "View in App" you will see the error message in security solution. --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../lib/wrap_scoped_cluster_client.test.ts | 495 ++++++++++++------ .../server/lib/wrap_scoped_cluster_client.ts | 126 +++++ 2 files changed, 468 insertions(+), 153 deletions(-) diff --git a/x-pack/plugins/alerting/server/lib/wrap_scoped_cluster_client.test.ts b/x-pack/plugins/alerting/server/lib/wrap_scoped_cluster_client.test.ts index 5f5a120252b2a..e1febe893d4d6 100644 --- a/x-pack/plugins/alerting/server/lib/wrap_scoped_cluster_client.test.ts +++ b/x-pack/plugins/alerting/server/lib/wrap_scoped_cluster_client.test.ts @@ -13,6 +13,17 @@ import { createWrappedScopedClusterClientFactory } from './wrap_scoped_cluster_c const esQuery = { body: { query: { bool: { filter: { range: { '@timestamp': { gte: 0 } } } } } }, }; +const eqlQuery = { + index: 'foo', + query: 'process where process.name == "regsvr32.exe"', +}; +const esqlQueryRequest = { + method: 'POST', + path: '/_esql', + body: { + query: 'from .kibana_task_manager', + }, +}; const logger = loggingSystemMock.create().get(); @@ -36,180 +47,358 @@ describe('wrapScopedClusterClient', () => { jest.resetAllMocks(); }); - test('searches with asInternalUser when specified', async () => { - const abortController = new AbortController(); - const scopedClusterClient = elasticsearchServiceMock.createScopedClusterClient(); - const childClient = elasticsearchServiceMock.createElasticsearchClient(); - - scopedClusterClient.asInternalUser.child.mockReturnValue(childClient as unknown as Client); - const asInternalUserWrappedSearchFn = childClient.search; - - const wrappedSearchClient = createWrappedScopedClusterClientFactory({ - scopedClusterClient, - rule, - logger, - abortController, - }).client(); - await wrappedSearchClient.asInternalUser.search(esQuery); - - expect(asInternalUserWrappedSearchFn).toHaveBeenCalledWith(esQuery, { - signal: abortController.signal, + describe('search', () => { + test('uses asInternalUser when specified', async () => { + const { abortController, scopedClusterClient, childClient } = getMockClusterClients(); + + const asInternalUserWrappedSearchFn = childClient.search; + + const wrappedSearchClient = createWrappedScopedClusterClientFactory({ + scopedClusterClient, + rule, + logger, + abortController, + }).client(); + await wrappedSearchClient.asInternalUser.search(esQuery); + + expect(asInternalUserWrappedSearchFn).toHaveBeenCalledWith(esQuery, { + signal: abortController.signal, + }); + expect(scopedClusterClient.asInternalUser.search).not.toHaveBeenCalled(); + expect(scopedClusterClient.asCurrentUser.search).not.toHaveBeenCalled(); }); - expect(scopedClusterClient.asInternalUser.search).not.toHaveBeenCalled(); - expect(scopedClusterClient.asCurrentUser.search).not.toHaveBeenCalled(); - }); - test('searches with asCurrentUser when specified', async () => { - const abortController = new AbortController(); - const scopedClusterClient = elasticsearchServiceMock.createScopedClusterClient(); - const childClient = elasticsearchServiceMock.createElasticsearchClient(); + test('uses asCurrentUser when specified', async () => { + const { abortController, scopedClusterClient, childClient } = getMockClusterClients(true); - scopedClusterClient.asCurrentUser.child.mockReturnValue(childClient as unknown as Client); - const asCurrentUserWrappedSearchFn = childClient.search; - - const wrappedSearchClient = createWrappedScopedClusterClientFactory({ - scopedClusterClient, - rule, - logger, - abortController, - }).client(); - await wrappedSearchClient.asCurrentUser.search(esQuery); - - expect(asCurrentUserWrappedSearchFn).toHaveBeenCalledWith(esQuery, { - signal: abortController.signal, + const asCurrentUserWrappedSearchFn = childClient.search; + + const wrappedSearchClient = createWrappedScopedClusterClientFactory({ + scopedClusterClient, + rule, + logger, + abortController, + }).client(); + await wrappedSearchClient.asCurrentUser.search(esQuery); + + expect(asCurrentUserWrappedSearchFn).toHaveBeenCalledWith(esQuery, { + signal: abortController.signal, + }); + expect(scopedClusterClient.asInternalUser.search).not.toHaveBeenCalled(); + expect(scopedClusterClient.asCurrentUser.search).not.toHaveBeenCalled(); }); - expect(scopedClusterClient.asInternalUser.search).not.toHaveBeenCalled(); - expect(scopedClusterClient.asCurrentUser.search).not.toHaveBeenCalled(); - }); - test('uses search options when specified', async () => { - const abortController = new AbortController(); - const scopedClusterClient = elasticsearchServiceMock.createScopedClusterClient(); - const childClient = elasticsearchServiceMock.createElasticsearchClient(); + test('uses search options when specified', async () => { + const { abortController, scopedClusterClient, childClient } = getMockClusterClients(); + + const asInternalUserWrappedSearchFn = childClient.search; + + const wrappedSearchClient = createWrappedScopedClusterClientFactory({ + scopedClusterClient, + rule, + logger, + abortController, + }).client(); + await wrappedSearchClient.asInternalUser.search(esQuery, { ignore: [404] }); + + expect(asInternalUserWrappedSearchFn).toHaveBeenCalledWith(esQuery, { + ignore: [404], + signal: abortController.signal, + }); + expect(scopedClusterClient.asInternalUser.search).not.toHaveBeenCalled(); + expect(scopedClusterClient.asCurrentUser.search).not.toHaveBeenCalled(); + }); - scopedClusterClient.asInternalUser.child.mockReturnValue(childClient as unknown as Client); - const asInternalUserWrappedSearchFn = childClient.search; - - const wrappedSearchClient = createWrappedScopedClusterClientFactory({ - scopedClusterClient, - rule, - logger, - abortController, - }).client(); - await wrappedSearchClient.asInternalUser.search(esQuery, { ignore: [404] }); - - expect(asInternalUserWrappedSearchFn).toHaveBeenCalledWith(esQuery, { - ignore: [404], - signal: abortController.signal, + test('re-throws error when an error is thrown', async () => { + const { abortController, scopedClusterClient, childClient } = getMockClusterClients(); + + childClient.search.mockRejectedValueOnce(new Error('something went wrong!')); + + const wrappedSearchClient = createWrappedScopedClusterClientFactory({ + scopedClusterClient, + rule, + logger, + abortController, + }).client(); + + await expect( + wrappedSearchClient.asInternalUser.search + ).rejects.toThrowErrorMatchingInlineSnapshot(`"something went wrong!"`); }); - expect(scopedClusterClient.asInternalUser.search).not.toHaveBeenCalled(); - expect(scopedClusterClient.asCurrentUser.search).not.toHaveBeenCalled(); - }); - test('re-throws error when search throws error', async () => { - const abortController = new AbortController(); - const scopedClusterClient = elasticsearchServiceMock.createScopedClusterClient(); - const childClient = elasticsearchServiceMock.createElasticsearchClient(); + test('handles empty search result object', async () => { + const { abortController, scopedClusterClient, childClient } = getMockClusterClients(); - scopedClusterClient.asInternalUser.child.mockReturnValue(childClient as unknown as Client); - const asInternalUserWrappedSearchFn = childClient.search; - - asInternalUserWrappedSearchFn.mockRejectedValueOnce(new Error('something went wrong!')); - const wrappedSearchClient = createWrappedScopedClusterClientFactory({ - scopedClusterClient, - rule, - logger, - abortController, - }).client(); - - await expect( - wrappedSearchClient.asInternalUser.search - ).rejects.toThrowErrorMatchingInlineSnapshot(`"something went wrong!"`); - }); + const asInternalUserWrappedSearchFn = childClient.search; + // @ts-ignore incomplete return type + asInternalUserWrappedSearchFn.mockResolvedValue({}); - test('handles empty search result object', async () => { - const abortController = new AbortController(); - const scopedClusterClient = elasticsearchServiceMock.createScopedClusterClient(); - const childClient = elasticsearchServiceMock.createElasticsearchClient(); + const wrappedSearchClientFactory = createWrappedScopedClusterClientFactory({ + scopedClusterClient, + rule, + logger, + abortController, + }); - scopedClusterClient.asInternalUser.child.mockReturnValue(childClient as unknown as Client); - const asInternalUserWrappedSearchFn = childClient.search; - // @ts-ignore incomplete return type - asInternalUserWrappedSearchFn.mockResolvedValue({}); - - const wrappedSearchClientFactory = createWrappedScopedClusterClientFactory({ - scopedClusterClient, - rule, - logger, - abortController, + const wrappedSearchClient = wrappedSearchClientFactory.client(); + await wrappedSearchClient.asInternalUser.search(esQuery); + + expect(asInternalUserWrappedSearchFn).toHaveBeenCalledTimes(1); + expect(scopedClusterClient.asInternalUser.search).not.toHaveBeenCalled(); + expect(scopedClusterClient.asCurrentUser.search).not.toHaveBeenCalled(); + + const stats = wrappedSearchClientFactory.getMetrics(); + expect(stats.numSearches).toEqual(1); + expect(stats.esSearchDurationMs).toEqual(0); + }); + + test('keeps track of number of queries', async () => { + const { abortController, scopedClusterClient, childClient } = getMockClusterClients(); + + const asInternalUserWrappedSearchFn = childClient.search; + // @ts-ignore incomplete return type + asInternalUserWrappedSearchFn.mockResolvedValue({ took: 333 }); + + const wrappedSearchClientFactory = createWrappedScopedClusterClientFactory({ + scopedClusterClient, + rule, + logger, + abortController, + }); + const wrappedSearchClient = wrappedSearchClientFactory.client(); + await wrappedSearchClient.asInternalUser.search(esQuery); + await wrappedSearchClient.asInternalUser.search(esQuery); + await wrappedSearchClient.asInternalUser.search(esQuery); + + expect(asInternalUserWrappedSearchFn).toHaveBeenCalledTimes(3); + expect(scopedClusterClient.asInternalUser.search).not.toHaveBeenCalled(); + expect(scopedClusterClient.asCurrentUser.search).not.toHaveBeenCalled(); + + const stats = wrappedSearchClientFactory.getMetrics(); + expect(stats.numSearches).toEqual(3); + expect(stats.esSearchDurationMs).toEqual(999); + + expect(logger.debug).toHaveBeenCalledWith( + `executing query for rule .test-rule-type:abcdefg in space my-space - {\"body\":{\"query\":{\"bool\":{\"filter\":{\"range\":{\"@timestamp\":{\"gte\":0}}}}}}} - with options {}` + ); }); - const wrappedSearchClient = wrappedSearchClientFactory.client(); - await wrappedSearchClient.asInternalUser.search(esQuery); + test('throws error when search throws abort error', async () => { + const { abortController, scopedClusterClient, childClient } = getMockClusterClients(); - expect(asInternalUserWrappedSearchFn).toHaveBeenCalledTimes(1); - expect(scopedClusterClient.asInternalUser.search).not.toHaveBeenCalled(); - expect(scopedClusterClient.asCurrentUser.search).not.toHaveBeenCalled(); + abortController.abort(); + childClient.search.mockRejectedValueOnce(new Error('Request has been aborted by the user')); - const stats = wrappedSearchClientFactory.getMetrics(); - expect(stats.numSearches).toEqual(1); - expect(stats.esSearchDurationMs).toEqual(0); + const abortableSearchClient = createWrappedScopedClusterClientFactory({ + scopedClusterClient, + rule, + logger, + abortController, + }).client(); + + await expect( + abortableSearchClient.asInternalUser.search + ).rejects.toThrowErrorMatchingInlineSnapshot( + `"Search has been aborted due to cancelled execution"` + ); + }); }); - test('keeps track of number of queries', async () => { - const abortController = new AbortController(); - const scopedClusterClient = elasticsearchServiceMock.createScopedClusterClient(); - const childClient = elasticsearchServiceMock.createElasticsearchClient(); + describe('eql.search', () => { + test('re-throws error when an error is thrown', async () => { + const { abortController, scopedClusterClient, childClient } = getMockClusterClients(); - scopedClusterClient.asInternalUser.child.mockReturnValue(childClient as unknown as Client); - const asInternalUserWrappedSearchFn = childClient.search; - // @ts-ignore incomplete return type - asInternalUserWrappedSearchFn.mockResolvedValue({ took: 333 }); - - const wrappedSearchClientFactory = createWrappedScopedClusterClientFactory({ - scopedClusterClient, - rule, - logger, - abortController, + childClient.eql.search.mockRejectedValueOnce(new Error('something went wrong!')); + + const wrappedSearchClient = createWrappedScopedClusterClientFactory({ + scopedClusterClient, + rule, + logger, + abortController, + }).client(); + + await expect( + wrappedSearchClient.asInternalUser.eql.search + ).rejects.toThrowErrorMatchingInlineSnapshot(`"something went wrong!"`); + }); + + test('keeps track of number of queries', async () => { + const { abortController, scopedClusterClient, childClient } = getMockClusterClients(); + + const asInternalUserWrappedEqlSearchFn = childClient.eql.search; + // @ts-ignore incomplete return type + asInternalUserWrappedEqlSearchFn.mockResolvedValue({ took: 333 }); + + const wrappedSearchClientFactory = createWrappedScopedClusterClientFactory({ + scopedClusterClient, + rule, + logger, + abortController, + }); + const wrappedSearchClient = wrappedSearchClientFactory.client(); + await wrappedSearchClient.asInternalUser.eql.search(eqlQuery); + await wrappedSearchClient.asInternalUser.eql.search(eqlQuery); + await wrappedSearchClient.asInternalUser.eql.search(eqlQuery); + + expect(asInternalUserWrappedEqlSearchFn).toHaveBeenCalledTimes(3); + expect(scopedClusterClient.asInternalUser.eql.search).not.toHaveBeenCalled(); + expect(scopedClusterClient.asCurrentUser.eql.search).not.toHaveBeenCalled(); + + const stats = wrappedSearchClientFactory.getMetrics(); + expect(stats.numSearches).toEqual(3); + expect(stats.esSearchDurationMs).toEqual(999); + + expect(logger.debug).toHaveBeenCalledWith( + `executing eql query for rule .test-rule-type:abcdefg in space my-space - {\"index\":\"foo\",\"query\":\"process where process.name == \\\"regsvr32.exe\\\"\"} - with options {}` + ); + }); + + test('throws error when eql search throws abort error', async () => { + const { abortController, scopedClusterClient, childClient } = getMockClusterClients(); + + abortController.abort(); + childClient.eql.search.mockRejectedValueOnce( + new Error('Request has been aborted by the user') + ); + + const abortableSearchClient = createWrappedScopedClusterClientFactory({ + scopedClusterClient, + rule, + logger, + abortController, + }).client(); + + await expect( + abortableSearchClient.asInternalUser.eql.search + ).rejects.toThrowErrorMatchingInlineSnapshot( + `"EQL search has been aborted due to cancelled execution"` + ); }); - const wrappedSearchClient = wrappedSearchClientFactory.client(); - await wrappedSearchClient.asInternalUser.search(esQuery); - await wrappedSearchClient.asInternalUser.search(esQuery); - await wrappedSearchClient.asInternalUser.search(esQuery); - - expect(asInternalUserWrappedSearchFn).toHaveBeenCalledTimes(3); - expect(scopedClusterClient.asInternalUser.search).not.toHaveBeenCalled(); - expect(scopedClusterClient.asCurrentUser.search).not.toHaveBeenCalled(); - - const stats = wrappedSearchClientFactory.getMetrics(); - expect(stats.numSearches).toEqual(3); - expect(stats.esSearchDurationMs).toEqual(999); - - expect(logger.debug).toHaveBeenCalledWith( - `executing query for rule .test-rule-type:abcdefg in space my-space - {\"body\":{\"query\":{\"bool\":{\"filter\":{\"range\":{\"@timestamp\":{\"gte\":0}}}}}}} - with options {}` - ); }); - test('throws error when search throws abort error', async () => { - const abortController = new AbortController(); - abortController.abort(); - const scopedClusterClient = elasticsearchServiceMock.createScopedClusterClient(); - const childClient = elasticsearchServiceMock.createElasticsearchClient(); + describe('transport.request', () => { + describe('ES|QL', () => { + test('re-throws error when an error is thrown', async () => { + const { abortController, scopedClusterClient, childClient } = getMockClusterClients(); + + childClient.transport.request.mockRejectedValueOnce(new Error('something went wrong!')); + + const wrappedSearchClient = createWrappedScopedClusterClientFactory({ + scopedClusterClient, + rule, + logger, + abortController, + }).client(); + + await expect( + wrappedSearchClient.asInternalUser.transport.request({ method: 'POST', path: '/_esql' }) + ).rejects.toThrowErrorMatchingInlineSnapshot(`"something went wrong!"`); + }); + + test('keeps track of number of queries', async () => { + const { abortController, scopedClusterClient, childClient } = getMockClusterClients(); + + const asInternalUserWrappedRequestFn = childClient.transport.request; + // @ts-ignore incomplete return type + asInternalUserWrappedRequestFn.mockResolvedValue({}); + + const wrappedSearchClientFactory = createWrappedScopedClusterClientFactory({ + scopedClusterClient, + rule, + logger, + abortController, + }); + const wrappedSearchClient = wrappedSearchClientFactory.client(); + await wrappedSearchClient.asInternalUser.transport.request(esqlQueryRequest); + await wrappedSearchClient.asInternalUser.transport.request(esqlQueryRequest); + await wrappedSearchClient.asInternalUser.transport.request(esqlQueryRequest); + + expect(asInternalUserWrappedRequestFn).toHaveBeenCalledTimes(3); + expect(scopedClusterClient.asInternalUser.transport.request).not.toHaveBeenCalled(); + expect(scopedClusterClient.asCurrentUser.transport.request).not.toHaveBeenCalled(); + + const stats = wrappedSearchClientFactory.getMetrics(); + expect(stats.numSearches).toEqual(3); + expect(stats.totalSearchDurationMs).toBeGreaterThan(-1); + + expect(logger.debug).toHaveBeenCalledWith( + `executing ES|QL query for rule .test-rule-type:abcdefg in space my-space - {\"method\":\"POST\",\"path\":\"/_esql\",\"body\":{\"query\":\"from .kibana_task_manager\"}} - with options {}` + ); + }); + + test('throws error when es|ql search throws abort error', async () => { + const { abortController, scopedClusterClient, childClient } = getMockClusterClients(); + + abortController.abort(); + childClient.transport.request.mockRejectedValueOnce( + new Error('Request has been aborted by the user') + ); + + const abortableSearchClient = createWrappedScopedClusterClientFactory({ + scopedClusterClient, + rule, + logger, + abortController, + }).client(); + + await expect( + abortableSearchClient.asInternalUser.transport.request({ method: 'POST', path: '/_esql' }) + ).rejects.toThrowErrorMatchingInlineSnapshot( + `"ES|QL search has been aborted due to cancelled execution"` + ); + }); + }); - scopedClusterClient.asInternalUser.child.mockReturnValue(childClient as unknown as Client); - childClient.search.mockRejectedValueOnce(new Error('Request has been aborted by the user')); - - const abortableSearchClient = createWrappedScopedClusterClientFactory({ - scopedClusterClient, - rule, - logger, - abortController, - }).client(); - - await expect( - abortableSearchClient.asInternalUser.search - ).rejects.toThrowErrorMatchingInlineSnapshot( - `"Search has been aborted due to cancelled execution"` - ); + test('re-throws error when an error is thrown', async () => { + const { abortController, scopedClusterClient, childClient } = getMockClusterClients(); + + childClient.transport.request.mockRejectedValueOnce(new Error('something went wrong!')); + + const wrappedSearchClient = createWrappedScopedClusterClientFactory({ + scopedClusterClient, + rule, + logger, + abortController, + }).client(); + + await expect( + wrappedSearchClient.asInternalUser.transport.request({ method: '', path: '' }) + ).rejects.toThrowErrorMatchingInlineSnapshot(`"something went wrong!"`); + }); + + test(`doesn't throw error when non es|ql request throws an error`, async () => { + const { abortController, scopedClusterClient, childClient } = getMockClusterClients(); + + abortController.abort(); + childClient.transport.request.mockRejectedValueOnce(new Error('Some other error')); + + const abortableSearchClient = createWrappedScopedClusterClientFactory({ + scopedClusterClient, + rule, + logger, + abortController, + }).client(); + + await expect( + abortableSearchClient.asInternalUser.transport.request({ + method: 'GET', + path: '/_cat/indices', + }) + ).rejects.toThrowErrorMatchingInlineSnapshot(`"Some other error"`); + }); }); }); + +function getMockClusterClients(asCurrentUser: boolean = false) { + const abortController = new AbortController(); + const scopedClusterClient = elasticsearchServiceMock.createScopedClusterClient(); + const childClient = elasticsearchServiceMock.createElasticsearchClient(); + + if (asCurrentUser) { + scopedClusterClient.asCurrentUser.child.mockReturnValue(childClient as unknown as Client); + } else { + scopedClusterClient.asInternalUser.child.mockReturnValue(childClient as unknown as Client); + } + + return { abortController, scopedClusterClient, childClient }; +} diff --git a/x-pack/plugins/alerting/server/lib/wrap_scoped_cluster_client.ts b/x-pack/plugins/alerting/server/lib/wrap_scoped_cluster_client.ts index e1156d177116c..9ddd22a292b4a 100644 --- a/x-pack/plugins/alerting/server/lib/wrap_scoped_cluster_client.ts +++ b/x-pack/plugins/alerting/server/lib/wrap_scoped_cluster_client.ts @@ -10,15 +10,19 @@ import { TransportResult, TransportRequestOptionsWithMeta, TransportRequestOptionsWithOutMeta, + TransportRequestParams, } from '@elastic/elasticsearch'; import type { SearchRequest, SearchResponse, AggregateName, + EqlSearchRequest, + EqlSearchResponse, } from '@elastic/elasticsearch/lib/api/types'; import type { SearchRequest as SearchRequestWithBody, AggregationsAggregate, + EqlSearchRequest as EqlSearchRequestWithBody, } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import type { IScopedClusterClient, ElasticsearchClient, Logger } from '@kbn/core/server'; import { SearchMetrics, RuleInfo } from './types'; @@ -89,11 +93,133 @@ function wrapEsClient(opts: WrapEsClientOpts): ElasticsearchClient { const wrappedClient = esClient.child({}); // Mutating the functions we want to wrap + wrappedClient.transport.request = getWrappedTransportRequestFn({ + esClient: wrappedClient, + ...rest, + }); wrappedClient.search = getWrappedSearchFn({ esClient: wrappedClient, ...rest }); + wrappedClient.eql.search = getWrappedEqlSearchFn({ esClient: wrappedClient, ...rest }); return wrappedClient; } +function getWrappedTransportRequestFn(opts: WrapEsClientOpts) { + const originalRequestFn = opts.esClient.transport.request; + + // A bunch of overloads to make TypeScript happy + async function request( + params: TransportRequestParams, + options?: TransportRequestOptionsWithOutMeta + ): Promise; + async function request( + params: TransportRequestParams, + options?: TransportRequestOptionsWithMeta + ): Promise>; + async function request( + params: TransportRequestParams, + options?: TransportRequestOptions + ): Promise; + async function request( + params: TransportRequestParams, + options?: TransportRequestOptions + ): Promise> { + // Wrap ES|QL requests with an abort signal + if (params.method === 'POST' && params.path === '/_esql') { + try { + const requestOptions = options ?? {}; + const start = Date.now(); + opts.logger.debug( + `executing ES|QL query for rule ${opts.rule.alertTypeId}:${opts.rule.id} in space ${ + opts.rule.spaceId + } - ${JSON.stringify(params)} - with options ${JSON.stringify(requestOptions)}` + ); + const result = (await originalRequestFn.call(opts.esClient.transport, params, { + ...requestOptions, + signal: opts.abortController.signal, + })) as Promise | TransportResult; + + const end = Date.now(); + const durationMs = end - start; + + opts.logMetricsFn({ esSearchDuration: 0, totalSearchDuration: durationMs }); + return result; + } catch (e) { + if (opts.abortController.signal.aborted) { + throw new Error('ES|QL search has been aborted due to cancelled execution'); + } + throw e; + } + } + + // No wrap + return (await originalRequestFn.call( + opts.esClient.transport, + params, + options + )) as Promise; + } + + return request; +} + +function getWrappedEqlSearchFn(opts: WrapEsClientOpts) { + const originalEqlSearch = opts.esClient.eql.search; + + // A bunch of overloads to make TypeScript happy + async function search( + params: EqlSearchRequest | EqlSearchRequestWithBody, + options?: TransportRequestOptionsWithOutMeta + ): Promise>; + async function search( + params: EqlSearchRequest | EqlSearchRequestWithBody, + options?: TransportRequestOptionsWithMeta + ): Promise, unknown>>; + async function search( + params: EqlSearchRequest | EqlSearchRequestWithBody, + options?: TransportRequestOptions + ): Promise>; + async function search( + params: EqlSearchRequest | EqlSearchRequestWithBody, + options?: TransportRequestOptions + ): Promise | TransportResult, unknown>> { + try { + const searchOptions = options ?? {}; + const start = Date.now(); + opts.logger.debug( + `executing eql query for rule ${opts.rule.alertTypeId}:${opts.rule.id} in space ${ + opts.rule.spaceId + } - ${JSON.stringify(params)} - with options ${JSON.stringify(searchOptions)}` + ); + const result = (await originalEqlSearch.call(opts.esClient, params, { + ...searchOptions, + signal: opts.abortController.signal, + })) as TransportResult, unknown> | EqlSearchResponse; + + const end = Date.now(); + const durationMs = end - start; + + let took: number | undefined = 0; + if (searchOptions.meta) { + // when meta: true, response is TransportResult, unknown> + took = (result as TransportResult, unknown>).body.took; + } else { + // when meta: false, response is EqlSearchResponse + took = (result as EqlSearchResponse).took; + } + + opts.logMetricsFn({ esSearchDuration: took ?? 0, totalSearchDuration: durationMs }); + return result; + } catch (e) { + if (opts.abortController.signal.aborted) { + throw new Error('EQL search has been aborted due to cancelled execution'); + } + throw e; + } + } + + return search; +} + function getWrappedSearchFn(opts: WrapEsClientOpts) { const originalSearch = opts.esClient.search; From 8ab2fabaf176977851e9d1169e5a2b5af4907f18 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Fri, 29 Dec 2023 01:10:27 -0500 Subject: [PATCH 017/323] [api-docs] 2023-12-29 Daily api_docs build (#174052) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/566 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- .../ai_assistant_management_observability.mdx | 2 +- .../ai_assistant_management_selection.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/apm_data_access.mdx | 2 +- api_docs/asset_manager.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_experiments.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/dataset_quality.mdx | 2 +- api_docs/deprecations_by_api.mdx | 2 +- api_docs/deprecations_by_plugin.mdx | 2 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/elastic_assistant.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_annotation_listing.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_actions_types.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- .../kbn_alerting_api_integration_helpers.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerting_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- api_docs/kbn_analytics_collection_utils.mdx | 2 +- ..._analytics_shippers_elastic_v3_browser.mdx | 2 +- ...n_analytics_shippers_elastic_v3_common.mdx | 2 +- ...n_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_analytics_shippers_gainsight.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_bfetch_error.mdx | 2 +- api_docs/kbn_calculate_auto.mdx | 2 +- .../kbn_calculate_width_from_char_count.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_owners.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- .../kbn_content_management_content_editor.mdx | 2 +- ...tent_management_tabbed_table_list_view.mdx | 2 +- ...kbn_content_management_table_list_view.mdx | 2 +- ...tent_management_table_list_view_common.mdx | 2 +- ...ntent_management_table_list_view_table.mdx | 2 +- api_docs/kbn_content_management_utils.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- .../kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- .../kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- .../kbn_core_application_browser_internal.mdx | 2 +- .../kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- .../kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- .../kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- ..._core_custom_branding_browser_internal.mdx | 2 +- ...kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- ...n_core_custom_branding_server_internal.mdx | 2 +- .../kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- ...kbn_core_deprecations_browser_internal.mdx | 2 +- .../kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- .../kbn_core_deprecations_server_internal.mdx | 2 +- .../kbn_core_deprecations_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- ...e_elasticsearch_client_server_internal.mdx | 2 +- ...core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- ...kbn_core_elasticsearch_server_internal.mdx | 2 +- .../kbn_core_elasticsearch_server_mocks.mdx | 2 +- .../kbn_core_environment_server_internal.mdx | 2 +- .../kbn_core_environment_server_mocks.mdx | 2 +- .../kbn_core_execution_context_browser.mdx | 2 +- ...ore_execution_context_browser_internal.mdx | 2 +- ...n_core_execution_context_browser_mocks.mdx | 2 +- .../kbn_core_execution_context_common.mdx | 2 +- .../kbn_core_execution_context_server.mdx | 2 +- ...core_execution_context_server_internal.mdx | 2 +- ...bn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- .../kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- .../kbn_core_http_context_server_mocks.mdx | 2 +- ...re_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- ...bn_core_http_resources_server_internal.mdx | 2 +- .../kbn_core_http_resources_server_mocks.mdx | 2 +- .../kbn_core_http_router_server_internal.mdx | 2 +- .../kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.devdocs.json | 4 + api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- ...kbn_core_integrations_browser_internal.mdx | 2 +- .../kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- ...ore_metrics_collectors_server_internal.mdx | 2 +- ...n_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- ...bn_core_notifications_browser_internal.mdx | 2 +- .../kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- .../kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- .../kbn_core_plugins_contracts_browser.mdx | 2 +- .../kbn_core_plugins_contracts_server.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- .../kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- .../kbn_core_saved_objects_api_browser.mdx | 2 +- .../kbn_core_saved_objects_api_server.mdx | 2 +- ...bn_core_saved_objects_api_server_mocks.mdx | 2 +- ...ore_saved_objects_base_server_internal.mdx | 2 +- ...n_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- ...bn_core_saved_objects_browser_internal.mdx | 2 +- .../kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- ..._objects_import_export_server_internal.mdx | 2 +- ...ved_objects_import_export_server_mocks.mdx | 2 +- ...aved_objects_migration_server_internal.mdx | 2 +- ...e_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- ...kbn_core_saved_objects_server_internal.mdx | 2 +- .../kbn_core_saved_objects_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- ...core_test_helpers_deprecations_getters.mdx | 2 +- ...n_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- .../kbn_core_test_helpers_model_versions.mdx | 2 +- ...n_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- .../kbn_core_ui_settings_browser_internal.mdx | 2 +- .../kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- .../kbn_core_ui_settings_server_internal.mdx | 2 +- .../kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- .../kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- ...kbn_core_user_settings_server_internal.mdx | 2 +- .../kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_custom_icons.mdx | 2 +- api_docs/kbn_custom_integrations.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_data_service.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_discover_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_agent_utils.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_elastic_assistant_common.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_event_annotation_common.mdx | 2 +- api_docs/kbn_event_annotation_components.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_field_utils.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- .../kbn_ftr_common_functional_services.mdx | 2 +- .../kbn_ftr_common_functional_ui_services.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- .../kbn_language_documentation_popover.mdx | 2 +- api_docs/kbn_lens_embeddable_utils.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_management_cards_navigation.mdx | 2 +- .../kbn_management_settings_application.mdx | 2 +- ...ent_settings_components_field_category.mdx | 2 +- ...gement_settings_components_field_input.mdx | 2 +- ...nagement_settings_components_field_row.mdx | 2 +- ...bn_management_settings_components_form.mdx | 2 +- ...n_management_settings_field_definition.mdx | 2 +- api_docs/kbn_management_settings_ids.mdx | 2 +- ...n_management_settings_section_registry.mdx | 2 +- api_docs/kbn_management_settings_types.mdx | 2 +- .../kbn_management_settings_utilities.mdx | 2 +- api_docs/kbn_management_storybook_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_category_validator.mdx | 2 +- api_docs/kbn_ml_chi2test.mdx | 2 +- .../kbn_ml_data_frame_analytics_utils.mdx | 2 +- api_docs/kbn_ml_data_grid.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_date_utils.mdx | 2 +- api_docs/kbn_ml_error_utils.mdx | 2 +- api_docs/kbn_ml_in_memory_table.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_kibana_theme.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_ui_actions.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- .../kbn_observability_alerting_test_data.mdx | 2 +- ...ility_get_padded_alert_time_range_util.mdx | 2 +- api_docs/kbn_openapi_bundler.mdx | 2 +- api_docs/kbn_openapi_generator.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- api_docs/kbn_panel_loader.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_profiling_utils.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_react_kibana_context_common.mdx | 2 +- api_docs/kbn_react_kibana_context_render.mdx | 2 +- api_docs/kbn_react_kibana_context_root.mdx | 2 +- api_docs/kbn_react_kibana_context_styled.mdx | 2 +- api_docs/kbn_react_kibana_context_theme.mdx | 2 +- api_docs/kbn_react_kibana_mount.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_reporting_common.mdx | 2 +- api_docs/kbn_reporting_export_types_csv.mdx | 2 +- .../kbn_reporting_export_types_csv_common.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf.mdx | 2 +- .../kbn_reporting_export_types_pdf_common.mdx | 2 +- api_docs/kbn_reporting_export_types_png.mdx | 2 +- .../kbn_reporting_export_types_png_common.mdx | 2 +- api_docs/kbn_reporting_mocks_server.mdx | 2 +- api_docs/kbn_reporting_public.mdx | 2 +- api_docs/kbn_reporting_server.mdx | 2 +- api_docs/kbn_resizable_layout.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_router_utils.mdx | 2 +- api_docs/kbn_rrule.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_search_api_panels.mdx | 2 +- api_docs/kbn_search_connectors.devdocs.json | 200 ++++++++++++++++++ api_docs/kbn_search_connectors.mdx | 4 +- api_docs/kbn_search_errors.mdx | 2 +- api_docs/kbn_search_index_documents.mdx | 2 +- api_docs/kbn_search_response_warnings.mdx | 2 +- api_docs/kbn_security_plugin_types_common.mdx | 2 +- api_docs/kbn_security_plugin_types_public.mdx | 2 +- api_docs/kbn_security_plugin_types_server.mdx | 2 +- api_docs/kbn_security_solution_features.mdx | 2 +- api_docs/kbn_security_solution_navigation.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- ...kbn_security_solution_storybook_config.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- ...ritysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_grouping.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- ..._securitysolution_io_ts_alerting_types.mdx | 2 +- .../kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- .../kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_serverless_common_settings.mdx | 2 +- .../kbn_serverless_observability_settings.mdx | 2 +- api_docs/kbn_serverless_project_switcher.mdx | 2 +- api_docs/kbn_serverless_search_settings.mdx | 2 +- api_docs/kbn_serverless_security_settings.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- .../kbn_shared_ux_button_exit_full_screen.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_chrome_navigation.mdx | 2 +- api_docs/kbn_shared_ux_error_boundary.mdx | 2 +- api_docs/kbn_shared_ux_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- .../kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- .../kbn_shared_ux_page_analytics_no_data.mdx | 2 +- ...shared_ux_page_analytics_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_no_data.mdx | 2 +- ...bn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_template.mdx | 2 +- ...n_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- .../kbn_shared_ux_page_no_data_config.mdx | 2 +- ...bn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- .../kbn_shared_ux_prompt_no_data_views.mdx | 2 +- ...n_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_text_based_editor.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_triggers_actions_ui_types.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_unified_data_table.mdx | 2 +- api_docs/kbn_unified_doc_viewer.mdx | 2 +- api_docs/kbn_unified_field_list.mdx | 2 +- api_docs/kbn_unsaved_changes_badge.mdx | 2 +- api_docs/kbn_url_state.mdx | 2 +- api_docs/kbn_use_tracked_promise.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kbn_visualization_ui_components.mdx | 2 +- api_docs/kbn_visualization_utils.mdx | 2 +- api_docs/kbn_xstate_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kbn_zod_helpers.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/links.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/log_explorer.mdx | 2 +- api_docs/logs_shared.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/metrics_data_access.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/mock_idp_plugin.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/no_data_page.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/observability_a_i_assistant.mdx | 2 +- api_docs/observability_log_explorer.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/painless_lab.mdx | 2 +- api_docs/plugin_directory.mdx | 6 +- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/profiling_data_access.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/security_solution_ess.mdx | 2 +- api_docs/security_solution_serverless.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/text_based_languages.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_doc_viewer.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/uptime.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 637 files changed, 842 insertions(+), 638 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 5d0be3cc0aa61..15701bd5189e8 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-12-28 +date: 2023-12-29 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 931cf0a419cb3..9e3f7c91b947b 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_observability.mdx b/api_docs/ai_assistant_management_observability.mdx index fbe8204a6432d..adf7822d7d4e6 100644 --- a/api_docs/ai_assistant_management_observability.mdx +++ b/api_docs/ai_assistant_management_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementObservability title: "aiAssistantManagementObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementObservability plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementObservability'] --- import aiAssistantManagementObservabilityObj from './ai_assistant_management_observability.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index 49dc37b6f9c6a..0c3a1bf38ac59 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index d92a6e4efd19a..20c62231432d3 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index ddd6b49a76358..067065556af9a 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index ae8239d8e3be4..c50c2ef475987 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index bfe3f5166e4c8..0314baee05df5 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index 2e23a463c1ef5..18a5c15842868 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-12-28 +date: 2023-12-29 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 c22a7b2c4bb74..f3edb7591fe07 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-12-28 +date: 2023-12-29 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 6fea73ecf91a6..3df7b228e54d7 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-12-28 +date: 2023-12-29 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 792ac5ac2dfa8..a066a091f9986 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index ade922736972a..4a67132c857c9 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index db8a5c038e05b..cd342922d7aae 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-12-28 +date: 2023-12-29 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 e25051c230943..638c1685614e4 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index ea83326036af9..275f3b638baa1 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-12-28 +date: 2023-12-29 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 45944e07aa62c..40c24f42a113e 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-12-28 +date: 2023-12-29 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 1d0e1301e7e87..bdb1e5ad36926 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-12-28 +date: 2023-12-29 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 aa80098d4f642..522931f5840e8 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-12-28 +date: 2023-12-29 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 ecd07147cce6f..88c39d30b90ec 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-12-28 +date: 2023-12-29 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 ce4d83dfb0118..7f247ca55a586 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-12-28 +date: 2023-12-29 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 c3c1b79b40832..0e6e8b46d0908 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-12-28 +date: 2023-12-29 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 a835a9d67596f..76e2225b355b5 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-12-28 +date: 2023-12-29 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 e9f3b00c9683e..b54c08eaffd8c 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-12-28 +date: 2023-12-29 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 3cc5430300624..a420fe4f18dbe 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 8ffd3741df6d6..8ac72f1eb1605 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index ae338cbe05260..7742e681b1d2c 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index da8ebf3ef6f3a..107b1dcd256b9 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 61a2de2812d8d..2b9240b81f08c 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-12-28 +date: 2023-12-29 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 be22f28300695..2f9e849706f00 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-12-28 +date: 2023-12-29 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 ac34526becee0..9f3789d35068d 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 624cc3931b54c..8c0c59efa0cae 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 366494907485d..8d7045bf5610e 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index da781ec9e2446..d738db3bb6b78 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 6013e8ef52389..97f055e8468e7 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index c6ed402efd80d..06c081562a206 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 392abccc43561..3f1491b4dd94e 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index b4b36ae5ec989..79a9c283df900 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-12-28 +date: 2023-12-29 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 829ec8ee9ebc1..3faacb6659fdd 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-12-28 +date: 2023-12-29 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 07d9f62967f99..26bc5f4f96f37 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-12-28 +date: 2023-12-29 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 db9f18ceec1dc..1226255576dcd 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index 39c9d00f53341..5b1a4a1aca000 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 4dfc3260018b3..ebca8d29c6ae7 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 780486acccbca..94707f442c2f7 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-12-28 +date: 2023-12-29 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 3a9128966c021..f482a166288cf 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-12-28 +date: 2023-12-29 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 9f1eb3462408a..1bb0a98ffc0ab 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-12-28 +date: 2023-12-29 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 34dc100d331ec..53ef7bf0bb026 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index e324502ea0ba2..5734085f8661f 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index d97bc6d08379c..4cc60c587ab4a 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 9a9c166a5dc3c..54cc03f1966e0 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index 4220bd0fbc5c8..fafe03d696f1b 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-12-28 +date: 2023-12-29 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 a44f0d9d2c0bf..e7a2341546756 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-12-28 +date: 2023-12-29 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 056990235b47a..33b022173174a 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 7397139fc586e..67fa30627c520 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-12-28 +date: 2023-12-29 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 749ef5a8fb150..3e70cd358334a 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-12-28 +date: 2023-12-29 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 59209450fbcfa..a8a30326aab4a 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-12-28 +date: 2023-12-29 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 c12a2c9bee7c8..0ed472bc16dda 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-12-28 +date: 2023-12-29 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 f0676b8f038ad..78175ac0b81de 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-12-28 +date: 2023-12-29 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 32712edb3e83a..8cba344120224 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-12-28 +date: 2023-12-29 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 2e7c87a6a571d..329c7f89c4e47 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-12-28 +date: 2023-12-29 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 14d271f166d31..ec5a5dd205d31 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-12-28 +date: 2023-12-29 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 1b730e5522c13..5ebfb55f46490 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-12-28 +date: 2023-12-29 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 b2573f307dc5a..9a1608f9a2f0f 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-12-28 +date: 2023-12-29 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 93dc30d655485..83aae91b23487 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-12-28 +date: 2023-12-29 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 13446ba4e3db0..6ea5ff7064000 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-12-28 +date: 2023-12-29 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 e3aaef86bde86..bccd5edc38114 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-12-28 +date: 2023-12-29 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 fc747f943bbfe..4b0a82cbdc218 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-12-28 +date: 2023-12-29 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 3ff17cad1ee83..b9a64c40cc415 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 20219b2aa3304..dab8fffceb64e 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-12-28 +date: 2023-12-29 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 66f20c0e1c76e..04f33b526939b 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-12-28 +date: 2023-12-29 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 d60d01a4873ea..16fd4322e1ddb 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-12-28 +date: 2023-12-29 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 92816d0c07a87..813984f6721dc 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-12-28 +date: 2023-12-29 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 d486a2818af9b..cb93df29b3a65 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-12-28 +date: 2023-12-29 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 ba69412d5b75d..a89f438a1fe3a 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-12-28 +date: 2023-12-29 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 dcfc071b9c3ed..81ff622b729bd 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-12-28 +date: 2023-12-29 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 4d0303bfba0fa..f2002a850b921 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-12-28 +date: 2023-12-29 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 1ca63d2793b20..f7e552f8964fb 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-12-28 +date: 2023-12-29 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 daf4b151cf5bd..26c1f9a390464 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-12-28 +date: 2023-12-29 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 1f7237389cee7..0a9ecc827865e 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-12-28 +date: 2023-12-29 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 b1f8323b98db2..aba512dc17190 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-12-28 +date: 2023-12-29 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 c107e23899e6c..6300019491104 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index d4cb8c7801a6a..2532bfbda2908 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 2c35109a80c52..8ab4ebffc3d45 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 8000ff558d454..4a8f26dd34d9d 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index 3f0d13a800152..7d88bf478f6cf 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 1669fc405a77a..50493c32bb956 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index 801b5660ae842..26d8820c2d784 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 2f2a242c9a412..96a26028a8692 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-12-28 +date: 2023-12-29 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 9469faf78fd5a..7cf99ba8b5419 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-12-28 +date: 2023-12-29 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 646bc61983da9..204d7849f5827 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 278b6f7debef8..1fd73354b059f 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index 7444071bb0799..2bdc06edd1e23 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index 8a67a98e73324..f9b6b949574db 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-12-28 +date: 2023-12-29 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 feafecf8d3f4a..f168f00b35730 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-12-28 +date: 2023-12-29 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 615a180de42b8..7ceb4302de738 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-12-28 +date: 2023-12-29 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 b3b686f4405e2..89f7ab5ec28c8 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-12-28 +date: 2023-12-29 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 05d6ba09b3dbf..0bcec9d9c7da6 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-12-28 +date: 2023-12-29 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 3a1d0cccc734c..75225ec611d91 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-12-28 +date: 2023-12-29 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 719799205b727..fff602be454c7 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-12-28 +date: 2023-12-29 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 fd7c8aa829041..d721bef91c5b2 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-12-28 +date: 2023-12-29 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 f962a2f718520..b56f251debcbc 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-12-28 +date: 2023-12-29 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 e67bfa884e0e8..8a4e6d3b073d1 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_bfetch_error.mdx b/api_docs/kbn_bfetch_error.mdx index fe82aae624f7e..adf4e356c36ae 100644 --- a/api_docs/kbn_bfetch_error.mdx +++ b/api_docs/kbn_bfetch_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-bfetch-error title: "@kbn/bfetch-error" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/bfetch-error plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bfetch-error'] --- import kbnBfetchErrorObj from './kbn_bfetch_error.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index 07e67e37d62e6..669a2d72bd10e 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index f9709210fdd34..f22af62577cca 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 244b83d76d931..b2beb76040952 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-12-28 +date: 2023-12-29 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 9ebfcf6dfd921..b777c8b16b70d 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-12-28 +date: 2023-12-29 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 f7c3291744c60..e76dbf933bc69 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-12-28 +date: 2023-12-29 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 1936c9e29ba1e..2c09b9ac53b70 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-12-28 +date: 2023-12-29 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 118a392c816e2..7b3966477e12c 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-12-28 +date: 2023-12-29 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 460658cc72ba7..675ab179555d1 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-12-28 +date: 2023-12-29 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 e9beac09c779b..8e5e7fb5f4526 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-12-28 +date: 2023-12-29 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 791e08caea35e..25aa77f57e9ab 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-12-28 +date: 2023-12-29 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 ce00c584e5f38..8fdf1ccf67965 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index 305ab59b01806..879067ba7cfbc 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 4bfa51cb54787..81c0a07cdddfe 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-12-28 +date: 2023-12-29 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 b0089d5faecce..a1ac4d7039c73 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-12-28 +date: 2023-12-29 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 ebd08670f274c..a7714b30082b6 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-12-28 +date: 2023-12-29 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 e22608ddc4008..69810ad80319d 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-12-28 +date: 2023-12-29 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 d8be2c1cf83f8..cffeb8e61d298 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-12-28 +date: 2023-12-29 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 5e212ca8040d6..3393f237d9a11 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-12-28 +date: 2023-12-29 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 92a43ff189838..383aee5be00e7 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index 5653f966321f9..17ac626b87865 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index 3cfecced585ed..bc6baa12a6e59 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index d55ec81977899..d5396a3680d65 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 4d32e4633ba48..8b80b82073223 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-12-28 +date: 2023-12-29 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 e76f95a8429e2..39dbc9da3ebe0 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-12-28 +date: 2023-12-29 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 d8f9b5d56bf9c..38112c91342d9 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-12-28 +date: 2023-12-29 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 8a405aefca107..64392b8794471 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-12-28 +date: 2023-12-29 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 87bbabe67350b..2ec96f6a64ac7 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-12-28 +date: 2023-12-29 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 060297c690d4e..ebd81f4d1a028 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-12-28 +date: 2023-12-29 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 d3ae493cd8b51..3b4a05ba7a996 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-12-28 +date: 2023-12-29 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 45a45e18eb54e..fb0d0173a3d51 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-12-28 +date: 2023-12-29 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 f2e5567675fb4..5027ab8ccad0c 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-12-28 +date: 2023-12-29 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 d3baf907e7d70..1918a8bd7722f 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-12-28 +date: 2023-12-29 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 8647e646d1ad2..84e3c54e693b4 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-12-28 +date: 2023-12-29 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 cc1c934638aee..9946bc3511d11 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-12-28 +date: 2023-12-29 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 678751d048fbb..8445208e991ab 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-12-28 +date: 2023-12-29 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 75f3c4c8ceee3..d7a79e7e86a33 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-12-28 +date: 2023-12-29 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 2ab35d0a8f180..01a1f1469e0aa 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-12-28 +date: 2023-12-29 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 8a03096052f61..855190c215433 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-12-28 +date: 2023-12-29 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 a52e0e39c0ae2..8e32ba07a63c6 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-12-28 +date: 2023-12-29 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 e467ba6e826d8..3d196b71d1080 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-12-28 +date: 2023-12-29 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 cf5987cfe5f12..cdb9b55e4a89f 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-12-28 +date: 2023-12-29 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 f19e10e73b17f..6538927218155 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-12-28 +date: 2023-12-29 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 28eb33948a95a..26b352cf8b522 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-12-28 +date: 2023-12-29 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 f557bea4c6acb..02c715b35cdf9 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-12-28 +date: 2023-12-29 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 b76593333fcd0..e55979fec37d0 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-12-28 +date: 2023-12-29 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 8a8be25511dec..4469d5973c3ed 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-12-28 +date: 2023-12-29 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 5298b9f112ea1..dae304c9bfe2f 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-12-28 +date: 2023-12-29 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 05acdc01e4398..7030aa0bd27e3 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-12-28 +date: 2023-12-29 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 8d2ab9df99fbb..722f483567c32 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-12-28 +date: 2023-12-29 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 c598d8707e646..e260e0930fa2c 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-12-28 +date: 2023-12-29 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 f2cec537ce5aa..6d4ab4535fa70 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-12-28 +date: 2023-12-29 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 4bc4ec54afc26..0db80f81a894d 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-12-28 +date: 2023-12-29 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 c68c880784bd0..6a94494732143 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-12-28 +date: 2023-12-29 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 1d9c7b1669c57..010052c7734f3 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-12-28 +date: 2023-12-29 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 05d3c0e2f8a3c..a6fadac04e670 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-12-28 +date: 2023-12-29 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 27f4f671fffb7..165110560078d 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-12-28 +date: 2023-12-29 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 f4697b6f4117f..7ffa86a7e829f 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-12-28 +date: 2023-12-29 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 33d16a0c98aa7..0c59bcac3c087 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-12-28 +date: 2023-12-29 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 e2c9b15d90ad6..7a8aea7d76973 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-12-28 +date: 2023-12-29 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 d44139c95ccb8..3ff24638e9653 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-12-28 +date: 2023-12-29 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 6490406ef0dfa..3ce098acf3c80 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-12-28 +date: 2023-12-29 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 e6487fa65df93..e812fd1270cdc 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-12-28 +date: 2023-12-29 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 603f152f17df6..66e19fbf58f96 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-12-28 +date: 2023-12-29 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 2bfd44426d741..668e9593cf4d1 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-12-28 +date: 2023-12-29 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 b644aafdf0641..7ccecb32ad23e 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-12-28 +date: 2023-12-29 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 8849a0b8bacd6..78fae5bb83c7f 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-12-28 +date: 2023-12-29 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 ecd7b23032179..b2af3932b0357 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-12-28 +date: 2023-12-29 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 9c12b767a9ade..b35b5337c4ec3 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-12-28 +date: 2023-12-29 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 9e863af106bb3..a9e1a454fde2a 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-12-28 +date: 2023-12-29 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 b3aa5488f6430..3f9429d6e4ec1 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-12-28 +date: 2023-12-29 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 c4bd56891c6b7..f904b5b332129 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-12-28 +date: 2023-12-29 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 93e78484eb6a1..6ece3ef2f396f 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-12-28 +date: 2023-12-29 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 35e945fdb0a21..e4aa2defd6b9a 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-12-28 +date: 2023-12-29 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 a8a4746e3d96b..be33f4a76aa16 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-12-28 +date: 2023-12-29 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 de8442dbe15ba..3c437fd62de85 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-12-28 +date: 2023-12-29 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 2465410ee2de4..1abdc98de36f2 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-12-28 +date: 2023-12-29 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 eac7fcc7790ba..4463040e5fbed 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-12-28 +date: 2023-12-29 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 5873a3ae5cdb9..e48fcf1048d23 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-12-28 +date: 2023-12-29 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 9c452058a78a7..28d92b3adae52 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-12-28 +date: 2023-12-29 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 ba256f52733e1..72574d7fb669c 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-12-28 +date: 2023-12-29 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 57edad0f859c2..e035b1c1e1241 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-12-28 +date: 2023-12-29 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 542beb673c5c1..ecaf3ba075c2e 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-12-28 +date: 2023-12-29 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 3012e7b2a1ae8..c933658dff2cb 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-12-28 +date: 2023-12-29 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 c5c7d2a4091a0..4c8e6467b7cd1 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-12-28 +date: 2023-12-29 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 e8e8e20bf9060..8911beb30adb3 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-12-28 +date: 2023-12-29 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 13acf47e03136..a2931cd7fc414 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-12-28 +date: 2023-12-29 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 48936066ff4e3..370d8ddcb7fef 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-12-28 +date: 2023-12-29 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 ebe580f2829f5..377836bc83f5e 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-12-28 +date: 2023-12-29 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 85585be6ed2a1..2dcf83283a2b4 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-12-28 +date: 2023-12-29 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 61f5bd8cf4d14..a01048c800435 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-12-28 +date: 2023-12-29 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 1a062d643428c..0c5a54e128a78 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-12-28 +date: 2023-12-29 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 48e78d70d9e4b..1fdad6d156ff6 100644 --- a/api_docs/kbn_core_http_server.devdocs.json +++ b/api_docs/kbn_core_http_server.devdocs.json @@ -13401,6 +13401,10 @@ "plugin": "cloudSecurityPosture", "path": "x-pack/plugins/cloud_security_posture/server/routes/detection_engine/get_detection_engine_alerts_count_by_rule_tags.ts" }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts" + }, { "plugin": "ecsDataQualityDashboard", "path": "x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.ts" diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 58e0ea0b4a897..3d79ead204931 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-12-28 +date: 2023-12-29 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 33fe342ea2876..92f8eb799fa46 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-12-28 +date: 2023-12-29 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 51fb6bc24abc0..14e9ae1e881c9 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-12-28 +date: 2023-12-29 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 f81525e25275d..602f3cc90ebef 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-12-28 +date: 2023-12-29 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 4691213348497..c82a1e30c99d7 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-12-28 +date: 2023-12-29 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 bfa6fc38128c3..f4785cbf5a160 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-12-28 +date: 2023-12-29 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 7c9ed26120d30..6d940b1d07fab 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-12-28 +date: 2023-12-29 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 08c7f3bd96734..7901f8dc274cd 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-12-28 +date: 2023-12-29 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 220d81a51fe91..19ea8feddb796 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-12-28 +date: 2023-12-29 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 15f10d6a16911..96e6709850bb6 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-12-28 +date: 2023-12-29 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 a389cfd1313f2..262d7325e0eec 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-12-28 +date: 2023-12-29 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 ef91cebf9051b..192230fc83137 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-12-28 +date: 2023-12-29 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 c0e678b6de090..0c3e852fb161e 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-12-28 +date: 2023-12-29 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 8c130f2c3314f..9d16144388b48 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-12-28 +date: 2023-12-29 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 21e51b8fe584c..2009e8d024504 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-12-28 +date: 2023-12-29 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 2388913d27da1..c2b8a0edf10ce 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-12-28 +date: 2023-12-29 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 c4a134230116c..8f48f9d753e91 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-12-28 +date: 2023-12-29 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 c436d464bf0db..1a76219d3430e 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-12-28 +date: 2023-12-29 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 f0fbe42701e71..1f788bce9b185 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-12-28 +date: 2023-12-29 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 abefb4c88ca34..e6b2b47527251 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-12-28 +date: 2023-12-29 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 0d453bff503df..5a278394adf7f 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-12-28 +date: 2023-12-29 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 a680738bcb144..678c4e8a3f836 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-12-28 +date: 2023-12-29 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 47284b6c40244..e98095a8d99dc 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-12-28 +date: 2023-12-29 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 0cd0a747fd024..357962a6ffa59 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-12-28 +date: 2023-12-29 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 25b7c25e3dff7..7525c2e1cf3ab 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-12-28 +date: 2023-12-29 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 dbc2376366560..593741c29263d 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-12-28 +date: 2023-12-29 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 ad6c21ded0b88..3a5001af4ac4a 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-12-28 +date: 2023-12-29 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 b28232b8cf32b..554e5a73505dc 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-12-28 +date: 2023-12-29 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 d9bd85b4ca70f..099b7968a218b 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-12-28 +date: 2023-12-29 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 e2b5b58841c5c..23d5e25daf32e 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-12-28 +date: 2023-12-29 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 ea18819d66c7b..1c3d941796f42 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-12-28 +date: 2023-12-29 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 93dce38e07ad4..820d6f2b35711 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-12-28 +date: 2023-12-29 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 ae8a1826a7dc6..ac5a6894e3106 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-12-28 +date: 2023-12-29 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 b4f582e62ba89..ebef8e25abacd 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-12-28 +date: 2023-12-29 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 f7d5262dca721..a58771ba89963 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-12-28 +date: 2023-12-29 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 e674818476963..4ebf7c6193d7a 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-12-28 +date: 2023-12-29 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 86e28739946c6..0409c4f31825e 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index 8ce1af614055f..b8f04e19c16ec 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index 5a88da18890e5..162db72f9671e 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index 52067b0d1d1e3..c14afdfb16322 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-12-28 +date: 2023-12-29 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 9067c9be90c85..ebd39db50ff38 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-12-28 +date: 2023-12-29 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 f4cee5b55c275..29b2099700bc0 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-12-28 +date: 2023-12-29 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 8fbc17ca2ce35..0e579a8f4019b 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-12-28 +date: 2023-12-29 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 0c5d86af19875..5c23c3cf49ec4 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-12-28 +date: 2023-12-29 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 1ccbcb194a69c..95547ad5507b2 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-12-28 +date: 2023-12-29 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 ee6b86be704b6..ad3bf563b0935 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-12-28 +date: 2023-12-29 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 89b0d00db408e..3fadf6fc789cb 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-12-28 +date: 2023-12-29 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 8af5008dceb65..1612c7e82034d 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-12-28 +date: 2023-12-29 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 30768c3f5c5e6..eecfba4e8ba66 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-12-28 +date: 2023-12-29 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 177f637fd03d4..326685357c089 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-12-28 +date: 2023-12-29 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 91a090e40fca3..3c04a9988cacc 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-12-28 +date: 2023-12-29 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 087135a9386a5..3f023238548c1 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-12-28 +date: 2023-12-29 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 407781e420860..25bd44988b0f7 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-12-28 +date: 2023-12-29 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 8c42364411ca6..be8a11c9ba237 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-12-28 +date: 2023-12-29 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 83da00c108777..177cd31b48188 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-12-28 +date: 2023-12-29 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 6cc980b667d7b..f45c8ff1e5f45 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-12-28 +date: 2023-12-29 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 531042908d690..9c02fb29573bc 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-12-28 +date: 2023-12-29 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 7c524e0cf61b6..30aa3f406561a 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-12-28 +date: 2023-12-29 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 2318fa6953eff..e2efc6abb7aeb 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-12-28 +date: 2023-12-29 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 839623f12678b..df6c8f3610a0b 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-12-28 +date: 2023-12-29 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 e0cf5d7938607..6ef386b2851cb 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-12-28 +date: 2023-12-29 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 9200f61c3f624..3931385cc9df0 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-12-28 +date: 2023-12-29 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 8b0f7c7e4a11d..3944af5ddbac9 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-12-28 +date: 2023-12-29 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 945cf229a637a..fbcd2aa628ed6 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-12-28 +date: 2023-12-29 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 39851ed246aeb..73683eba49936 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-12-28 +date: 2023-12-29 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 cf989f5c0eb87..6b43b24225590 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-12-28 +date: 2023-12-29 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 0e03ad205be3d..7b7ed1ceed4e4 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-12-28 +date: 2023-12-29 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 62219924abbc9..5162c8ff8e9dc 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-12-28 +date: 2023-12-29 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 38b9e450a3e24..e0d896dfed257 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-12-28 +date: 2023-12-29 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 c99f2a23659eb..62fba7ce4e417 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-12-28 +date: 2023-12-29 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 0e7930973897a..4c2a4266546d9 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-12-28 +date: 2023-12-29 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 71c760f4e745b..6685965541618 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index 2be4ce3a0ae66..71498d24af250 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index d90215ebaa5c0..fcd3f4c95ec3e 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-12-28 +date: 2023-12-29 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 b02ea700cfdce..504c8e35bd574 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-12-28 +date: 2023-12-29 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 3fb1d23bc2030..98cabac58197c 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-12-28 +date: 2023-12-29 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 909acddb328d8..3235e01da098b 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-12-28 +date: 2023-12-29 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 6dfcafc6de7bd..446aba8b47b3f 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-12-28 +date: 2023-12-29 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 5d1a7d5d74973..affab40b5f91d 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-12-28 +date: 2023-12-29 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 e8facd1eee076..31d90791b0776 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-12-28 +date: 2023-12-29 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 2c26962aa1d73..0b52f20483668 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-12-28 +date: 2023-12-29 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 2b5497bff6b52..2b312c8ebb2b1 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-12-28 +date: 2023-12-29 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 1aeff89636e88..ce758f6df12cb 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-12-28 +date: 2023-12-29 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 22bfdc330db14..b5b3a10ea063e 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-12-28 +date: 2023-12-29 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 46254f015d92a..940c9931998b0 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-12-28 +date: 2023-12-29 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 6dc3241af443a..f23c9c21cd348 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-12-28 +date: 2023-12-29 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 c0c16e0ea6814..35efa4af950f7 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-12-28 +date: 2023-12-29 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 d7a8142513883..18e900b09d114 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-12-28 +date: 2023-12-29 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 94af05154dc75..88f545fd36c07 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-12-28 +date: 2023-12-29 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 3e43f18231763..7c5e944633591 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-12-28 +date: 2023-12-29 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 725e921b0d9f5..d703f68dff39e 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-12-28 +date: 2023-12-29 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 840aa31e7ab45..3deffc944740d 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index 9f81c4bd0328d..0346b4bb55363 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index 7cd7180c33f15..1611126a6fd5e 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 0611ce7865668..5898c58089eae 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-12-28 +date: 2023-12-29 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 aeb6da2f69c5a..14c1d641e9bb3 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-12-28 +date: 2023-12-29 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 53b81363112c3..3af75b823b3b9 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-12-28 +date: 2023-12-29 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 3ce188330d7a2..4310e12a85298 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-12-28 +date: 2023-12-29 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 633683833eb5d..5671f1bf9ec59 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-12-28 +date: 2023-12-29 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 a9b54f2fa2021..cc837988f4052 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-12-28 +date: 2023-12-29 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 6221f06c9819f..2921878c489a0 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-12-28 +date: 2023-12-29 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 82d16440fa133..f1c94ecb98c0e 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-12-28 +date: 2023-12-29 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 e72b71b04591d..01288fff521e5 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-12-28 +date: 2023-12-29 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 59b0e35f4bdf3..a34dcfc917e2d 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-12-28 +date: 2023-12-29 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 a221f10ecebb8..7e8dd567f2a98 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-12-28 +date: 2023-12-29 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 1d53a9f7d33d3..2d47f81faeaf5 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-12-28 +date: 2023-12-29 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 384d1a89b8632..aaa1b39d89c64 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-12-28 +date: 2023-12-29 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 14171ed30dce2..2f81315a5ee99 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-12-28 +date: 2023-12-29 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 6187f1b9c99bd..456ccf7a1b57f 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-12-28 +date: 2023-12-29 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 2c5b3dde21644..c1f125fea8ac9 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-12-28 +date: 2023-12-29 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 16ea828b75c0a..d89c99c303d0a 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-12-28 +date: 2023-12-29 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 b2bed2f0c9877..ef397947f4d65 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 3108b82acc95f..3bd8f7d63bea1 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-12-28 +date: 2023-12-29 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 28978c74ce23f..d5840a529d4c5 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-12-28 +date: 2023-12-29 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 99e00e282bea0..82a847496f6dd 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-12-28 +date: 2023-12-29 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 0d506c3a77dab..47dd773385024 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-12-28 +date: 2023-12-29 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 9a148c1e9e7fe..e79e2bfb01dc9 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-12-28 +date: 2023-12-29 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 67f8cef2b73ee..5aab487bbc4c1 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index 8450b79bc1380..31e127fff87fc 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index ce1923d9e1dab..f05eeccecfdbf 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index baf4e81503e28..cd67cfe3fbf81 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 73980f0684309..e6faf5c74d87b 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-12-28 +date: 2023-12-29 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 19e121561bcff..b004105b4f031 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-12-28 +date: 2023-12-29 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 bc7986cac0511..beef9ffb436bc 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-12-28 +date: 2023-12-29 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 8c8e31a4c82a1..edbf345a61349 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-12-28 +date: 2023-12-29 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 2b468bb819ae0..30efb6656a1e4 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-12-28 +date: 2023-12-29 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 048f1790309ef..fc83cf8d85931 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-12-28 +date: 2023-12-29 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 5db5a4af7b614..5aa2f9131047f 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index 7632bdd69d47e..d1e0764a52840 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-12-28 +date: 2023-12-29 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 d7e1c09024203..e665ff989f73f 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-12-28 +date: 2023-12-29 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 b511bf42b6216..e4d7496c3d59d 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index 21ed82b250246..4dda886690453 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index c0c4d4518ecb4..53d92303bbd45 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-12-28 +date: 2023-12-29 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 66121a0fd7534..48f41bb44b139 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index 525eae2fe9b70..bc20a3ba50a39 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 451db4b9ce382..f441b53add288 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-12-28 +date: 2023-12-29 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 da3123345d16d..703c174c07d7b 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-12-28 +date: 2023-12-29 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 ff6b24a1fae72..d6253f7912cd3 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index 84fcbafb4dbe4..3de731586b4ee 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-12-28 +date: 2023-12-29 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 8f181bdc49c7a..5437419845965 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-12-28 +date: 2023-12-29 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 1ae357c4757ac..d2ffe1d62db2c 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-12-28 +date: 2023-12-29 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 7c3c699d05f52..f6803e1ea536f 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-12-28 +date: 2023-12-29 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 0c0d45edb960e..fbe998bec9663 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-12-28 +date: 2023-12-29 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 dc17f4470adbf..02d498e63efe6 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-12-28 +date: 2023-12-29 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 aa14e3201f565..990a7d3361233 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-12-28 +date: 2023-12-29 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 f84b3de06565d..3372c3c878cc4 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-12-28 +date: 2023-12-29 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 51557a4afeb7c..d06e3117c2262 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-12-28 +date: 2023-12-29 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 e795e7427164b..7c24839f7f27c 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-12-28 +date: 2023-12-29 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 7773d79192ca1..05479077e8b97 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index d81584d09d24f..471fdece7419e 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-12-28 +date: 2023-12-29 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 08c1b9077d2e2..7c3f4fd53bffc 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-12-28 +date: 2023-12-29 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 d5dcdadffcdde..0ac58e46e4389 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-12-28 +date: 2023-12-29 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 0cacd188b735d..85d9902bfb819 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-12-28 +date: 2023-12-29 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 0851e6d71d3e0..40fb18bfca965 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-12-28 +date: 2023-12-29 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 c9e9d499b40ac..b30a515d986a1 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 0152af5f074b4..2eacb522e09bc 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 566db241df25b..b5804a1287f54 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-12-28 +date: 2023-12-29 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 7ce7b9e522c69..77e572ecc83e5 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-12-28 +date: 2023-12-29 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 5e38f03f80936..49bd7f7b2834d 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-12-28 +date: 2023-12-29 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 bc29877dd33d5..d61a8c7b6933e 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index b90621067bf61..f52add785162d 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index 342013eb59fc8..a4143c61992e7 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index 012eb4ee66e89..f5a170489185a 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index 9e1b51caa696d..6aebc6a590fb7 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index a58e965538e43..cfa8ce5fda2b3 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index f862090fefd78..4adf59db34ff4 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index db32e19342028..de34503f6c1ce 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index 859279a85beeb..2b0fe4ee125a6 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index f1118f71ae802..8c6304f4e7a1b 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index a0a37d86be80a..45e5d93326922 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 3047b2f1a190d..4347c177102cc 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-12-28 +date: 2023-12-29 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 37068e8e4b42a..94f80d982c3f8 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-12-28 +date: 2023-12-29 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 d4cfa59f0c90f..d084879d7a2f6 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-12-28 +date: 2023-12-29 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 4d99078ffb6f8..904f1d57da2b2 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-12-28 +date: 2023-12-29 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 9fb97182a7f2a..046855de01e3d 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-12-28 +date: 2023-12-29 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 a483196edb313..77e482bf16eca 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index 1692aaa103efe..dab2af5b9cbf6 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index dbc7cd9790ea7..5df7393634e86 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-12-28 +date: 2023-12-29 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 856a0d3fcea8a..b45379d3026ec 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-12-28 +date: 2023-12-29 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 07fd34fce3523..820c5d39d3c15 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-12-28 +date: 2023-12-29 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 999a428a6f0f8..6f643ba6e9f91 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-12-28 +date: 2023-12-29 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 5ac46acf89a67..88e4c0dc59c2c 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-12-28 +date: 2023-12-29 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 2cb78192bed51..7af807e748f45 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-12-28 +date: 2023-12-29 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 354e7a5cc38ee..2074e3af6f45b 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-12-28 +date: 2023-12-29 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 737abd0568828..75b7788a3f275 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-12-28 +date: 2023-12-29 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 92edecbd8ee7d..abdfa773fc1d0 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-12-28 +date: 2023-12-29 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 63b7a7cbe6e71..caea5c523af9e 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-12-28 +date: 2023-12-29 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 62f8d582b524a..94549ee81b6c3 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-12-28 +date: 2023-12-29 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 62fdb7ec925f3..8e0aab072e6e8 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-12-28 +date: 2023-12-29 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 237656c184a9b..2c828757c76b6 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-12-28 +date: 2023-12-29 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 1afd1b321b41a..fa76f1874ab53 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-12-28 +date: 2023-12-29 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 aeac112e9ced9..0fabfc34e6a42 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-12-28 +date: 2023-12-29 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 aac38d5718277..76b3afad48455 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-12-28 +date: 2023-12-29 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 c3542e9d2a8c7..f4aa46d6e9c2a 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-12-28 +date: 2023-12-29 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 e8d6aa0d6b3cb..ffeca32e749ec 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_ui_actions.mdx b/api_docs/kbn_ml_ui_actions.mdx index 6d3044d48edd0..7007fd5d4b2a1 100644 --- a/api_docs/kbn_ml_ui_actions.mdx +++ b/api_docs/kbn_ml_ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-ui-actions title: "@kbn/ml-ui-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-ui-actions plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-ui-actions'] --- import kbnMlUiActionsObj from './kbn_ml_ui_actions.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 2b31a05d408e0..cc273163ac215 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-12-28 +date: 2023-12-29 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 ff2cc134bd21c..627fd309e95ec 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-12-28 +date: 2023-12-29 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 6156e0ea3eb15..b80c653cf6590 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-12-28 +date: 2023-12-29 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 ea481d851fd8d..d279ad158c055 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index 1ca5b3a16607c..d112fece7ae7b 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index 1333dab34bc3e..e008f332d7f4f 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index 80e15e01e8658..6ebc45ec5093d 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index 2654ce5658b20..062cac801d895 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index e0a07b6a84cd1..3e1e5bbdd2153 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-12-28 +date: 2023-12-29 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 1d278ec9914c2..6722c0b013cfa 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-12-28 +date: 2023-12-29 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 0115aab690628..e23615edcaebc 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index e0f3225bc2852..aadcf80178a27 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 1ef8c320a993f..a8ae6c29ca34e 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-12-28 +date: 2023-12-29 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 9e06be730edf1..14046312b36e6 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-12-28 +date: 2023-12-29 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 e140f69dc07e4..45320d37a6be8 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index 3203cea48f2e8..d543348752bdb 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 21a5c4d230c3a..c7a2545a29f12 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-12-28 +date: 2023-12-29 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 582607ca803d6..c4993aa86f254 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-12-28 +date: 2023-12-29 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 979ccca4b8aeb..1d92ea79e1154 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-12-28 +date: 2023-12-29 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 572512b8eab5e..1a2e6a45363a0 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-12-28 +date: 2023-12-29 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 c453724c9ee9f..0de2bf1e83a64 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-12-28 +date: 2023-12-29 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 11f050df5da50..228ad11a5a84a 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-12-28 +date: 2023-12-29 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 baac99094ee30..e941ec3b60add 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-12-28 +date: 2023-12-29 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 f6a996e86b69d..a00df54bddc40 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-12-28 +date: 2023-12-29 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 8f54ad15bb30a..b727011ba284e 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-12-28 +date: 2023-12-29 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 53a5439f6e32e..f9985fb8a98eb 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-12-28 +date: 2023-12-29 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 a6fd2aed0fbf2..6e9c31568d061 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-12-28 +date: 2023-12-29 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 f8e6e1986b467..96bb5fb8d63bc 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-12-28 +date: 2023-12-29 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 3d604be01e60e..49700e51abf3f 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index 0b655635496dc..4607ffba95e12 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index 1ec0082cc7743..df96841fcd7ae 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index 8c7bde9c45959..fbaf7aa8e8e70 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index fac4df845894b..93af7288c9f02 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index 69107fed8ee71..1cf5d4308371e 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index c59fe56cd90bd..8beb563723709 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index e4706d33e67f0..598bb48f98635 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index 5483ba88aa0cd..e35028e51dbb5 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index 22eb96258fea9..36a25a14c5a99 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index 75d8aa64ce38f..6a38ed2a00418 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 0e268f00d0e3c..b43b44b7045cc 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index 4829e250083f9..d8eb5194d8b70 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index 61296c4801b8b..c6ebc17caee29 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-12-28 +date: 2023-12-29 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 458d0b941dbb9..a51b7bc777663 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-12-28 +date: 2023-12-29 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 5c10b2e0ee4c6..4bd7074602f24 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index d8062d317e099..4cf269a9ca7f2 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.devdocs.json b/api_docs/kbn_search_connectors.devdocs.json index f3377ab693b7f..ae96cdef85b9d 100644 --- a/api_docs/kbn_search_connectors.devdocs.json +++ b/api_docs/kbn_search_connectors.devdocs.json @@ -35392,6 +35392,206 @@ "trackAdoption": false } ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.servicenow.configuration.use_document_level_security", + "type": "Object", + "tags": [], + "label": "use_document_level_security", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.servicenow.configuration.use_document_level_security.default_value", + "type": "Uncategorized", + "tags": [], + "label": "default_value", + "description": [], + "signature": [ + "null" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.servicenow.configuration.use_document_level_security.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.servicenow.configuration.use_document_level_security.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TOGGLE" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.servicenow.configuration.use_document_level_security.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.servicenow.configuration.use_document_level_security.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.servicenow.configuration.use_document_level_security.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.servicenow.configuration.use_document_level_security.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.servicenow.configuration.use_document_level_security.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.servicenow.configuration.use_document_level_security.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.servicenow.configuration.use_document_level_security.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".BOOLEAN" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.servicenow.configuration.use_document_level_security.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.servicenow.configuration.use_document_level_security.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.servicenow.configuration.use_document_level_security.value", + "type": "boolean", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] } ] }, diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index de1280abe309f..4d0ac396af8b0 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/te | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2649 | 0 | 2649 | 0 | +| 2663 | 0 | 2663 | 0 | ## Common diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index 00aa8d8bc2423..cfa98af91678c 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index 4741e7fa2366e..5641ff87e43f0 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index bdb33661bb988..5bb25563cfbdf 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index eb5f5c77ff5c5..fa25c23a63d0c 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index 0d0da06d8cc6d..a8159ef5dd910 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index 757980044adb2..19c1ec1d8ec94 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index 17e46426e826f..105ff974f289d 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index c6e15b3637c67..8d8effaedff07 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-12-28 +date: 2023-12-29 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 c4ca1f9c912f2..7b653457a579e 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-12-28 +date: 2023-12-29 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 616102e2788ee..886b4a6b99355 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-12-28 +date: 2023-12-29 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 36b8192c50015..b809d76a11d2e 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-12-28 +date: 2023-12-29 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 78c17ceabd838..d66aba61bb4fb 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-12-28 +date: 2023-12-29 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 56abb706ec4a1..41a85ae698bd7 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-12-28 +date: 2023-12-29 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 1ccf5e4195632..82ec9441e292d 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-12-28 +date: 2023-12-29 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 ba284b7e4fd26..a807d6c849ea2 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-12-28 +date: 2023-12-29 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 78f120e992fec..b70f25b9fe7ed 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-12-28 +date: 2023-12-29 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 b2ee47dda8a15..5483002634a03 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-12-28 +date: 2023-12-29 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 b597ad39858c8..a48a34cee7001 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-12-28 +date: 2023-12-29 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 f5cb1f2509df6..0f2595d9b6cf1 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-12-28 +date: 2023-12-29 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 edbf3a246e0c6..2ac5d6d407024 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-12-28 +date: 2023-12-29 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 3338d3ee9bd5f..273ba220e537f 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-12-28 +date: 2023-12-29 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 8830ab42b13f2..b599f6aad3f44 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-12-28 +date: 2023-12-29 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 dc1fcf69235a0..2ff4c3aa57ec2 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-12-28 +date: 2023-12-29 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 f6e9e5cd75f33..cb260e77ab012 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-12-28 +date: 2023-12-29 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 c3f105de213c5..ba8c0577b6e8a 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-12-28 +date: 2023-12-29 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 12d23df8b51d1..6f9f29c5b7dcd 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-12-28 +date: 2023-12-29 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 c7a221e5d49f9..06b3a31768a54 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-12-28 +date: 2023-12-29 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 7990ea0970e33..a47febdd10265 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-12-28 +date: 2023-12-29 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 e56456ad313cb..93d92eacccd2e 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-12-28 +date: 2023-12-29 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 72eb8c335a03b..75df5a4549d6d 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index 2ef99d3e4eca7..36d1ffbbd036c 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index 59f9d90dc4820..658093b811d5d 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index c73e80e49bb7f..023959c8cc273 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index b917072124ebb..5dc1dd5cb9ae0 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index ad3bbf1e9afa5..b075d382e5e84 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index ee0c0d35ea220..668481ffadda2 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-12-28 +date: 2023-12-29 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 5dcb0a4d9d3a4..f45731fbe2bb8 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-12-28 +date: 2023-12-29 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 adfd6a54bd23c..ee4fed61101f3 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index 613769d973837..09f2e5af22d95 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index 8056549580e48..1f24af3d083ec 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-12-28 +date: 2023-12-29 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 2676dd7e3c36d..42f1051ac5961 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-12-28 +date: 2023-12-29 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 b7bce610912a3..9bae59b46aa1d 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-12-28 +date: 2023-12-29 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 ed360a9810328..65a646aad56fa 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index 02088c92f7e14..8b834c9fabfe1 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index f1a4a0bf56082..f1bd14f6faceb 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-12-28 +date: 2023-12-29 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 4ce6833ee9acb..d0358ed17f4ac 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-12-28 +date: 2023-12-29 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 b487290ce3a60..a1640ff05c461 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-12-28 +date: 2023-12-29 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 0e478af073f5d..329d25a29486b 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-12-28 +date: 2023-12-29 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 cdbb5b49c32bc..e01d9709b27d1 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-12-28 +date: 2023-12-29 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 e9168fa7d7214..410cf7f2664c5 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-12-28 +date: 2023-12-29 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 1ffbe35e3d4d2..442f5af646469 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-12-28 +date: 2023-12-29 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 ba0814a0e4f0c..9fb042f7f56df 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-12-28 +date: 2023-12-29 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 0459990d30cc7..4816f676c6852 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-12-28 +date: 2023-12-29 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 838ed95f41d10..e584c4465a34c 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-12-28 +date: 2023-12-29 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 a0a700803eb49..ef9c6b90a845f 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-12-28 +date: 2023-12-29 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 35b4457142e9b..060b805a374a4 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-12-28 +date: 2023-12-29 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 cde9d0412c85b..c3808b3aaaa16 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-12-28 +date: 2023-12-29 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 f3c1aaecd7150..7e90059c6f1ab 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-12-28 +date: 2023-12-29 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 711f0b5347485..950ae7eebb00d 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-12-28 +date: 2023-12-29 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 746d04556f419..3b2f25a921629 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-12-28 +date: 2023-12-29 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 a3b93e62675b3..4a5a097290d26 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-12-28 +date: 2023-12-29 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 1e84672e44390..8f858e6c78687 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-12-28 +date: 2023-12-29 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 81d578cfc8289..bee4b5eda5557 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-12-28 +date: 2023-12-29 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 1107ebd963a4b..945a786d53918 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-12-28 +date: 2023-12-29 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 eb956fe7b3d5b..29363d2d3ec1d 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-12-28 +date: 2023-12-29 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 0f0017cc65abd..072d865cf6920 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-12-28 +date: 2023-12-29 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 a4497fc501e9b..ff588e0278bf6 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-12-28 +date: 2023-12-29 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 f9091e00f32fa..6771acac32084 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-12-28 +date: 2023-12-29 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 168f9e1b92ec6..b27c316b1956f 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-12-28 +date: 2023-12-29 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 bb88fff0f39bc..c23048624533d 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-12-28 +date: 2023-12-29 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 baa418ee292a5..231b22518d738 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-12-28 +date: 2023-12-29 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 1c84a36759976..6b7151e586c89 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-12-28 +date: 2023-12-29 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 de976937e266d..f7a2a92461dde 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-12-28 +date: 2023-12-29 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 03454d37eec86..93db47188210b 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-12-28 +date: 2023-12-29 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 97867c3d28b9e..af037b58194fd 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-12-28 +date: 2023-12-29 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 79540fec69b0b..da74861149cc5 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-12-28 +date: 2023-12-29 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 764a02931f1df..ee6b170bd3b7c 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-12-28 +date: 2023-12-29 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 7e4114b9f0dc9..5c94f1eacb347 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-12-28 +date: 2023-12-29 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 0cf2fa5e5d935..fb358e832b248 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-12-28 +date: 2023-12-29 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 61cfbb8c5ba04..034b32321bd50 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-12-28 +date: 2023-12-29 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 c4a9bc7b9fa18..06eb8fd2efe6a 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-12-28 +date: 2023-12-29 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 dbf3736e1f6f4..10a98ba5ba4a6 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-12-28 +date: 2023-12-29 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 b875ceb02b534..73a7bb4d00f21 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-12-28 +date: 2023-12-29 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 df188aa02af6d..6cc76d5d8c4de 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-12-28 +date: 2023-12-29 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 68df9a83587a9..33d6cdf3ff04f 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-12-28 +date: 2023-12-29 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 2f4da82845bbb..d0df7c1c1a3fa 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index f96adfe632a08..4f91062f8c871 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 298f00476bcaa..6876166a7683c 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-12-28 +date: 2023-12-29 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 65679c4b58ffc..4ab962df74dae 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-12-28 +date: 2023-12-29 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 ccb3f24833187..aa75c5cc5eb40 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-12-28 +date: 2023-12-29 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 f44047350ce0f..0b18635747528 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-12-28 +date: 2023-12-29 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 752ae9f308d4f..8c2f4ed199de5 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index 456ba53166756..603d59aa4f0b4 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index 6ad911b0799b4..020ea525d5976 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index a0cc6a0300527..9f13afc7bba0d 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index a9d8d7f0d2d10..7eb68ec70bd6d 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx index 0f9b894c87e7f..7523ba2c503cf 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index 08d9c40469994..539e3069daf29 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 96037a34d125f..97fd046194bb0 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index 64bf690686945..d01f5fe0ebda4 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-12-28 +date: 2023-12-29 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 d53509c0b3f7b..a38c1ec0b8f49 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-12-28 +date: 2023-12-29 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 78970f4c88499..627acacfd16f5 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-12-28 +date: 2023-12-29 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 a0c223271c064..efca511b7d126 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_visualization_utils.mdx b/api_docs/kbn_visualization_utils.mdx index 1c56665b9f99c..ff1a7aedbbf9f 100644 --- a/api_docs/kbn_visualization_utils.mdx +++ b/api_docs/kbn_visualization_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-utils title: "@kbn/visualization-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-utils plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-utils'] --- import kbnVisualizationUtilsObj from './kbn_visualization_utils.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index bedbd9354a867..efcf9454d30c9 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 9080a06179d35..7854d66e0e621 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index aba611d65d84a..f35f4aca0852b 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 4a597a0825501..f11fa3beebcfa 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 2892b6920d3c4..810eb8721d439 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-12-28 +date: 2023-12-29 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 8b8fdf300986b..1fef9fac0289e 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-12-28 +date: 2023-12-29 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 16128f8032936..cb109755eacad 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-12-28 +date: 2023-12-29 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 e7fccb9dc5b31..581232cd7cf69 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-12-28 +date: 2023-12-29 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 d5537c7130996..5b03c6f8c8ca3 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-12-28 +date: 2023-12-29 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 54ed62fc43171..1b56b8f43dee8 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 19af033a4e8b6..7b5411a238c3f 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index ca01f322cd7d6..d2e98a04be489 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 867563037fea1..4f49da6f1ee22 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx index 5854f58db646f..a8d266d409a25 100644 --- a/api_docs/log_explorer.mdx +++ b/api_docs/log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logExplorer title: "logExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logExplorer plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer'] --- import logExplorerObj from './log_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 4b9f0d85a871f..d3cb5d7e87f87 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-12-28 +date: 2023-12-29 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 ff1d481c717e7..5ac742dfa868f 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-12-28 +date: 2023-12-29 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 227d4bbb0ec67..644b52ea13540 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-12-28 +date: 2023-12-29 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 cc038d8e61378..264b65d19ed3c 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index 8808bf15b3187..c95e69185ec10 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 0baa64215b869..48a25f2329ab6 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index 9872403b4d82f..e0e51a0a97141 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index def3cad297dc7..8180c5af97836 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-12-28 +date: 2023-12-29 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 c1effb2f0a949..e24f4d7d5678b 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-12-28 +date: 2023-12-29 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 12ab894e499d6..29903de044f22 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-12-28 +date: 2023-12-29 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 b6ae395bcb140..9fa0908386f2a 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index 18bbd3868b443..63d8834b29a2d 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 6b400619f57c7..dce22414e5b6d 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index c7b6189860c30..d8eecad380c55 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index 419599917dcba..81ad1239b11b8 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_log_explorer.mdx b/api_docs/observability_log_explorer.mdx index 33660ca957c6f..fd7e5ce4fefce 100644 --- a/api_docs/observability_log_explorer.mdx +++ b/api_docs/observability_log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogExplorer title: "observabilityLogExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogExplorer plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogExplorer'] --- import observabilityLogExplorerObj from './observability_log_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 82211d18f3086..f3a273eca6dde 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index 3438e7759ec5f..df88881575c76 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-12-28 +date: 2023-12-29 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 dc6e3ba3c882c..4d7aaff8acf3e 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index 52d34bb880c2e..103528bf077dc 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 215d6ed221f4a..66305afa62f4a 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -21,7 +21,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 77958 | 234 | 66677 | 1695 | +| 77972 | 234 | 66691 | 1695 | ## Plugin Directory @@ -576,7 +576,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-detections-response](https://github.com/orgs/elastic/teams/security-detections-response) | - | 120 | 0 | 117 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 0 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 75 | 0 | 75 | 0 | -| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 2649 | 0 | 2649 | 0 | +| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 2663 | 0 | 2663 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 18 | 1 | 17 | 1 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 25 | 0 | 25 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 20 | 0 | 18 | 1 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 81a3e95f641ff..d27a246a3cd43 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-12-28 +date: 2023-12-29 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 95b881a2260e0..1a313d44b2dad 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index 8963fcba93b73..a41287ddf6e05 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 34db35c12204e..5e8f337b346e0 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-12-28 +date: 2023-12-29 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 367f42ad0baaf..28ec1ce14faab 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-12-28 +date: 2023-12-29 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 6b1ea9175c71d..087740d75ed1b 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-12-28 +date: 2023-12-29 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 f0040d2445636..c6e4cb7a32c4c 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-12-28 +date: 2023-12-29 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 bae5c7e1c2cd7..084572f825a76 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-12-28 +date: 2023-12-29 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 ae89ab98f2538..c88cfb8bf2859 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index 7309f01d3dcf2..b0f7a1b6dcb11 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 6622a2951c4dd..14b6b51ac38e9 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 94ed884e43cbf..d6f7401ec964f 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-12-28 +date: 2023-12-29 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 c9d27515c3e58..81119c8be4f9c 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-12-28 +date: 2023-12-29 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 a50c4daac04ee..7811d72bef31e 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-12-28 +date: 2023-12-29 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 77c90a0b7654f..fa8a0b67f2e6e 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-12-28 +date: 2023-12-29 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 b6458f92c45e3..9c5a8c00cc315 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index cace6898e8a37..179eb4d1306a9 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 1d5a9e79c7730..e256ca70df9df 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index 07a096b8b1606..c688c4540d802 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-12-28 +date: 2023-12-29 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 d7b2452dcf033..43e8f0c72c31e 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-12-28 +date: 2023-12-29 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 19f8e0751a7a5..da051b4fe5a98 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-12-28 +date: 2023-12-29 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 70687c4d26445..9e1192adb081a 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-12-28 +date: 2023-12-29 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 981d9892edad3..b1f4a5d57b286 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-12-28 +date: 2023-12-29 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 6ad47574de75d..9b85d1edf99bf 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-12-28 +date: 2023-12-29 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 c9570bad3c60d..6289a6af283f4 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-12-28 +date: 2023-12-29 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 9e703c274affd..3f43ce3c8aa15 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-12-28 +date: 2023-12-29 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 cd73f2ed33f97..474c70f0851f5 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-12-28 +date: 2023-12-29 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 5e6e32c990be3..4b97f2a16982b 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-12-28 +date: 2023-12-29 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 7f6c09a8040e3..081e0ecf14cfd 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-12-28 +date: 2023-12-29 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 529fc21e46309..92f0739ef1070 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-12-28 +date: 2023-12-29 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 cfc0586ba0a6c..16d3e27520820 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-12-28 +date: 2023-12-29 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 19aeb1f2972fa..0ca8b63b3083a 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-12-28 +date: 2023-12-29 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 628f681ba61d6..348b00de42abe 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-12-28 +date: 2023-12-29 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 b86093717bd1f..1850996887fc6 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-12-28 +date: 2023-12-29 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 afdf3583a7df3..dccd5cc0e9816 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-12-28 +date: 2023-12-29 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 ffdeeeda95023..6dc9c28dd4b13 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-12-28 +date: 2023-12-29 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 b1fd33e56e074..b21eab7487ea1 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-12-28 +date: 2023-12-29 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 26e1a063b8750..a09937bf0e662 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 1f4b8fc2c8729..db3d0495d4594 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 4eb7a82fc0055..45f3f89157be0 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 6f2cee4eccf01..d388ed10b29f9 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index ca448a5b6ea02..d7f5cc542944e 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2023-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 7a007288c1257..a478cfcbeb5fe 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-12-28 +date: 2023-12-29 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 ec8fbb60f0cec..3c27502689285 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-12-28 +date: 2023-12-29 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 7e4ed776c6a6b..9c0e987d3d492 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-12-28 +date: 2023-12-29 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 75f36a25139ce..17435ae070d64 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-12-28 +date: 2023-12-29 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 40176ab873ec3..042f3287377b5 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-12-28 +date: 2023-12-29 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 3cb73c31470f4..15cfb749a78f2 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-12-28 +date: 2023-12-29 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 13d7895352175..350bd2df0555b 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-12-28 +date: 2023-12-29 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 a9a1eb0a174a2..f366e7cf8f39a 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-12-28 +date: 2023-12-29 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 9578591809d3e..c62bdce395ea5 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-12-28 +date: 2023-12-29 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 3c6cace3a08c6..91935e523366b 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-12-28 +date: 2023-12-29 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 fb511db62c115..075ecf4ea7241 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-12-28 +date: 2023-12-29 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 f508cbe1cf879..46ffcb0e873b0 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-12-28 +date: 2023-12-29 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 797ee06ba352c..ab15f72ee73f2 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-12-28 +date: 2023-12-29 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 31b49711ca866..29cf25b0a7af9 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-12-28 +date: 2023-12-29 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 28e904a278ad5..d37c72d4c35be 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-12-28 +date: 2023-12-29 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 9a541972a83fb..90dfe65ec8241 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-12-28 +date: 2023-12-29 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 6b03c5e9336f4..7822c40796f08 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-12-28 +date: 2023-12-29 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 b01d1aa330703..db445c6c13d7f 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-12-28 +date: 2023-12-29 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From cf2bf53fbf1e211f22687af1e98d90b2cb19e819 Mon Sep 17 00:00:00 2001 From: Ersin Erdal <92688503+ersin-erdal@users.noreply.github.com> Date: Fri, 29 Dec 2023 11:18:30 +0100 Subject: [PATCH 018/323] Distinguish error type/sources in alerting (#173932) Resolves: #168631 This PR intends to distinguish the error type/source (user or framework) that are returned by the alerting plugin. The type/source is used by the TaskManager to generate TaskRun metrics (user_errors or framework_errors). |Error type|Error description| |---|---| |USER| Disabled rule type error| |USER| Validation errors| |USER| Rule type executor errors| |FRAMEWORK| Error getting decrypted rule| |FRAMEWORK| Disabled rule errors| |FRAMEWORK| Fetching RawRule errors| |FRAMEWORK| Enqueue actions errors| |FRAMEWORK| Fetching summarised alerts errors| |FRAMEWORK| All the other rule run errors| ## To Verify: Throw an error in one of the try-catch blocks (or anywhere in the run method of the TaskTunner) and expect to see the metric counter to increment the number of respective errors on the below page. http://localhost:5601/api/task_manager/metrics?reset=false --- .../server/task_runner/execution_handler.ts | 25 ++++-- .../server/task_runner/rule_loader.test.ts | 12 ++- .../server/task_runner/rule_loader.ts | 39 ++++++--- .../server/task_runner/task_runner.test.ts | 9 ++- .../server/task_runner/task_runner.ts | 45 +++++++---- .../metrics/task_run_metrics_aggregator.ts | 2 + .../test_suites/task_manager/metrics_route.ts | 80 ++++++++++++++++++- 7 files changed, 175 insertions(+), 37 deletions(-) diff --git a/x-pack/plugins/alerting/server/task_runner/execution_handler.ts b/x-pack/plugins/alerting/server/task_runner/execution_handler.ts index 29f56b630eaf8..3a464c8f30521 100644 --- a/x-pack/plugins/alerting/server/task_runner/execution_handler.ts +++ b/x-pack/plugins/alerting/server/task_runner/execution_handler.ts @@ -9,7 +9,11 @@ import type { PublicMethodsOf } from '@kbn/utility-types'; import { Logger } from '@kbn/core/server'; import { ALERT_UUID, getRuleDetailsRoute, triggersActionsRoute } from '@kbn/rule-data-utils'; import { asSavedObjectExecutionSource } from '@kbn/actions-plugin/server'; -import { isEphemeralTaskRejectedDueToCapacityError } from '@kbn/task-manager-plugin/server'; +import { + createTaskRunError, + isEphemeralTaskRejectedDueToCapacityError, + TaskErrorSource, +} from '@kbn/task-manager-plugin/server'; import { ExecuteOptions as EnqueueExecutionOptions, ExecutionResponseItem, @@ -360,10 +364,15 @@ export class ExecutionHandler< if (!!bulkActions.length) { for (const c of chunk(bulkActions, CHUNK_SIZE)) { - const response = await this.actionsClient!.bulkEnqueueExecution(c); - if (response.errors) { + let enqueueResponse; + try { + enqueueResponse = await this.actionsClient!.bulkEnqueueExecution(c); + } catch (e) { + throw createTaskRunError(e, TaskErrorSource.FRAMEWORK); + } + if (enqueueResponse.errors) { bulkActionsResponse = bulkActionsResponse.concat( - response.items.filter( + enqueueResponse.items.filter( (i) => i.response === ExecutionResponseType.QUEUED_ACTIONS_LIMIT_ERROR ) ); @@ -730,7 +739,13 @@ export class ExecutionHandler< executionUuid: this.executionId, }; } - const alerts = await this.alertsClient.getSummarizedAlerts!(options); + + let alerts; + try { + alerts = await this.alertsClient.getSummarizedAlerts!(options); + } catch (e) { + throw createTaskRunError(e, TaskErrorSource.FRAMEWORK); + } /** * We need to remove all new alerts with maintenance windows retrieved from diff --git a/x-pack/plugins/alerting/server/task_runner/rule_loader.test.ts b/x-pack/plugins/alerting/server/task_runner/rule_loader.test.ts index 380d436c95e65..f3417312881e8 100644 --- a/x-pack/plugins/alerting/server/task_runner/rule_loader.test.ts +++ b/x-pack/plugins/alerting/server/task_runner/rule_loader.test.ts @@ -19,6 +19,7 @@ import { ErrorWithReason, getReasonFromError } from '../lib/error_with_reason'; import { alertingEventLoggerMock } from '../lib/alerting_event_logger/alerting_event_logger.mock'; import { mockedRawRuleSO, mockedRule } from './fixtures'; import { RULE_SAVED_OBJECT_TYPE } from '../saved_objects'; +import { getErrorSource, TaskErrorSource } from '@kbn/task-manager-plugin/server/task_running'; // create mocks const rulesClient = rulesClientMock.create(); @@ -142,6 +143,7 @@ describe('rule_loader', () => { } catch (err) { outcome = 'failure'; expect(getReasonFromError(err)).toBe(RuleExecutionStatusErrorReasons.Disabled); + expect(getErrorSource(err)).toBe(TaskErrorSource.FRAMEWORK); } expect(outcome).toBe('failure'); }); @@ -162,6 +164,7 @@ describe('rule_loader', () => { outcome = 'failure'; expect(err.message).toBe('rule-type-not-enabled: 2112'); expect(getReasonFromError(err)).toBe(RuleExecutionStatusErrorReasons.License); + expect(getErrorSource(err)).toBe(TaskErrorSource.USER); } expect(outcome).toBe('failure'); }); @@ -178,6 +181,7 @@ describe('rule_loader', () => { outcome = 'failure'; expect(err.message).toMatch('[bar]: expected value of type [boolean] but got [string]'); expect(getReasonFromError(err)).toBe(RuleExecutionStatusErrorReasons.Validate); + expect(getErrorSource(err)).toBe(TaskErrorSource.USER); } expect(outcome).toBe('failure'); }); @@ -229,8 +233,12 @@ describe('rule_loader', () => { } ); - const promise = getRuleAttributes(context, ruleId, spaceId); - await expect(promise).rejects.toThrow('wops'); + try { + await getRuleAttributes(context, ruleId, spaceId); + } catch (e) { + expect(e.message).toMatch('wops'); + expect(getErrorSource(e)).toBe(TaskErrorSource.FRAMEWORK); + } }); }); diff --git a/x-pack/plugins/alerting/server/task_runner/rule_loader.ts b/x-pack/plugins/alerting/server/task_runner/rule_loader.ts index fb037b802ec9b..ccf40adbf0920 100644 --- a/x-pack/plugins/alerting/server/task_runner/rule_loader.ts +++ b/x-pack/plugins/alerting/server/task_runner/rule_loader.ts @@ -6,12 +6,13 @@ */ import { addSpaceIdToPath } from '@kbn/spaces-plugin/server'; -import { CoreKibanaRequest, FakeRawRequest, Headers } from '@kbn/core/server'; +import { CoreKibanaRequest, FakeRawRequest, Headers, SavedObject } from '@kbn/core/server'; import { PublicMethodsOf } from '@kbn/utility-types'; import { LoadedIndirectParams, LoadIndirectParamsResult, } from '@kbn/task-manager-plugin/server/task'; +import { createTaskRunError, TaskErrorSource } from '@kbn/task-manager-plugin/server'; import { TaskRunnerContext } from './task_runner_factory'; import { ErrorWithReason, validateRuleTypeParams } from '../lib'; import { @@ -70,23 +71,33 @@ export function validateRule( const { enabled, apiKey } = indirectParams; if (!enabled) { - throw new ErrorWithReason( - RuleExecutionStatusErrorReasons.Disabled, - new Error(`Rule failed to execute because rule ran after it was disabled.`) + throw createTaskRunError( + new ErrorWithReason( + RuleExecutionStatusErrorReasons.Disabled, + new Error(`Rule failed to execute because rule ran after it was disabled.`) + ), + TaskErrorSource.FRAMEWORK ); } + alertingEventLogger.setRuleName(rule.name); try { ruleTypeRegistry.ensureRuleTypeEnabled(rule.alertTypeId); } catch (err) { - throw new ErrorWithReason(RuleExecutionStatusErrorReasons.License, err); + throw createTaskRunError( + new ErrorWithReason(RuleExecutionStatusErrorReasons.License, err), + TaskErrorSource.USER + ); } let validatedParams: Params; try { validatedParams = validateRuleTypeParams(rule.params, paramValidator); } catch (err) { - throw new ErrorWithReason(RuleExecutionStatusErrorReasons.Validate, err); + throw createTaskRunError( + new ErrorWithReason(RuleExecutionStatusErrorReasons.Validate, err), + TaskErrorSource.USER + ); } if (rule.monitoring) { @@ -114,11 +125,17 @@ export async function getRuleAttributes( ): Promise> { const namespace = context.spaceIdToNamespace(spaceId); - const rawRule = await context.encryptedSavedObjectsClient.getDecryptedAsInternalUser( - RULE_SAVED_OBJECT_TYPE, - ruleId, - { namespace } - ); + let rawRule: SavedObject; + + try { + rawRule = await context.encryptedSavedObjectsClient.getDecryptedAsInternalUser( + RULE_SAVED_OBJECT_TYPE, + ruleId, + { namespace } + ); + } catch (e) { + throw createTaskRunError(e, TaskErrorSource.FRAMEWORK); + } const fakeRequest = getFakeKibanaRequest(context, spaceId, rawRule.attributes.apiKey); const rulesClient = context.getRulesClientWithRequest(fakeRequest); diff --git a/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts b/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts index 23d5d5f576ce3..d395ff3364cd7 100644 --- a/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts +++ b/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts @@ -18,7 +18,11 @@ import { RuleAction, RuleAlertData, } from '../types'; -import { ConcreteTaskInstance, isUnrecoverableError } from '@kbn/task-manager-plugin/server'; +import { + ConcreteTaskInstance, + isUnrecoverableError, + TaskErrorSource, +} from '@kbn/task-manager-plugin/server'; import { TaskRunnerContext } from './task_runner_factory'; import { TaskRunner } from './task_runner'; import { encryptedSavedObjectsMock } from '@kbn/encrypted-saved-objects-plugin/server/mocks'; @@ -83,6 +87,7 @@ import { getMockMaintenanceWindow } from '../data/maintenance_window/test_helper import { alertsClientMock } from '../alerts_client/alerts_client.mock'; import { MaintenanceWindow } from '../application/maintenance_window/types'; import { RULE_SAVED_OBJECT_TYPE } from '../saved_objects'; +import { getErrorSource } from '@kbn/task-manager-plugin/server/task_running'; jest.mock('uuid', () => ({ v4: () => '5f6aa57d-3e22-484e-bae8-cbed868f4d28', @@ -1942,6 +1947,7 @@ describe('Task Runner', () => { expect(loggerMeta?.tags).toEqual(['test', '1', 'rule-run-failed']); expect(loggerMeta?.error?.stack_trace).toBeDefined(); expect(logger.error).toBeCalledTimes(1); + expect(getErrorSource(runnerResult.taskRunError as Error)).toBe(TaskErrorSource.USER); }); test('recovers gracefully when the Rule Task Runner throws an exception when loading rule to prepare for run', async () => { @@ -3326,6 +3332,7 @@ describe('Task Runner', () => { expect(encryptedSavedObjectsClient.getDecryptedAsInternalUser).toHaveBeenCalledTimes(1); expect(result).toEqual({ error }); + expect(getErrorSource(result.error as Error)).toBe(TaskErrorSource.FRAMEWORK); }); function testAlertingEventLogCalls({ diff --git a/x-pack/plugins/alerting/server/task_runner/task_runner.ts b/x-pack/plugins/alerting/server/task_runner/task_runner.ts index 532dd7b1e12ba..208e46b88a1f6 100644 --- a/x-pack/plugins/alerting/server/task_runner/task_runner.ts +++ b/x-pack/plugins/alerting/server/task_runner/task_runner.ts @@ -12,12 +12,13 @@ import { v4 as uuidv4 } from 'uuid'; import { Logger } from '@kbn/core/server'; import { ConcreteTaskInstance, - throwUnrecoverableError, createTaskRunError, TaskErrorSource, + throwUnrecoverableError, } from '@kbn/task-manager-plugin/server'; import { nanosToMillis } from '@kbn/event-log-plugin/server'; import { DEFAULT_NAMESPACE_STRING } from '@kbn/core-saved-objects-utils-server'; +import { getErrorSource } from '@kbn/task-manager-plugin/server/task_running'; import { ExecutionHandler, RunResult } from './execution_handler'; import { TaskRunnerContext } from './task_runner_factory'; import { @@ -25,20 +26,20 @@ import { ErrorWithReason, executionStatusFromError, executionStatusFromState, - ruleExecutionStatusToRaw, + getNextRun, isRuleSnoozed, lastRunFromError, - getNextRun, + ruleExecutionStatusToRaw, } from '../lib'; import { - RuleExecutionStatus, - RuleExecutionStatusErrorReasons, IntervalSchedule, RawRuleExecutionStatus, + RawRuleLastRun, RawRuleMonitoring, + RuleExecutionStatus, + RuleExecutionStatusErrorReasons, RuleTaskState, RuleTypeRegistry, - RawRuleLastRun, } from '../types'; import { asErr, asOk, isErr, isOk, map, resolveErr, Result } from '../lib/result_type'; import { taskInstanceToAlertTaskInstance } from './alert_task_instance'; @@ -47,18 +48,18 @@ import { partiallyUpdateRule, RULE_SAVED_OBJECT_TYPE } from '../saved_objects'; import { AlertInstanceContext, AlertInstanceState, - RuleTypeParams, - RuleTypeState, parseDuration, RawAlertInstance, - RuleLastRunOutcomeOrderMap, RuleAlertData, - SanitizedRule, + RuleLastRunOutcomeOrderMap, RuleNotifyWhen, + RuleTypeParams, + RuleTypeState, + SanitizedRule, } from '../../common'; import { NormalizedRuleType, UntypedNormalizedRuleType } from '../rule_type_registry'; import { getEsErrorMessage } from '../lib/errors'; -import { InMemoryMetrics, IN_MEMORY_METRICS } from '../monitoring'; +import { IN_MEMORY_METRICS, InMemoryMetrics } from '../monitoring'; import { RuleTaskInstance, RuleTaskRunResult, @@ -552,7 +553,10 @@ export class TaskRunner< message: err, stackTrace: err.stack, }; - throw new ErrorWithReason(RuleExecutionStatusErrorReasons.Execute, err); + throw createTaskRunError( + new ErrorWithReason(RuleExecutionStatusErrorReasons.Execute, err), + TaskErrorSource.USER + ); } } @@ -838,7 +842,10 @@ export class TaskRunner< const data = await getRuleAttributes(this.context, ruleId, spaceId); this.ruleData = { data }; } catch (err) { - const error = new ErrorWithReason(RuleExecutionStatusErrorReasons.Decrypt, err); + const error = createTaskRunError( + new ErrorWithReason(RuleExecutionStatusErrorReasons.Decrypt, err), + getErrorSource(err) + ); this.ruleData = { error }; } return this.ruleData; @@ -930,6 +937,14 @@ export class TaskRunner< timings: this.timer.toJson(), }); + const getTaskRunError = (state: Result) => { + return isErr(state) + ? { + taskRunError: createTaskRunError(state.error, getErrorSource(state.error)), + } + : {}; + }; + return { state: map( stateWithMetrics, @@ -977,9 +992,7 @@ export class TaskRunner< return { interval: retryInterval }; }), monitoring: this.ruleMonitoring.getMonitoring(), - ...(isErr(schedule) - ? { taskRunError: createTaskRunError(schedule.error, TaskErrorSource.FRAMEWORK) } - : {}), + ...getTaskRunError(stateWithMetrics), }; } diff --git a/x-pack/plugins/task_manager/server/metrics/task_run_metrics_aggregator.ts b/x-pack/plugins/task_manager/server/metrics/task_run_metrics_aggregator.ts index d41b5590341ff..d9f040a446b65 100644 --- a/x-pack/plugins/task_manager/server/metrics/task_run_metrics_aggregator.ts +++ b/x-pack/plugins/task_manager/server/metrics/task_run_metrics_aggregator.ts @@ -42,6 +42,8 @@ interface TaskRunCounts extends JsonObject { [TaskRunKeys.SUCCESS]: number; [TaskRunKeys.NOT_TIMED_OUT]: number; [TaskRunKeys.TOTAL]: number; + [TaskRunKeys.USER_ERRORS]: number; + [TaskRunKeys.FRAMEWORK_ERRORS]: number; } export interface TaskRunMetrics extends JsonObject { diff --git a/x-pack/test/plugin_api_integration/test_suites/task_manager/metrics_route.ts b/x-pack/test/plugin_api_integration/test_suites/task_manager/metrics_route.ts index 187df59c8ea53..fb8ee402fcc88 100644 --- a/x-pack/test/plugin_api_integration/test_suites/task_manager/metrics_route.ts +++ b/x-pack/test/plugin_api_integration/test_suites/task_manager/metrics_route.ts @@ -9,12 +9,14 @@ import expect from '@kbn/expect'; import url from 'url'; import supertest from 'supertest'; import { NodeMetrics } from '@kbn/task-manager-plugin/server/routes/metrics'; +import { ALERTING_CASES_SAVED_OBJECT_INDEX } from '@kbn/core-saved-objects-server'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const config = getService('config'); const retry = getService('retry'); const request = supertest(url.format(config.get('servers.kibana'))); + const es = getService('es'); const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); @@ -194,7 +196,9 @@ export default function ({ getService }: FtrProviderContext) { (metrics) => metrics?.metrics?.task_run?.value.by_type.alerting?.total === 1 && metrics?.metrics?.task_run?.value.by_type.alerting?.not_timed_out === 1 && - metrics?.metrics?.task_run?.value.by_type.alerting?.success === 1 + metrics?.metrics?.task_run?.value.by_type.alerting?.success === 1 && + metrics?.metrics?.task_run?.value.by_type.alerting?.user_errors === 0 && + metrics?.metrics?.task_run?.value.by_type.alerting?.framework_errors === 0 ) ).metrics; expect(initialMetrics).not.to.be(null); @@ -215,7 +219,9 @@ export default function ({ getService }: FtrProviderContext) { (m) => m?.metrics?.task_run?.value.by_type.alerting?.total === i + 2 && m?.metrics?.task_run?.value.by_type.alerting?.not_timed_out === i + 2 && - m?.metrics?.task_run?.value.by_type.alerting?.success === i + 2 + m?.metrics?.task_run?.value.by_type.alerting?.success === i + 2 && + m?.metrics?.task_run?.value.by_type.alerting?.user_errors === 0 && + m?.metrics?.task_run?.value.by_type.alerting?.framework_errors === 0 ) ).metrics; @@ -234,6 +240,76 @@ export default function ({ getService }: FtrProviderContext) { metrics?.metrics?.task_run?.value.by_type.alerting?.success === 0 ); }); + + it('should increment task run framework_error counter', async () => { + // modify the rule to get it fire a decryption error + await es.updateByQuery({ + index: ALERTING_CASES_SAVED_OBJECT_INDEX, + body: { + script: { + lang: 'painless', + source: 'ctx._source.alert.params.foo = "bar"', + }, + query: { ids: { values: [`alert:${ruleId}`] } }, + }, + refresh: true, + conflicts: 'proceed', + }); + + // run the rule and expect counters to increment + await request + .post('/api/sample_tasks/run_soon') + .set('kbn-xsrf', 'xxx') + .send({ task: { id: ruleId } }) + .expect(200); + + const metrics = ( + await getMetrics(true, (m) => m?.metrics?.task_run?.value.overall.framework_errors! === 1) + ).metrics; + + const total = metrics?.task_run?.value.overall.total || 0; + const success = metrics?.task_run?.value.overall.success || 0; + + expect(total - success).to.be(1); + }); + + it('should increment task run user_errors counter', async () => { + // modify the rule to get it fire a validation error + await es.updateByQuery({ + index: ALERTING_CASES_SAVED_OBJECT_INDEX, + body: { + script: { + lang: 'painless', + source: 'ctx._source.alert.params.foo = "bar"', + }, + query: { ids: { values: [`alert:${ruleId}`] } }, + }, + refresh: true, + conflicts: 'proceed', + }); + + // update apiKey to fix decryption error + await request + .post(`/api/alerts/alert/${ruleId}/_update_api_key`) + .set('kbn-xsrf', 'xxx') + .expect(204); + + // run the rule and expect counters to increment + await request + .post('/api/sample_tasks/run_soon') + .set('kbn-xsrf', 'xxx') + .send({ task: { id: ruleId } }) + .expect(200); + + const metrics = ( + await getMetrics(true, (m) => m?.metrics?.task_run?.value.overall.user_errors! === 1) + ).metrics; + + const total = metrics?.task_run?.value.overall.total || 0; + const success = metrics?.task_run?.value.overall.success || 0; + + expect(total - success).to.be(1); + }); }); describe('task overdue', () => { From b7a3f78ffe693876dcd096a39b208bb7e4cb120b Mon Sep 17 00:00:00 2001 From: Paulo Henrique Date: Fri, 29 Dec 2023 03:58:05 -0800 Subject: [PATCH 019/323] [Cloud Posture] [Quick wins] Fields selector improvements (#173887) ## Summary It fixes #168624 This PR is part of the [Quick Wins](https://github.com/elastic/security-team/issues/8254) improvements for 8.13.0. It adds the following improvements: - Added selector to view all fields or only selected fields to the Fields Selector. - Added option to reset fields to default on the Fields Selector - Removed gray border on top of the DataTables component - Added unit tests to cover FieldsSelectorTable functionalities. - Added FTR tests to cover Fields Selector functionalities. - Refactor the fields_selector file into multiple files under the fields_selector folder. ### Screenshots ![image](https://github.com/elastic/kibana/assets/19270322/9c6c4243-c4d2-46f3-848f-d4c85c5b072b) ![image](https://github.com/elastic/kibana/assets/19270322/50183b1b-bbb6-4a26-9875-d6201e63e197) https://github.com/elastic/kibana/assets/19270322/b9bab9b1-44cc-4de7-b280-3fefcc5bbbd4 --------- Co-authored-by: Maxim Kholod --- .../public/common/constants.ts | 2 + .../additional_controls.tsx | 25 +-- .../cloud_security_data_table.tsx | 5 + .../fields_selector.test.tsx | 69 ------- .../fields_selector/fields_selector_modal.tsx | 91 +++++++++ .../fields_selector_table.test.tsx | 126 +++++++++++++ .../fields_selector_table.tsx} | 178 +++++++++++------- .../fields_selector/index.ts | 10 + .../fields_selector/use_fields_modal.ts | 21 +++ .../cloud_security_data_table/use_styles.ts | 3 + .../public/components/test_subjects.ts | 5 + .../pages/findings.ts | 80 ++++++++ 12 files changed, 470 insertions(+), 145 deletions(-) delete mode 100644 x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector.test.tsx create mode 100644 x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_modal.tsx create mode 100644 x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx rename x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/{fields_selector.tsx => fields_selector/fields_selector_table.tsx} (55%) create mode 100644 x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/index.ts create mode 100644 x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/use_fields_modal.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/constants.ts b/x-pack/plugins/cloud_security_posture/public/common/constants.ts index 404ea0f036017..833f941c95292 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/constants.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/constants.ts @@ -49,6 +49,8 @@ export const LOCAL_STORAGE_DASHBOARD_BENCHMARK_SORT_KEY = 'cloudPosture:complianceDashboard:benchmarkSort'; export const LOCAL_STORAGE_FINDINGS_LAST_SELECTED_TAB_KEY = 'cloudPosture:findings:lastSelectedTab'; +export const SESSION_STORAGE_FIELDS_MODAL_SHOW_SELECTED = 'cloudPosture:fieldsModal:showSelected'; + export type CloudPostureIntegrations = Record< CloudSecurityPolicyTemplate, CloudPostureIntegrationProps diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/additional_controls.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/additional_controls.tsx index ff411d2dcd9e0..ea9b276339f6a 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/additional_controls.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/additional_controls.tsx @@ -4,13 +4,14 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import React, { useState } from 'react'; -import { i18n } from '@kbn/i18n'; +import React from 'react'; import { EuiButtonEmpty, EuiFlexItem } from '@elastic/eui'; import { type DataView } from '@kbn/data-views-plugin/common'; -import { FieldsSelectorModal } from './fields_selector'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { FieldsSelectorModal, useFieldsModal } from './fields_selector'; import { useStyles } from './use_styles'; import { getAbbreviatedNumber } from '../../common/utils/get_abbreviated_number'; +import { CSP_FIELDS_SELECTOR_OPEN_BUTTON } from '../test_subjects'; const GroupSelectorWrapper: React.FC = ({ children }) => { const styles = useStyles(); @@ -30,6 +31,7 @@ export const AdditionalControls = ({ onAddColumn, onRemoveColumn, groupSelectorComponent, + onResetColumns, }: { total: number; title: string; @@ -38,11 +40,10 @@ export const AdditionalControls = ({ onAddColumn: (column: string) => void; onRemoveColumn: (column: string) => void; groupSelectorComponent?: JSX.Element; + onResetColumns: () => void; }) => { - const [isFieldSelectorModalVisible, setIsFieldSelectorModalVisible] = useState(false); - - const closeModal = () => setIsFieldSelectorModalVisible(false); - const showModal = () => setIsFieldSelectorModalVisible(true); + const { isFieldSelectorModalVisible, closeFieldsSelectorModal, openFieldsSelectorModal } = + useFieldsModal(); return ( <> @@ -50,9 +51,10 @@ export const AdditionalControls = ({ )} @@ -62,13 +64,12 @@ export const AdditionalControls = ({ - {i18n.translate('xpack.csp.dataTable.fields', { - defaultMessage: 'Fields', - })} + {groupSelectorComponent && ( diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx index 50e81a0a0c7ec..84cea3e64115e 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx @@ -208,6 +208,10 @@ export const CloudSecurityDataTable = ({ return customCellRenderer(rows); }, [customCellRenderer, rows]); + const onResetColumns = () => { + setColumns(defaultColumns.map((c) => c.id)); + }; + if (!isLoading && !rows.length) { return ; } @@ -221,6 +225,7 @@ export const CloudSecurityDataTable = ({ onAddColumn={onAddColumn} onRemoveColumn={onRemoveColumn} groupSelectorComponent={groupSelectorComponent} + onResetColumns={onResetColumns} /> ); diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector.test.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector.test.tsx deleted file mode 100644 index 85d00612651eb..0000000000000 --- a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector.test.tsx +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { render, fireEvent } from '@testing-library/react'; -import { FieldsSelectorTable, FieldsSelectorCommonProps } from './fields_selector'; -import { TestProvider } from '../../test/test_provider'; - -const mockDataView = { - fields: { - getAll: () => [ - { id: 'field1', name: 'field1', customLabel: 'Label 1', visualizable: true }, - { id: 'field2', name: 'field2', customLabel: 'Label 2', visualizable: true }, - ], - }, -} as any; - -const renderFieldsTable = (props: Partial = {}) => { - const defaultProps: FieldsSelectorCommonProps = { - dataView: mockDataView, - columns: [], - onAddColumn: jest.fn(), - onRemoveColumn: jest.fn(), - }; - - return render( - - - - ); -}; - -describe('FieldsSelectorTable', () => { - it('renders the table with data correctly', () => { - const { getByText } = renderFieldsTable(); - - expect(getByText('Label 1')).toBeInTheDocument(); - expect(getByText('Label 2')).toBeInTheDocument(); - }); - - it('calls onAddColumn when a checkbox is checked', () => { - const onAddColumn = jest.fn(); - const { getAllByRole } = renderFieldsTable({ - onAddColumn, - }); - - const checkbox = getAllByRole('checkbox')[0]; - fireEvent.click(checkbox); - - expect(onAddColumn).toHaveBeenCalledWith('field1'); - }); - - it('calls onRemoveColumn when a checkbox is unchecked', () => { - const onRemoveColumn = jest.fn(); - const { getAllByRole } = renderFieldsTable({ - columns: ['field1', 'field2'], - onRemoveColumn, - }); - - const checkbox = getAllByRole('checkbox')[1]; - fireEvent.click(checkbox); - - expect(onRemoveColumn).toHaveBeenCalledWith('field2'); - }); -}); diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_modal.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_modal.tsx new file mode 100644 index 0000000000000..862fe219afa14 --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_modal.tsx @@ -0,0 +1,91 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React, { useCallback } from 'react'; +import { + EuiButton, + EuiButtonEmpty, + EuiModal, + EuiModalBody, + EuiModalFooter, + EuiModalHeader, + EuiModalHeaderTitle, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { type DataView } from '@kbn/data-views-plugin/common'; +import useSessionStorage from 'react-use/lib/useSessionStorage'; +import { SESSION_STORAGE_FIELDS_MODAL_SHOW_SELECTED } from '../../../common/constants'; +import { FieldsSelectorTable } from './fields_selector_table'; +import { + CSP_FIELDS_SELECTOR_CLOSE_BUTTON, + CSP_FIELDS_SELECTOR_MODAL, + CSP_FIELDS_SELECTOR_RESET_BUTTON, +} from '../../test_subjects'; + +interface FieldsSelectorModalProps { + dataView: DataView; + columns: string[]; + onAddColumn: (column: string) => void; + onRemoveColumn: (column: string) => void; + closeModal: () => void; + onResetColumns: () => void; +} + +const title = i18n.translate('xpack.csp.dataTable.fieldsModalTitle', { + defaultMessage: 'Fields', +}); + +export const FieldsSelectorModal = ({ + closeModal, + dataView, + columns, + onAddColumn, + onRemoveColumn, + onResetColumns, +}: FieldsSelectorModalProps) => { + const [isFilterSelectedEnabled, setIsFilterSelectedEnabled] = useSessionStorage( + SESSION_STORAGE_FIELDS_MODAL_SHOW_SELECTED, + false + ); + + const onFilterSelectedChange = useCallback( + (enabled: boolean) => { + setIsFilterSelectedEnabled(enabled); + }, + [setIsFilterSelectedEnabled] + ); + + return ( + + + {title} + + + + + + + + + + + + + + ); +}; diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx new file mode 100644 index 0000000000000..58caad6e26f82 --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.test.tsx @@ -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 React from 'react'; +import { render, fireEvent } from '@testing-library/react'; +import { waitForEuiPopoverOpen } from '@elastic/eui/lib/test/rtl'; +import { TestProvider } from '../../../test/test_provider'; +import { FieldsSelectorTable, FieldsSelectorTableProps } from './fields_selector_table'; + +const mockDataView = { + fields: { + getAll: () => [ + { id: 'field1', name: 'field1', customLabel: 'Label 1', visualizable: true }, + { id: 'field2', name: 'field2', customLabel: 'Label 2', visualizable: true }, + ], + }, +} as any; + +const mockOnFilterSelectedChange = jest.fn(); + +const renderFieldsTable = (props: Partial = {}) => { + const defaultProps: FieldsSelectorTableProps = { + dataView: mockDataView, + columns: [], + onAddColumn: jest.fn(), + onRemoveColumn: jest.fn(), + title: 'title', + onFilterSelectedChange: mockOnFilterSelectedChange, + isFilterSelectedEnabled: false, + }; + + return render( + + + + ); +}; + +describe('FieldsSelectorTable', () => { + it('renders the table with data correctly', () => { + const { getByText } = renderFieldsTable(); + + expect(getByText('Label 1')).toBeInTheDocument(); + expect(getByText('Label 2')).toBeInTheDocument(); + }); + + it('calls onAddColumn when a checkbox is checked', () => { + const onAddColumn = jest.fn(); + const { getAllByRole } = renderFieldsTable({ + onAddColumn, + }); + + const checkbox = getAllByRole('checkbox')[0]; + fireEvent.click(checkbox); + + expect(onAddColumn).toHaveBeenCalledWith('field1'); + }); + + it('calls onRemoveColumn when a checkbox is unchecked', () => { + const onRemoveColumn = jest.fn(); + const { getAllByRole } = renderFieldsTable({ + columns: ['field1', 'field2'], + onRemoveColumn, + }); + + const checkbox = getAllByRole('checkbox')[1]; + fireEvent.click(checkbox); + + expect(onRemoveColumn).toHaveBeenCalledWith('field2'); + }); + + describe('View selected', () => { + beforeEach(() => { + mockOnFilterSelectedChange.mockClear(); + }); + + it('should render "view all" option when filterSelected is not enabled', () => { + const { getByTestId } = renderFieldsTable({ isFilterSelectedEnabled: false }); + + expect(getByTestId('viewSelectorButton').textContent).toBe('View: all'); + }); + + it('should render "view selected" option when filterSelected is not enabled', () => { + const { getByTestId } = renderFieldsTable({ isFilterSelectedEnabled: true }); + + expect(getByTestId('viewSelectorButton').textContent).toBe('View: selected'); + }); + + it('should open the view selector with button click', async () => { + const { queryByTestId, getByTestId } = renderFieldsTable(); + + expect(queryByTestId('viewSelectorMenu')).not.toBeInTheDocument(); + expect(queryByTestId('viewSelectorOption-all')).not.toBeInTheDocument(); + expect(queryByTestId('viewSelectorOption-selected')).not.toBeInTheDocument(); + + getByTestId('viewSelectorButton').click(); + await waitForEuiPopoverOpen(); + + expect(getByTestId('viewSelectorMenu')).toBeInTheDocument(); + expect(getByTestId('viewSelectorOption-all')).toBeInTheDocument(); + expect(getByTestId('viewSelectorOption-selected')).toBeInTheDocument(); + }); + + it('should callback when "view all" option is clicked', async () => { + const { getByTestId } = renderFieldsTable({ isFilterSelectedEnabled: false }); + + getByTestId('viewSelectorButton').click(); + await waitForEuiPopoverOpen(); + getByTestId('viewSelectorOption-all').click(); + expect(mockOnFilterSelectedChange).toHaveBeenCalledWith(false); + }); + + it('should callback when "view selected" option is clicked', async () => { + const { getByTestId } = renderFieldsTable({ isFilterSelectedEnabled: false }); + + getByTestId('viewSelectorButton').click(); + await waitForEuiPopoverOpen(); + getByTestId('viewSelectorOption-selected').click(); + expect(mockOnFilterSelectedChange).toHaveBeenCalledWith(true); + }); + }); +}); diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.tsx similarity index 55% rename from x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector.tsx rename to x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.tsx index 750e2eb8d8448..bae971749bc78 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/fields_selector_table.tsx @@ -4,25 +4,33 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import React, { useState, useMemo } from 'react'; + import { EuiBasicTableColumn, - EuiButton, + EuiButtonEmpty, EuiCheckbox, + EuiContextMenuItem, + EuiContextMenuPanel, EuiFlexGroup, EuiFlexItem, + EuiHorizontalRule, EuiInMemoryTable, - EuiModal, - EuiModalBody, - EuiModalFooter, - EuiModalHeader, - EuiModalHeaderTitle, + EuiPopover, EuiSearchBarProps, EuiText, } from '@elastic/eui'; +import { DataView } from '@kbn/data-views-plugin/common'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import { type DataView } from '@kbn/data-views-plugin/common'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; + +const ACTION_COLUMN_WIDTH = '24px'; +const defaultSorting = { + sort: { + field: 'name', + direction: 'asc', + }, +} as const; interface Field { id: string; @@ -30,30 +38,37 @@ interface Field { displayName: string; } -export interface FieldsSelectorCommonProps { +const VIEW_LABEL = i18n.translate('xpack.csp.dataTable.fieldsModal.viewLabel', { + defaultMessage: 'View', +}); + +const VIEW_VALUE_SELECTED = i18n.translate('xpack.csp.dataTable.fieldsModal.viewSelected', { + defaultMessage: 'selected', +}); + +const VIEW_VALUE_ALL = i18n.translate('xpack.csp.dataTable.fieldsModal.viewAll', { + defaultMessage: 'all', +}); + +export interface FieldsSelectorTableProps { dataView: DataView; columns: string[]; onAddColumn: (column: string) => void; onRemoveColumn: (column: string) => void; + title: string; + onFilterSelectedChange: (enabled: boolean) => void; + isFilterSelectedEnabled: boolean; } -const ACTION_COLUMN_WIDTH = '24px'; -const defaultSorting = { - sort: { - field: 'name', - direction: 'asc', - }, -} as const; - export const FieldsSelectorTable = ({ title, dataView, columns, onAddColumn, onRemoveColumn, -}: FieldsSelectorCommonProps & { - title: string; -}) => { + isFilterSelectedEnabled, + onFilterSelectedChange, +}: FieldsSelectorTableProps) => { const dataViewFields = useMemo(() => { return dataView.fields .getAll() @@ -69,6 +84,25 @@ export const FieldsSelectorTable = ({ const [fields, setFields] = useState(dataViewFields); + useEffect(() => { + if (isFilterSelectedEnabled) { + const filteredItems = dataViewFields.filter((field) => { + return columns.includes(field.id); + }); + setFields(filteredItems); + } else { + setFields(dataViewFields); + } + }, [columns, dataViewFields, isFilterSelectedEnabled]); + + const [isPopoverOpen, setIsPopoverOpen] = useState(false); + + const togglePopover = useCallback(() => { + setIsPopoverOpen((open) => !open); + }, []); + const closePopover = useCallback(() => { + setIsPopoverOpen(false); + }, []); let debounceTimeoutId: ReturnType; const onQueryChange: EuiSearchBarProps['onChange'] = ({ query }) => { @@ -85,8 +119,6 @@ export const FieldsSelectorTable = ({ }, 300); }; - const [fieldsSelected, setFieldsSelected] = useState(columns); - const tableColumns: Array> = [ { field: 'action', @@ -96,13 +128,11 @@ export const FieldsSelectorTable = ({ render: (_, { id }: Field) => { return ( { const isChecked = e.target.checked; - setFieldsSelected( - isChecked ? [...fieldsSelected, id] : fieldsSelected.filter((f) => f !== id) - ); return isChecked ? onAddColumn(id) : onRemoveColumn(id); }} /> @@ -164,9 +194,65 @@ export const FieldsSelectorTable = ({ />
+ + + {`${VIEW_LABEL}: ${isFilterSelectedEnabled ? VIEW_VALUE_SELECTED : VIEW_VALUE_ALL}`} + + } + > + { + onFilterSelectedChange(false); + closePopover(); + }} + > + {`${VIEW_LABEL} ${VIEW_VALUE_ALL}`} + , + , + { + onFilterSelectedChange(true); + closePopover(); + }} + > + {`${VIEW_LABEL} ${VIEW_VALUE_SELECTED}`} + , + ]} + /> + + ); - }, [fields.length]); + }, [ + closePopover, + fields.length, + isFilterSelectedEnabled, + isPopoverOpen, + onFilterSelectedChange, + togglePopover, + ]); return ( ); }; - -export const FieldsSelectorModal = ({ - closeModal, - dataView, - columns, - onAddColumn, - onRemoveColumn, -}: FieldsSelectorCommonProps & { - closeModal: () => void; -}) => { - const title = i18n.translate('xpack.csp.dataTable.fieldsModalTitle', { - defaultMessage: 'Fields', - }); - - return ( - - - {title} - - - - - - - Close - - - - ); -}; diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/index.ts b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/index.ts new file mode 100644 index 0000000000000..d097d5098a73c --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/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 { FieldsSelectorModal } from './fields_selector_modal'; +export { FieldsSelectorTable } from './fields_selector_table'; +export { useFieldsModal } from './use_fields_modal'; diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/use_fields_modal.ts b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/use_fields_modal.ts new file mode 100644 index 0000000000000..9ca88d3d97b76 --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/fields_selector/use_fields_modal.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. + */ + +import { useState } from 'react'; + +export const useFieldsModal = () => { + const [isFieldSelectorModalVisible, setIsFieldSelectorModalVisible] = useState(false); + + const closeFieldsSelectorModal = () => setIsFieldSelectorModalVisible(false); + const openFieldsSelectorModal = () => setIsFieldSelectorModalVisible(true); + + return { + isFieldSelectorModalVisible, + closeFieldsSelectorModal, + openFieldsSelectorModal, + }; +}; diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/use_styles.ts b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/use_styles.ts index a2b923bf26b5b..7823698ebd5c8 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/use_styles.ts +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/use_styles.ts @@ -70,6 +70,9 @@ export const useStyles = () => { & .unifiedDataTable__cellValue { font-family: ${euiTheme.font.family}; } + & .unifiedDataTable__inner .euiDataGrid__controls { + border-top: none; + } `; const groupBySelector = css` 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 c51d562fec44a..250b5d01c82ce 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 @@ -44,6 +44,11 @@ export const CSP_GROUPING = 'cloudSecurityGrouping'; export const CSP_GROUPING_LOADING = 'cloudSecurityGroupingLoading'; export const CSP_FINDINGS_COMPLIANCE_SCORE = 'cloudSecurityFindingsComplianceScore'; +export const CSP_FIELDS_SELECTOR_MODAL = 'cloudSecurityFieldsSelectorModal'; +export const CSP_FIELDS_SELECTOR_OPEN_BUTTON = 'cloudSecurityFieldsSelectorOpenButton'; +export const CSP_FIELDS_SELECTOR_RESET_BUTTON = 'cloudSecurityFieldsSelectorResetButton'; +export const CSP_FIELDS_SELECTOR_CLOSE_BUTTON = 'cloudSecurityFieldsSelectorCloseButton'; + export const AWS_CREDENTIALS_TYPE_SELECTOR_TEST_SUBJ = 'aws-credentials-type-selector'; export const AWS_CREDENTIALS_TYPE_OPTIONS_TEST_SUBJ = { CLOUDFORMATION: 'aws-cloudformation-setup-option', diff --git a/x-pack/test/cloud_security_posture_functional/pages/findings.ts b/x-pack/test/cloud_security_posture_functional/pages/findings.ts index bf45dddebc0b5..69d100c1fbf62 100644 --- a/x-pack/test/cloud_security_posture_functional/pages/findings.ts +++ b/x-pack/test/cloud_security_posture_functional/pages/findings.ts @@ -13,6 +13,7 @@ import type { FtrProviderContext } from '../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const queryBar = getService('queryBar'); const filterBar = getService('filterBar'); + const testSubjects = getService('testSubjects'); const retry = getService('retry'); const pageObjects = getPageObjects(['common', 'findings', 'header']); const chance = new Chance(); @@ -209,5 +210,84 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); }); }); + + describe('Findings - Fields selector', () => { + const CSP_FIELDS_SELECTOR_MODAL = 'cloudSecurityFieldsSelectorModal'; + const CSP_FIELDS_SELECTOR_OPEN_BUTTON = 'cloudSecurityFieldsSelectorOpenButton'; + const CSP_FIELDS_SELECTOR_RESET_BUTTON = 'cloudSecurityFieldsSelectorResetButton'; + const CSP_FIELDS_SELECTOR_CLOSE_BUTTON = 'cloudSecurityFieldsSelectorCloseButton'; + + it('Add fields to the Findings DataTable', async () => { + const fieldsButton = await testSubjects.find(CSP_FIELDS_SELECTOR_OPEN_BUTTON); + await fieldsButton.click(); + await testSubjects.existOrFail(CSP_FIELDS_SELECTOR_MODAL); + + const agentIdCheckbox = await testSubjects.find( + 'cloud-security-fields-selector-item-agent.id' + ); + await agentIdCheckbox.click(); + + const agentNameCheckbox = await testSubjects.find( + 'cloud-security-fields-selector-item-agent.name' + ); + await agentNameCheckbox.click(); + + await testSubjects.existOrFail('dataGridHeaderCell-agent.id'); + await testSubjects.existOrFail('dataGridHeaderCell-agent.name'); + + const closeFieldsButton = await testSubjects.find(CSP_FIELDS_SELECTOR_CLOSE_BUTTON); + await closeFieldsButton.click(); + await testSubjects.missingOrFail(CSP_FIELDS_SELECTOR_MODAL); + }); + + it('Remove fields from the Findings DataTable', async () => { + const fieldsButton = await testSubjects.find(CSP_FIELDS_SELECTOR_OPEN_BUTTON); + await fieldsButton.click(); + + const agentIdCheckbox = await testSubjects.find( + 'cloud-security-fields-selector-item-agent.id' + ); + await agentIdCheckbox.click(); + + const agentNameCheckbox = await testSubjects.find( + 'cloud-security-fields-selector-item-agent.name' + ); + await agentNameCheckbox.click(); + + await testSubjects.missingOrFail('dataGridHeaderCell-agent.id'); + await testSubjects.missingOrFail('dataGridHeaderCell-agent.name'); + + const closeFieldsButton = await testSubjects.find(CSP_FIELDS_SELECTOR_CLOSE_BUTTON); + await closeFieldsButton.click(); + await testSubjects.missingOrFail(CSP_FIELDS_SELECTOR_MODAL); + }); + it('Reset fields to default', async () => { + const fieldsButton = await testSubjects.find(CSP_FIELDS_SELECTOR_OPEN_BUTTON); + await fieldsButton.click(); + + const agentIdCheckbox = await testSubjects.find( + 'cloud-security-fields-selector-item-agent.id' + ); + await agentIdCheckbox.click(); + + const agentNameCheckbox = await testSubjects.find( + 'cloud-security-fields-selector-item-agent.name' + ); + await agentNameCheckbox.click(); + + await testSubjects.existOrFail('dataGridHeaderCell-agent.id'); + await testSubjects.existOrFail('dataGridHeaderCell-agent.name'); + + const resetFieldsButton = await testSubjects.find(CSP_FIELDS_SELECTOR_RESET_BUTTON); + await resetFieldsButton.click(); + + await testSubjects.missingOrFail('dataGridHeaderCell-agent.id'); + await testSubjects.missingOrFail('dataGridHeaderCell-agent.name'); + + const closeFieldsButton = await testSubjects.find(CSP_FIELDS_SELECTOR_CLOSE_BUTTON); + await closeFieldsButton.click(); + await testSubjects.missingOrFail(CSP_FIELDS_SELECTOR_MODAL); + }); + }); }); } From b31d537b82ca9c4ac55f23ecc57b4328d9dfafb2 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Fri, 29 Dec 2023 13:36:14 +0100 Subject: [PATCH 020/323] [Fleet] Allow Remote ES to be the default data output (#174056) --- .../settings/components/edit_output_flyout/use_output_form.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 59b1189818225..a1d0fb484b44f 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 @@ -874,7 +874,7 @@ export function useOutputForm(onSucess: () => void, output?: Output) { name: nameInput.value, type: outputType.RemoteElasticsearch, hosts: elasticsearchUrlInput.value, - is_default: false, + is_default: defaultOutputInput.value, is_default_monitoring: defaultMonitoringOutputInput.value, preset: presetInput.value, config_yaml: additionalYamlConfigInput.value, From 3c0a48c86f927fb4998b734b7134203b8fd93090 Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Fri, 29 Dec 2023 19:08:11 +0100 Subject: [PATCH 021/323] [Discover] Improve histogram functional tests (#174038) Improving Discover histogram tests to fix occasional flakiness due to a redundant time range UI interaction --- .../apps/discover/group1/_discover_histogram.ts | 12 +++--------- .../common/discover/group1/_discover_histogram.ts | 11 +++-------- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/test/functional/apps/discover/group1/_discover_histogram.ts b/test/functional/apps/discover/group1/_discover_histogram.ts index 72ad1854a605e..64e9b0e47dc90 100644 --- a/test/functional/apps/discover/group1/_discover_histogram.ts +++ b/test/functional/apps/discover/group1/_discover_histogram.ts @@ -43,6 +43,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { ); await security.testUser.setRoles(['kibana_admin', 'long_window_logstash']); await kibanaServer.uiSettings.replace(defaultSettings); + await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings(); await PageObjects.common.navigateToApp('discover'); }); after(async () => { @@ -65,13 +66,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('should modify the time range when the histogram is brushed', async function () { await PageObjects.common.navigateToApp('discover'); await PageObjects.discover.waitUntilSearchingHasFinished(); - await PageObjects.timePicker.setDefaultAbsoluteRange(); - await PageObjects.discover.waitUntilSearchingHasFinished(); // this is the number of renderings of the histogram needed when new data is fetched let renderingCountInc = 1; const prevRenderingCount = await elasticChart.getVisualizationRenderingCount(); - await PageObjects.timePicker.setDefaultAbsoluteRange(); - await PageObjects.discover.waitUntilSearchingHasFinished(); + await queryBar.submitQuery(); await retry.waitFor('chart rendering complete', async () => { const actualCount = await elasticChart.getVisualizationRenderingCount(); const expectedCount = prevRenderingCount + renderingCountInc; @@ -107,8 +105,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('should update correctly when switching data views and brushing the histogram', async () => { await PageObjects.common.navigateToApp('discover'); await PageObjects.discover.waitUntilSearchingHasFinished(); - await PageObjects.timePicker.setDefaultAbsoluteRange(); - await PageObjects.discover.waitUntilSearchingHasFinished(); await PageObjects.discover.selectIndexPattern('logstash-*'); await PageObjects.discover.waitUntilSearchingHasFinished(); await PageObjects.discover.selectIndexPattern('long-window-logstash-*'); @@ -281,7 +277,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('should recover from broken query search when clearing the query bar', async () => { await PageObjects.common.navigateToApp('discover'); await PageObjects.discover.waitUntilSearchingHasFinished(); - await PageObjects.timePicker.setDefaultAbsoluteRange(); // Make sure the chart is visible await testSubjects.click('unifiedHistogramChartOptionsToggle'); await testSubjects.click('unifiedHistogramChartToggle'); @@ -294,8 +289,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // now remove the query await queryBar.clearQuery(); - await queryBar.clickQuerySubmitButton(); - await PageObjects.header.waitUntilLoadingHasFinished(); + await queryBar.submitQuery(); await PageObjects.discover.waitUntilSearchingHasFinished(); // check no error state expect(await PageObjects.discover.isChartVisible()).to.be(true); diff --git a/x-pack/test_serverless/functional/test_suites/common/discover/group1/_discover_histogram.ts b/x-pack/test_serverless/functional/test_suites/common/discover/group1/_discover_histogram.ts index becf81ab3da9f..ccba699ffa710 100644 --- a/x-pack/test_serverless/functional/test_suites/common/discover/group1/_discover_histogram.ts +++ b/x-pack/test_serverless/functional/test_suites/common/discover/group1/_discover_histogram.ts @@ -42,6 +42,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { ); await security.testUser.setRoles(['kibana_admin', 'long_window_logstash']); await kibanaServer.uiSettings.replace(defaultSettings); + await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings(); await PageObjects.common.navigateToApp('discover'); }); after(async () => { @@ -64,13 +65,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('should modify the time range when the histogram is brushed', async function () { await PageObjects.common.navigateToApp('discover'); await PageObjects.discover.waitUntilSearchingHasFinished(); - await PageObjects.timePicker.setDefaultAbsoluteRange(); - await PageObjects.discover.waitUntilSearchingHasFinished(); // this is the number of renderings of the histogram needed when new data is fetched let renderingCountInc = 1; const prevRenderingCount = await elasticChart.getVisualizationRenderingCount(); - await PageObjects.timePicker.setDefaultAbsoluteRange(); - await PageObjects.discover.waitUntilSearchingHasFinished(); + await queryBar.submitQuery(); await retry.waitFor('chart rendering complete', async () => { const actualCount = await elasticChart.getVisualizationRenderingCount(); const expectedCount = prevRenderingCount + renderingCountInc; @@ -108,8 +106,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('should update correctly when switching data views and brushing the histogram', async () => { await PageObjects.common.navigateToApp('discover'); await PageObjects.discover.waitUntilSearchingHasFinished(); - await PageObjects.timePicker.setDefaultAbsoluteRange(); - await PageObjects.discover.waitUntilSearchingHasFinished(); await PageObjects.discover.selectIndexPattern('logstash-*'); await PageObjects.discover.waitUntilSearchingHasFinished(); await PageObjects.discover.selectIndexPattern('long-window-logstash-*'); @@ -118,7 +114,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.discover.waitUntilSearchingHasFinished(); // TODO: The Serverless sidebar causes `PageObjects.discover.brushHistogram()` // to brush a different range in the histogram, resulting in a different count - expect(await PageObjects.discover.getHitCount()).to.be('12'); + expect(await PageObjects.discover.getHitCount()).to.be('10'); }); it('should update the histogram timerange when the query is resubmitted', async function () { @@ -284,7 +280,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('should recover from broken query search when clearing the query bar', async () => { await PageObjects.common.navigateToApp('discover'); await PageObjects.discover.waitUntilSearchingHasFinished(); - await PageObjects.timePicker.setDefaultAbsoluteRange(); // Make sure the chart is visible await testSubjects.click('unifiedHistogramChartOptionsToggle'); await testSubjects.click('unifiedHistogramChartToggle'); From 60492a923a96e128397eadcb7bb7b98971629640 Mon Sep 17 00:00:00 2001 From: Kurt Date: Sat, 30 Dec 2023 00:03:37 -0500 Subject: [PATCH 022/323] Upgrade apidoc-markdown from 7.2.4 to 7.3.2 (#174006) ## Summary Upgrade apidoc-markdown from 7.2.4 to 7.3.2 Commit log: https://github.com/rigwild/apidoc-markdown/compare/v7.2.4...v7.3.2 --- package.json | 2 +- yarn.lock | 615 ++++++++++++++++++++++++++++----------------------- 2 files changed, 340 insertions(+), 277 deletions(-) diff --git a/package.json b/package.json index 8cbf3288874ed..800d511122f2a 100644 --- a/package.json +++ b/package.json @@ -1486,7 +1486,7 @@ "abab": "^2.0.4", "aggregate-error": "^3.1.0", "antlr4ts-cli": "^0.5.0-alpha.3", - "apidoc-markdown": "^7.2.4", + "apidoc-markdown": "^7.3.0", "argsplit": "^1.0.5", "autoprefixer": "^10.4.7", "axe-core": "^4.8.2", diff --git a/yarn.lock b/yarn.lock index 784e60fc139bb..02c8939697ab6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1479,6 +1479,11 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== +"@colors/colors@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" + integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== + "@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" @@ -7344,6 +7349,27 @@ schema-utils "^3.0.0" source-map "^0.7.3" +"@pnpm/config.env-replace@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" + integrity sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w== + +"@pnpm/network.ca-file@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz#2ab05e09c1af0cdf2fcf5035bea1484e222f7983" + integrity sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA== + dependencies: + graceful-fs "4.2.10" + +"@pnpm/npm-conf@^2.1.0": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz#0058baf1c26cbb63a828f0193795401684ac86f0" + integrity sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA== + dependencies: + "@pnpm/config.env-replace" "^1.1.0" + "@pnpm/network.ca-file" "^1.0.1" + config-chain "^1.1.11" + "@polka/url@^1.0.0-next.20": version "1.0.0-next.21" resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" @@ -7539,16 +7565,16 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - "@sindresorhus/is@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.0.0.tgz#2ff674e9611b45b528896d820d3d7a812de2f0e4" integrity sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ== +"@sindresorhus/is@^5.2.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.6.0.tgz#41dd6093d34652cddb5d5bdeee04eafc33826668" + integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g== + "@sinonjs/commons@^1", "@sinonjs/commons@^1.3.0", "@sinonjs/commons@^1.4.0", "@sinonjs/commons@^1.7.0": version "1.7.2" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.2.tgz#505f55c74e0272b43f6c52d81946bed7058fc0e2" @@ -8546,13 +8572,6 @@ regenerator-runtime "^0.13.7" resolve-from "^5.0.0" -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - "@szmarczak/http-timer@^4.0.5": version "4.0.5" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" @@ -8560,6 +8579,13 @@ dependencies: defer-to-connect "^2.0.0" +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + dependencies: + defer-to-connect "^2.0.1" + "@tanstack/match-sorter-utils@^8.7.0": version "8.7.0" resolved "https://registry.yarnpkg.com/@tanstack/match-sorter-utils/-/match-sorter-utils-8.7.0.tgz#60b09a6d3d7974d5f86f1318053c1bd5a85fb0be" @@ -9410,6 +9436,11 @@ resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== +"@types/http-cache-semantics@^4.0.2": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" + integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== + "@types/http-proxy@^1.17.4", "@types/http-proxy@^1.17.8": version "1.17.9" resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a" @@ -11093,7 +11124,7 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= -ansi-align@^3.0.0: +ansi-align@^3.0.0, ansi-align@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== @@ -11245,30 +11276,30 @@ anymatch@^3.0.0, anymatch@^3.0.3, anymatch@^3.1.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -apidoc-light@^0.53.1: - version "0.53.1" - resolved "https://registry.yarnpkg.com/apidoc-light/-/apidoc-light-0.53.1.tgz#823821854cc6bc15c597efce0fa6794995a39b37" - integrity sha512-kvCewAGMUHM2I1p+5f0A+4oV2aiyoGHNqSXWyBgQtxGffYHVft+1aBmrKQxF5O8xZMzv2EiQhBlALR/lCJB5jg== +apidoc-light@^0.54.0: + version "0.54.0" + resolved "https://registry.yarnpkg.com/apidoc-light/-/apidoc-light-0.54.0.tgz#8d819bcd893ca96a60d754c59b33dcf5f9255b59" + integrity sha512-sOmzxKO3xeMrLDV0e/qjT/hSG4wvRT2QYwaFLiyVbDiU9lbIfWW83yFby9/N/HfPZP8buvNd+rPGL1iVyP9CDQ== dependencies: - fs-extra "^10.1.0" - glob "^8.0.3" + fs-extra "^11.2.0" + glob "^10.3.10" iconv-lite "^0.6.3" klaw-sync "^6.0.0" lodash "^4.17.21" - markdown-it "^13.0.1" - semver "^7.3.8" - winston "^3.8.2" + markdown-it "^14.0.0" + semver "^7.5.4" + winston "^3.11.0" -apidoc-markdown@^7.2.4: - version "7.2.4" - resolved "https://registry.yarnpkg.com/apidoc-markdown/-/apidoc-markdown-7.2.4.tgz#7363c3aee58037664b15533ec4736501eb319417" - integrity sha512-/yq2xydejDXGc/a2mYqLfDrngs+onAES0dnjvPeX+tZ1XjhqJzqkrDQOPRDHoKoO20S2NY74v/MUt5ha1AkalQ== +apidoc-markdown@^7.3.0: + version "7.3.2" + resolved "https://registry.yarnpkg.com/apidoc-markdown/-/apidoc-markdown-7.3.2.tgz#64c1ad45ba29dd57f376419a900cd59c786624a0" + integrity sha512-0nOfTWSaFfbgJ673ztWiup5CKauuwmhg7hJ0jR7gb0TDK1RX3b0unl6soc8UVhdjYgrvRBRvujMUB/KUF5OG3Q== dependencies: - apidoc-light "^0.53.1" - ejs "^3.1.8" - semver "^7.3.8" - update-notifier "^5.1.0" - yargs "^17.6.0" + apidoc-light "^0.54.0" + ejs "^3.1.9" + semver "^7.5.4" + update-notifier "^7.0.0" + yargs "^17.7.2" app-module-path@^2.2.0: version "2.2.0" @@ -12275,7 +12306,7 @@ bowser@^1.7.3: resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.9.4.tgz#890c58a2813a9d3243704334fa81b96a5c150c9a" integrity sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ== -boxen@^5.0.0, boxen@^5.1.2: +boxen@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== @@ -12289,6 +12320,20 @@ boxen@^5.0.0, boxen@^5.1.2: widest-line "^3.1.0" wrap-ansi "^7.0.0" +boxen@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-7.1.1.tgz#f9ba525413c2fec9cdb88987d835c4f7cad9c8f4" + integrity sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog== + dependencies: + ansi-align "^3.0.1" + camelcase "^7.0.1" + chalk "^5.2.0" + cli-boxes "^3.0.0" + string-width "^5.1.2" + type-fest "^2.13.0" + widest-line "^4.0.1" + wrap-ansi "^8.1.0" + bplist-parser@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.1.1.tgz#d60d5dcc20cba6dc7e1f299b35d3e1f95dafbae6" @@ -12672,18 +12717,23 @@ cacheable-lookup@^5.0.3: resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz#049fdc59dffdd4fc285e8f4f82936591bd59fec3" integrity sha512-W+JBqF9SWe18A72XFzN/V/CULFzPm7sBXzzR6ekkE+3tLG72wFZrBiBZhrZuDoYexop4PHJVdFAKb/Nj9+tm9w== -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== +cacheable-lookup@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27" + integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w== + +cacheable-request@^10.2.8: + version "10.2.14" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-10.2.14.tgz#eb915b665fda41b79652782df3f553449c406b9d" + integrity sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ== dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" + "@types/http-cache-semantics" "^4.0.2" + get-stream "^6.0.1" + http-cache-semantics "^4.1.1" + keyv "^4.5.3" + mimic-response "^4.0.0" + normalize-url "^8.0.0" + responselike "^3.0.0" cacheable-request@^7.0.2: version "7.0.2" @@ -12781,6 +12831,11 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-7.0.1.tgz#f02e50af9fd7782bc8b88a3558c32fd3a388f048" + integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== + camelize@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" @@ -12909,10 +12964,10 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^5.1.2: - version "5.2.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.2.0.tgz#249623b7d66869c673699fb66d65723e54dfcfb3" - integrity sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA== +chalk@^5.1.2, chalk@^5.2.0, chalk@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== chance@1.0.18: version "1.0.18" @@ -13121,6 +13176,11 @@ cli-boxes@^2.2.1: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== +cli-boxes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" + integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== + cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -13523,25 +13583,24 @@ concaveman@*: robust-predicates "^2.0.4" tinyqueue "^2.0.3" -config-chain@^1.1.12: - version "1.1.12" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" - integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== +config-chain@^1.1.11, config-chain@^1.1.12: + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== dependencies: ini "^1.3.4" proto-list "~1.2.1" -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== +configstore@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-6.0.0.tgz#49eca2ebc80983f77e09394a1a56e0aca8235566" + integrity sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA== dependencies: - dot-prop "^5.2.0" - graceful-fs "^4.1.2" - make-dir "^3.0.0" - unique-string "^2.0.0" - write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" + dot-prop "^6.0.1" + graceful-fs "^4.2.6" + unique-string "^3.0.0" + write-file-atomic "^3.0.3" + xdg-basedir "^5.0.1" connect-history-api-fallback@^2.0.0: version "2.0.0" @@ -13884,10 +13943,12 @@ crypto-random-string@^1.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== +crypto-random-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-4.0.0.tgz#5a3cc53d7dd86183df5da0312816ceeeb5bb1fc2" + integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA== + dependencies: + type-fest "^1.0.1" css-box-model@^1.2.1: version "1.2.1" @@ -14625,13 +14686,6 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= - dependencies: - mimic-response "^1.0.0" - decompress-response@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" @@ -14736,12 +14790,7 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -defer-to-connect@^2.0.0: +defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== @@ -15272,10 +15321,10 @@ dot-case@^3.0.3, dot-case@^3.0.4: no-case "^3.0.4" tslib "^2.0.3" -dot-prop@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" - integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== +dot-prop@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== dependencies: is-obj "^2.0.0" @@ -15334,11 +15383,6 @@ duplexer2@^0.1.2, duplexer2@~0.1.4: dependencies: readable-stream "^2.0.2" -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - duplexer@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" @@ -15401,10 +15445,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" - integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== +ejs@^3.1.8, ejs@^3.1.9: + version "3.1.9" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== dependencies: jake "^10.8.5" @@ -15657,11 +15701,6 @@ entities@~2.1.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== -entities@~3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" - integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== - env-paths@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" @@ -15960,10 +15999,10 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== +escape-goat@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-4.0.0.tgz#9424820331b510b0666b98f7873fe11ac4aa8081" + integrity sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg== escape-html@^1.0.3, escape-html@~1.0.3: version "1.0.3" @@ -17199,6 +17238,11 @@ form-data-encoder@1.7.2: resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.2.tgz#1f1ae3dccf58ed4690b86d87e4f57c654fbab040" integrity sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A== +form-data-encoder@^2.1.2: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5" + integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw== + form-data@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" @@ -17331,7 +17375,7 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-extra@^10.0.0, fs-extra@^10.0.1, fs-extra@^10.1.0: +fs-extra@^10.0.0, fs-extra@^10.0.1: version "10.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== @@ -17340,6 +17384,15 @@ fs-extra@^10.0.0, fs-extra@^10.0.1, fs-extra@^10.1.0: jsonfile "^6.0.1" universalify "^2.0.0" +fs-extra@^11.2.0: + version "11.2.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -17565,7 +17618,7 @@ get-stdin@^8.0.0: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== -get-stream@^4.0.0, get-stream@^4.1.0: +get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== @@ -17723,7 +17776,7 @@ glob@7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@8.1.0, glob@^8.0.3: +glob@8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== @@ -17925,22 +17978,22 @@ got@^11.8.2: p-cancelable "^2.0.0" responselike "^2.0.0" -got@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" +got@^12.1.0: + version "12.6.1" + resolved "https://registry.yarnpkg.com/got/-/got-12.6.1.tgz#8869560d1383353204b5a9435f782df9c091f549" + integrity sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ== + dependencies: + "@sindresorhus/is" "^5.2.0" + "@szmarczak/http-timer" "^5.0.1" + cacheable-lookup "^7.0.0" + cacheable-request "^10.2.8" + decompress-response "^6.0.0" + form-data-encoder "^2.1.2" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^3.0.0" gpt-tokenizer@^2.1.2: version "2.1.2" @@ -17949,6 +18002,11 @@ gpt-tokenizer@^2.1.2: dependencies: rfc4648 "^1.5.2" +graceful-fs@4.2.10: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + graceful-fs@4.X, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.11, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.8, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" @@ -18148,11 +18206,6 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== - has@^1.0.0, has@^1.0.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -18648,6 +18701,14 @@ http2-wrapper@^1.0.0-beta.5.2: quick-lru "^5.1.1" resolve-alpn "^1.0.0" +http2-wrapper@^2.1.10: + version "2.2.1" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.1.tgz#310968153dcdedb160d8b72114363ef5fce1f64a" + integrity sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" + https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" @@ -18787,11 +18848,6 @@ import-in-the-middle@1.5.0: cjs-module-lexer "^1.2.2" module-details-from-path "^1.0.3" -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= - import-lazy@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" @@ -19279,6 +19335,11 @@ is-hexadecimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.1.tgz#6e084bbc92061fbb0971ec58b6ce6d404e24da69" integrity sha1-bghLvJIGH7sJcexYts5tQE4k2mk= +is-in-ci@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-in-ci/-/is-in-ci-0.1.0.tgz#5e07d6a02ec3a8292d3f590973357efa3fceb0d3" + integrity sha512-d9PXLEY0v1iJ64xLiQMJ51J128EYHAaOR4yZqQi8aHGfw6KgifM3/Viw1oZZ1GCVmb3gBuyhLyHj0HgR2DhSXQ== + is-installed-globally@^0.4.0, is-installed-globally@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" @@ -19332,10 +19393,10 @@ is-nil@^1.0.0: resolved "https://registry.yarnpkg.com/is-nil/-/is-nil-1.0.1.tgz#2daba29e0b585063875e7b539d071f5b15937969" integrity sha1-LauingtYUGOHXntTnQcfWxWTeWk= -is-npm@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" - integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== +is-npm@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-6.0.0.tgz#b59e75e8915543ca5d881ecff864077cba095261" + integrity sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ== is-number-object@^1.0.4: version "1.0.4" @@ -19630,11 +19691,6 @@ is-wsl@^2.1.1, is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== - is2@^2.0.6: version "2.0.9" resolved "https://registry.yarnpkg.com/is2/-/is2-2.0.9.tgz#ff63b441f90de343fa8fac2125ee170da8e8240d" @@ -20541,11 +20597,6 @@ json-bigint@^1.0.0: dependencies: bignumber.js "^9.0.0" -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= - json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" @@ -20773,17 +20824,10 @@ kea@^2.6.0: resolved "https://registry.yarnpkg.com/kea/-/kea-2.6.0.tgz#774a82188e0fb52cdb18b72843a875ee857f3807" integrity sha512-+yaLyZx8h2v96aL01XIRZjqA8Qk4fIUziznSKnkjDItUU8YnH75xER6+vMHT5EHC3MJeSScxIx5UuqZl30DBdg== -keyv@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" - integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA== - dependencies: - json-buffer "3.0.0" - -keyv@^4.0.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.0.tgz#dbce9ade79610b6e641a9a65f2f6499ba06b9bc6" - integrity sha512-2YvuMsA+jnFGtBareKqgANOEKe1mk3HKiXu2fRmAfyxG0MJAywNhi5ttWA3PMjl4NmpyjZNbFifR2vNjW1znfA== +keyv@^4.0.0, keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" @@ -20905,12 +20949,12 @@ language-tags@=1.0.5: dependencies: language-subtag-registry "~0.3.2" -latest-version@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== +latest-version@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-7.0.0.tgz#843201591ea81a4d404932eeb61240fe04e9e5da" + integrity sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg== dependencies: - package-json "^6.3.0" + package-json "^8.1.0" launchdarkly-eventsource@1.4.4: version "1.4.4" @@ -21060,12 +21104,12 @@ linkify-it@^3.0.1: dependencies: uc.micro "^1.0.1" -linkify-it@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-4.0.1.tgz#01f1d5e508190d06669982ba31a7d9f56a5751ec" - integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw== +linkify-it@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421" + integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== dependencies: - uc.micro "^1.0.1" + uc.micro "^2.0.0" listenercount@~1.0.1: version "1.0.1" @@ -21482,16 +21526,16 @@ lower-case@^2.0.2: dependencies: tslib "^2.0.3" -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - lowercase-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + lowlight@^1.14.0: version "1.17.0" resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.17.0.tgz#a1143b2fba8239df8cd5893f9fe97aaf8465af4a" @@ -21700,16 +21744,17 @@ markdown-it@^12.3.2: mdurl "^1.0.1" uc.micro "^1.0.5" -markdown-it@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.1.tgz#c6ecc431cacf1a5da531423fc6a42807814af430" - integrity sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q== +markdown-it@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.0.0.tgz#b4b2ddeb0f925e88d981f84c183b59bac9e3741b" + integrity sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw== dependencies: argparse "^2.0.1" - entities "~3.0.1" - linkify-it "^4.0.1" - mdurl "^1.0.1" - uc.micro "^1.0.5" + entities "^4.4.0" + linkify-it "^5.0.0" + mdurl "^2.0.0" + punycode.js "^2.3.1" + uc.micro "^2.0.0" markdown-table@^2.0.0: version "2.0.0" @@ -21888,6 +21933,11 @@ mdurl@^1.0.0, mdurl@^1.0.1: resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= +mdurl@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0" + integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== + measured-core@^1.51.1: version "1.51.1" resolved "https://registry.yarnpkg.com/measured-core/-/measured-core-1.51.1.tgz#98989705c00bfb0d8a20e665a9f8d6e246a40518" @@ -22161,7 +22211,7 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-response@^1.0.0, mimic-response@^1.0.1: +mimic-response@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== @@ -22171,6 +22221,11 @@ mimic-response@^3.1.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== +mimic-response@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f" + integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== + min-document@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" @@ -23055,16 +23110,16 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== - normalize-url@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== +normalize-url@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.0.tgz#593dbd284f743e8dcf6a5ddf8fadff149c82701a" + integrity sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw== + now-and-later@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-3.0.0.tgz#cdc045dc5b894b35793cf276cc3206077bb7302d" @@ -23573,16 +23628,16 @@ p-all@^2.1.0: dependencies: p-map "^2.0.0" -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - p-cancelable@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== +p-cancelable@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" + integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== + p-event@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.1.0.tgz#e92bb866d7e8e5b732293b1c8269d38e9982bf8e" @@ -23737,15 +23792,15 @@ package-hash@^4.0.0: lodash.flattendeep "^4.4.0" release-zalgo "^1.0.0" -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== +package-json@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-8.1.1.tgz#3e9948e43df40d1e8e78a85485f1070bf8f03dc8" + integrity sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA== dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" + got "^12.1.0" + registry-auth-token "^5.0.1" + registry-url "^6.0.0" + semver "^7.3.7" pako@^0.2.5: version "0.2.9" @@ -24667,11 +24722,6 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -25025,6 +25075,11 @@ pumpify@^1.3.3: inherits "^2.0.3" pump "^2.0.0" +punycode.js@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7" + integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== + punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" @@ -25040,12 +25095,12 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -pupa@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" - integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== +pupa@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-3.1.0.tgz#f15610274376bbcc70c9a3aa8b505ea23f41c579" + integrity sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug== dependencies: - escape-goat "^2.0.0" + escape-goat "^4.0.0" puppeteer-core@21.5.2: version "21.5.2" @@ -25263,7 +25318,7 @@ rc-pagination@^1.20.1: prop-types "^15.5.7" react-lifecycles-compat "^3.0.4" -rc@^1.2.7, rc@^1.2.8: +rc@1.2.8, rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -26187,19 +26242,19 @@ regexpu-core@^5.3.1: unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.1.0" -registry-auth-token@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.1.1.tgz#40a33be1e82539460f94328b0f7f0f84c16d9479" - integrity sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA== +registry-auth-token@^5.0.1: + version "5.0.2" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.2.tgz#8b026cc507c8552ebbe06724136267e63302f756" + integrity sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ== dependencies: - rc "^1.2.8" + "@pnpm/npm-conf" "^2.1.0" -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== +registry-url@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-6.0.1.tgz#056d9343680f2f64400032b1e199faa692286c58" + integrity sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q== dependencies: - rc "^1.2.8" + rc "1.2.8" regjsparser@^0.9.1: version "0.9.1" @@ -26520,7 +26575,7 @@ resize-observer-polyfill@^1.5.1: resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== -resolve-alpn@^1.0.0: +resolve-alpn@^1.0.0, resolve-alpn@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== @@ -26599,13 +26654,6 @@ resolve@^2.0.0-next.4: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= - dependencies: - lowercase-keys "^1.0.0" - responselike@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.0.tgz#26391bcc3174f750f9a79eacc40a12a5c42d7723" @@ -26613,6 +26661,13 @@ responselike@^2.0.0: dependencies: lowercase-keys "^2.0.0" +responselike@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626" + integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg== + dependencies: + lowercase-keys "^3.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -27058,12 +27113,12 @@ selfsigned@^2.0.1: dependencies: node-forge "^1" -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== +semver-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-4.0.0.tgz#3afcf5ed6d62259f5c72d0d5d50dffbdc9680df5" + integrity sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA== dependencies: - semver "^6.3.0" + semver "^7.3.5" "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.2" @@ -27082,7 +27137,7 @@ semver@7.5.4, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: +semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -28962,11 +29017,6 @@ to-object-path@^0.3.0: dependencies: kind-of "^3.0.2" -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" @@ -29295,6 +29345,16 @@ type-fest@^0.8.0, type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type-fest@^1.0.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" + integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== + +type-fest@^2.13.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -29410,6 +29470,11 @@ uc.micro@^1.0.1, uc.micro@^1.0.5: resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376" integrity sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg== +uc.micro@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.0.0.tgz#84b3c335c12b1497fd9e80fcd3bfa7634c363ff1" + integrity sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig== + uglify-js@^3.1.4: version "3.17.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" @@ -29586,12 +29651,12 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== +unique-string@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-3.0.0.tgz#84a1c377aff5fd7a8bc6b55d8244b2bd90d75b9a" + integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ== dependencies: - crypto-random-string "^2.0.0" + crypto-random-string "^4.0.0" unist-builder@2.0.3, unist-builder@^2.0.0: version "2.0.3" @@ -29746,25 +29811,23 @@ update-browserslist-db@^1.0.13: escalade "^3.1.1" picocolors "^1.0.0" -update-notifier@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" - integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== +update-notifier@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-7.0.0.tgz#295aa782dadab784ed4073f7ffaea1fb2123031c" + integrity sha512-Hv25Bh+eAbOLlsjJreVPOs4vd51rrtCrmhyOJtbpAojro34jS4KQaEp4/EvlHJX7jSO42VvEFpkastVyXyIsdQ== dependencies: - boxen "^5.0.0" - chalk "^4.1.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" + boxen "^7.1.1" + chalk "^5.3.0" + configstore "^6.0.0" + import-lazy "^4.0.0" + is-in-ci "^0.1.0" is-installed-globally "^0.4.0" - is-npm "^5.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.1.0" - pupa "^2.1.1" - semver "^7.3.4" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" + is-npm "^6.0.0" + latest-version "^7.0.0" + pupa "^3.1.0" + semver "^7.5.4" + semver-diff "^4.0.0" + xdg-basedir "^5.1.0" uri-js@^4.2.2: version "4.2.2" @@ -29796,13 +29859,6 @@ url-loader@^4.1.1: mime-types "^2.1.27" schema-utils "^3.0.0" -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= - dependencies: - prepend-http "^2.0.0" - url-parse@^1.5.10, url-parse@^1.5.3: version "1.5.10" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" @@ -30953,6 +31009,13 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" +widest-line@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" + integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== + dependencies: + string-width "^5.0.1" + wildcard@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" @@ -30979,12 +31042,12 @@ winston-transport@^4.5.0: readable-stream "^3.6.0" triple-beam "^1.3.0" -winston@^3.8.2: - version "3.8.2" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.8.2.tgz#56e16b34022eb4cff2638196d9646d7430fdad50" - integrity sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew== +winston@^3.11.0, winston@^3.8.2: + version "3.11.0" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.11.0.tgz#2d50b0a695a2758bb1c95279f0a88e858163ed91" + integrity sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g== dependencies: - "@colors/colors" "1.5.0" + "@colors/colors" "^1.6.0" "@dabh/diagnostics" "^2.0.2" async "^3.2.3" is-stream "^2.0.0" @@ -31078,7 +31141,7 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^3.0.0: +write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== @@ -31113,10 +31176,10 @@ x-default-browser@^0.4.0: optionalDependencies: default-browser-id "^1.0.4" -xdg-basedir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== +xdg-basedir@^5.0.1, xdg-basedir@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-5.1.0.tgz#1efba19425e73be1bc6f2a6ceb52a3d2c884c0c9" + integrity sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ== xml-crypto@^5.0.0: version "5.0.0" @@ -31280,7 +31343,7 @@ yargs@16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@17.7.2, yargs@^17.2.1, yargs@^17.3.1, yargs@^17.4.0, yargs@^17.6.0, yargs@^17.7.1, yargs@^17.7.2: +yargs@17.7.2, yargs@^17.2.1, yargs@^17.3.1, yargs@^17.4.0, yargs@^17.7.1, yargs@^17.7.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== From e4f86bb1e9efca8b7b3e96d0f56cf0156967b700 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Sat, 30 Dec 2023 01:21:54 -0500 Subject: [PATCH 023/323] [api-docs] 2023-12-30 Daily api_docs build (#174067) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/567 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- api_docs/ai_assistant_management_observability.mdx | 2 +- api_docs/ai_assistant_management_selection.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/apm_data_access.mdx | 2 +- api_docs/asset_manager.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_experiments.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/dataset_quality.mdx | 2 +- api_docs/deprecations_by_api.mdx | 2 +- api_docs/deprecations_by_plugin.mdx | 2 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/elastic_assistant.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_annotation_listing.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_actions_types.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- api_docs/kbn_alerting_api_integration_helpers.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerting_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- api_docs/kbn_analytics_collection_utils.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_common.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_analytics_shippers_gainsight.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_bfetch_error.mdx | 2 +- api_docs/kbn_calculate_auto.mdx | 2 +- api_docs/kbn_calculate_width_from_char_count.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_owners.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- api_docs/kbn_content_management_content_editor.mdx | 2 +- api_docs/kbn_content_management_tabbed_table_list_view.mdx | 2 +- api_docs/kbn_content_management_table_list_view.mdx | 2 +- api_docs/kbn_content_management_table_list_view_common.mdx | 2 +- api_docs/kbn_content_management_table_list_view_table.mdx | 2 +- api_docs/kbn_content_management_utils.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- api_docs/kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- api_docs/kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- api_docs/kbn_core_application_browser_internal.mdx | 2 +- api_docs/kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- api_docs/kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- api_docs/kbn_core_custom_branding_browser_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- api_docs/kbn_core_custom_branding_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- api_docs/kbn_core_deprecations_browser_internal.mdx | 2 +- api_docs/kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- api_docs/kbn_core_deprecations_server_internal.mdx | 2 +- api_docs/kbn_core_deprecations_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_client_server_internal.mdx | 2 +- api_docs/kbn_core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- api_docs/kbn_core_elasticsearch_server_internal.mdx | 2 +- api_docs/kbn_core_elasticsearch_server_mocks.mdx | 2 +- api_docs/kbn_core_environment_server_internal.mdx | 2 +- api_docs/kbn_core_environment_server_mocks.mdx | 2 +- api_docs/kbn_core_execution_context_browser.mdx | 2 +- api_docs/kbn_core_execution_context_browser_internal.mdx | 2 +- api_docs/kbn_core_execution_context_browser_mocks.mdx | 2 +- api_docs/kbn_core_execution_context_common.mdx | 2 +- api_docs/kbn_core_execution_context_server.mdx | 2 +- api_docs/kbn_core_execution_context_server_internal.mdx | 2 +- api_docs/kbn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- api_docs/kbn_core_http_context_server_mocks.mdx | 2 +- api_docs/kbn_core_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- api_docs/kbn_core_http_resources_server_internal.mdx | 2 +- api_docs/kbn_core_http_resources_server_mocks.mdx | 2 +- api_docs/kbn_core_http_router_server_internal.mdx | 2 +- api_docs/kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- api_docs/kbn_core_injected_metadata_browser_mocks.mdx | 2 +- api_docs/kbn_core_integrations_browser_internal.mdx | 2 +- api_docs/kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_collectors_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- api_docs/kbn_core_notifications_browser_internal.mdx | 2 +- api_docs/kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- api_docs/kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_contracts_browser.mdx | 2 +- api_docs/kbn_core_plugins_contracts_server.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- api_docs/kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_api_browser.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_base_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- api_docs/kbn_core_saved_objects_browser_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- .../kbn_core_saved_objects_import_export_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_migration_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- api_docs/kbn_core_saved_objects_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- api_docs/kbn_core_test_helpers_deprecations_getters.mdx | 2 +- api_docs/kbn_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- api_docs/kbn_core_test_helpers_model_versions.mdx | 2 +- api_docs/kbn_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- api_docs/kbn_core_ui_settings_browser_internal.mdx | 2 +- api_docs/kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- api_docs/kbn_core_ui_settings_server_internal.mdx | 2 +- api_docs/kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- api_docs/kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- api_docs/kbn_core_user_settings_server_internal.mdx | 2 +- api_docs/kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_custom_icons.mdx | 2 +- api_docs/kbn_custom_integrations.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_data_service.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_discover_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_agent_utils.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_elastic_assistant_common.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_event_annotation_common.mdx | 2 +- api_docs/kbn_event_annotation_components.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_field_utils.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- api_docs/kbn_ftr_common_functional_services.mdx | 2 +- api_docs/kbn_ftr_common_functional_ui_services.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- api_docs/kbn_language_documentation_popover.mdx | 2 +- api_docs/kbn_lens_embeddable_utils.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_management_cards_navigation.mdx | 2 +- api_docs/kbn_management_settings_application.mdx | 2 +- api_docs/kbn_management_settings_components_field_category.mdx | 2 +- api_docs/kbn_management_settings_components_field_input.mdx | 2 +- api_docs/kbn_management_settings_components_field_row.mdx | 2 +- api_docs/kbn_management_settings_components_form.mdx | 2 +- api_docs/kbn_management_settings_field_definition.mdx | 2 +- api_docs/kbn_management_settings_ids.mdx | 2 +- api_docs/kbn_management_settings_section_registry.mdx | 2 +- api_docs/kbn_management_settings_types.mdx | 2 +- api_docs/kbn_management_settings_utilities.mdx | 2 +- api_docs/kbn_management_storybook_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_category_validator.mdx | 2 +- api_docs/kbn_ml_chi2test.mdx | 2 +- api_docs/kbn_ml_data_frame_analytics_utils.mdx | 2 +- api_docs/kbn_ml_data_grid.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_date_utils.mdx | 2 +- api_docs/kbn_ml_error_utils.mdx | 2 +- api_docs/kbn_ml_in_memory_table.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_kibana_theme.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_ui_actions.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- api_docs/kbn_observability_alerting_test_data.mdx | 2 +- api_docs/kbn_observability_get_padded_alert_time_range_util.mdx | 2 +- api_docs/kbn_openapi_bundler.mdx | 2 +- api_docs/kbn_openapi_generator.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- api_docs/kbn_panel_loader.mdx | 2 +- api_docs/kbn_performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_profiling_utils.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_react_kibana_context_common.mdx | 2 +- api_docs/kbn_react_kibana_context_render.mdx | 2 +- api_docs/kbn_react_kibana_context_root.mdx | 2 +- api_docs/kbn_react_kibana_context_styled.mdx | 2 +- api_docs/kbn_react_kibana_context_theme.mdx | 2 +- api_docs/kbn_react_kibana_mount.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_reporting_common.mdx | 2 +- api_docs/kbn_reporting_export_types_csv.mdx | 2 +- api_docs/kbn_reporting_export_types_csv_common.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf_common.mdx | 2 +- api_docs/kbn_reporting_export_types_png.mdx | 2 +- api_docs/kbn_reporting_export_types_png_common.mdx | 2 +- api_docs/kbn_reporting_mocks_server.mdx | 2 +- api_docs/kbn_reporting_public.mdx | 2 +- api_docs/kbn_reporting_server.mdx | 2 +- api_docs/kbn_resizable_layout.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_router_utils.mdx | 2 +- api_docs/kbn_rrule.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_search_api_panels.mdx | 2 +- api_docs/kbn_search_connectors.mdx | 2 +- api_docs/kbn_search_errors.mdx | 2 +- api_docs/kbn_search_index_documents.mdx | 2 +- api_docs/kbn_search_response_warnings.mdx | 2 +- api_docs/kbn_security_plugin_types_common.mdx | 2 +- api_docs/kbn_security_plugin_types_public.mdx | 2 +- api_docs/kbn_security_plugin_types_server.mdx | 2 +- api_docs/kbn_security_solution_features.mdx | 2 +- api_docs/kbn_security_solution_navigation.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- api_docs/kbn_security_solution_storybook_config.mdx | 2 +- api_docs/kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- api_docs/kbn_securitysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_grouping.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_alerting_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- api_docs/kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_serverless_common_settings.mdx | 2 +- api_docs/kbn_serverless_observability_settings.mdx | 2 +- api_docs/kbn_serverless_project_switcher.mdx | 2 +- api_docs/kbn_serverless_search_settings.mdx | 2 +- api_docs/kbn_serverless_security_settings.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- api_docs/kbn_shared_ux_button_exit_full_screen.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_chrome_navigation.mdx | 2 +- api_docs/kbn_shared_ux_error_boundary.mdx | 2 +- api_docs/kbn_shared_ux_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_analytics_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_template.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_config.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- api_docs/kbn_shared_ux_prompt_no_data_views.mdx | 2 +- api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_text_based_editor.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_triggers_actions_ui_types.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_unified_data_table.mdx | 2 +- api_docs/kbn_unified_doc_viewer.mdx | 2 +- api_docs/kbn_unified_field_list.mdx | 2 +- api_docs/kbn_unsaved_changes_badge.mdx | 2 +- api_docs/kbn_url_state.mdx | 2 +- api_docs/kbn_use_tracked_promise.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kbn_visualization_ui_components.mdx | 2 +- api_docs/kbn_visualization_utils.mdx | 2 +- api_docs/kbn_xstate_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kbn_zod_helpers.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/links.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/log_explorer.mdx | 2 +- api_docs/logs_shared.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/metrics_data_access.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/mock_idp_plugin.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/no_data_page.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/observability_a_i_assistant.mdx | 2 +- api_docs/observability_log_explorer.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/painless_lab.mdx | 2 +- api_docs/plugin_directory.mdx | 2 +- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/profiling_data_access.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/security_solution_ess.mdx | 2 +- api_docs/security_solution_serverless.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/text_based_languages.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_doc_viewer.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/uptime.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 635 files changed, 635 insertions(+), 635 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 15701bd5189e8..9c8c88a8b9971 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-12-29 +date: 2023-12-30 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 9e3f7c91b947b..ddd3f29ed2e6e 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_observability.mdx b/api_docs/ai_assistant_management_observability.mdx index adf7822d7d4e6..b02b43b0b4df3 100644 --- a/api_docs/ai_assistant_management_observability.mdx +++ b/api_docs/ai_assistant_management_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementObservability title: "aiAssistantManagementObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementObservability plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementObservability'] --- import aiAssistantManagementObservabilityObj from './ai_assistant_management_observability.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index 0c3a1bf38ac59..c2a27f8ceb32f 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 20c62231432d3..ab4138077c7ee 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 067065556af9a..d7761315f1ccf 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index c50c2ef475987..bb36b74bac1b7 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index 0314baee05df5..4a63fa714064c 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index 18a5c15842868..0a93791b8ba1e 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-12-29 +date: 2023-12-30 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 f3edb7591fe07..685a7f607f2a1 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-12-29 +date: 2023-12-30 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 3df7b228e54d7..1eaad0242ab89 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-12-29 +date: 2023-12-30 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 a066a091f9986..33aa4e6c1f418 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 4a67132c857c9..73b3f425d5b08 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index cd342922d7aae..7083d4f253795 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-12-29 +date: 2023-12-30 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 638c1685614e4..27918d04b2170 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index 275f3b638baa1..01feb34304de2 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-12-29 +date: 2023-12-30 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 40c24f42a113e..5fbc599af9ddc 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-12-29 +date: 2023-12-30 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 bdb1e5ad36926..2afbee279d6f1 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-12-29 +date: 2023-12-30 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 522931f5840e8..c19d0da33acac 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-12-29 +date: 2023-12-30 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 88c39d30b90ec..308258154d536 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-12-29 +date: 2023-12-30 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 7f247ca55a586..d93fd627831f3 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-12-29 +date: 2023-12-30 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 0e6e8b46d0908..723d40cdbeb6f 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-12-29 +date: 2023-12-30 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 76e2225b355b5..9b9c186fcf6cb 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-12-29 +date: 2023-12-30 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 b54c08eaffd8c..b986917808552 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-12-29 +date: 2023-12-30 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 a420fe4f18dbe..18f7d24d64d12 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 8ac72f1eb1605..d4dce453e727c 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 7742e681b1d2c..e9c7ea39ce285 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 107b1dcd256b9..2705373b1af2f 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 2b9240b81f08c..1c9b38e0b00c6 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-12-29 +date: 2023-12-30 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 2f9e849706f00..c38b73b606b30 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-12-29 +date: 2023-12-30 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 9f3789d35068d..9298720214561 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 8c0c59efa0cae..22978a82b9241 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 8d7045bf5610e..29ceaec232444 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index d738db3bb6b78..278d4b0f82b5e 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 97f055e8468e7..051629d494a46 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 06c081562a206..2f84e7e02dfcf 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 3f1491b4dd94e..cd5f7fe17f521 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 79a9c283df900..bfa5809bbe354 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-12-29 +date: 2023-12-30 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 3faacb6659fdd..6553f38b9ecde 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-12-29 +date: 2023-12-30 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 26bc5f4f96f37..f21c6df801e19 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-12-29 +date: 2023-12-30 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 1226255576dcd..136414ac98668 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index 5b1a4a1aca000..6f384a6f062a4 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index ebca8d29c6ae7..5c365d406980f 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 94707f442c2f7..6038fcdb24d9c 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-12-29 +date: 2023-12-30 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 f482a166288cf..4e3f62dc17a7e 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-12-29 +date: 2023-12-30 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 1bb0a98ffc0ab..c64df96691661 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-12-29 +date: 2023-12-30 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 53ef7bf0bb026..405eae3ddbe53 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 5734085f8661f..b40a9882f97a5 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index 4cc60c587ab4a..0125d3461b1e2 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 54cc03f1966e0..25e0497db9260 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index fafe03d696f1b..8f2c08ddafb01 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-12-29 +date: 2023-12-30 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 e7a2341546756..b45e8b0ee9292 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-12-29 +date: 2023-12-30 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 33b022173174a..8f7868474363c 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 67fa30627c520..4efdd9dfa208a 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-12-29 +date: 2023-12-30 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 3e70cd358334a..03bba533362ff 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-12-29 +date: 2023-12-30 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 a8a30326aab4a..d1aa48972f4c4 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-12-29 +date: 2023-12-30 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 0ed472bc16dda..a773ae9713812 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-12-29 +date: 2023-12-30 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 78175ac0b81de..f641d40888d42 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-12-29 +date: 2023-12-30 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 8cba344120224..f539a92223fb9 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-12-29 +date: 2023-12-30 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 329c7f89c4e47..276e5ce169483 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-12-29 +date: 2023-12-30 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 ec5a5dd205d31..77c357b4618a7 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-12-29 +date: 2023-12-30 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 5ebfb55f46490..ddc4d7f1ddb49 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-12-29 +date: 2023-12-30 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 9a1608f9a2f0f..ca985cc904eca 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-12-29 +date: 2023-12-30 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 83aae91b23487..1b3bb7ffa4caa 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-12-29 +date: 2023-12-30 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 6ea5ff7064000..b2a519a5ce2d8 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-12-29 +date: 2023-12-30 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 bccd5edc38114..57ba9abe53358 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-12-29 +date: 2023-12-30 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 4b0a82cbdc218..38907832eb974 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-12-29 +date: 2023-12-30 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 b9a64c40cc415..1109755df716f 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index dab8fffceb64e..d2e2ad0fa2912 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-12-29 +date: 2023-12-30 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 04f33b526939b..4230ab987e8ae 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-12-29 +date: 2023-12-30 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 16fd4322e1ddb..32c82852a7b05 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-12-29 +date: 2023-12-30 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 813984f6721dc..7cc5c0ea9f362 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-12-29 +date: 2023-12-30 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 cb93df29b3a65..ca9638aee2346 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-12-29 +date: 2023-12-30 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 a89f438a1fe3a..c1679f3ef9a6b 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-12-29 +date: 2023-12-30 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 81ff622b729bd..9ab512a532b8a 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-12-29 +date: 2023-12-30 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 f2002a850b921..891912481c91f 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-12-29 +date: 2023-12-30 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 f7e552f8964fb..02eb3968ba10d 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-12-29 +date: 2023-12-30 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 26c1f9a390464..c6afd1c5c71d0 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-12-29 +date: 2023-12-30 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 0a9ecc827865e..03c77a6de07da 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-12-29 +date: 2023-12-30 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 aba512dc17190..343b183738640 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-12-29 +date: 2023-12-30 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 6300019491104..ebc7286fd11bf 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index 2532bfbda2908..b0769fdacd781 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 8ab4ebffc3d45..fb40727380738 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 4a8f26dd34d9d..55f011c96c2e5 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index 7d88bf478f6cf..d5ecf8b513bae 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 50493c32bb956..2d5b43fe7a616 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index 26d8820c2d784..b67cdd2808652 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 96a26028a8692..b827e236693b4 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-12-29 +date: 2023-12-30 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 7cf99ba8b5419..fe09e3611965d 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-12-29 +date: 2023-12-30 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 204d7849f5827..5d2152cefcf37 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 1fd73354b059f..25604f84026ca 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index 2bdc06edd1e23..48ab3f6cfd751 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index f9b6b949574db..a247a7804bf2a 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-12-29 +date: 2023-12-30 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 f168f00b35730..b2d776f84a1c0 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-12-29 +date: 2023-12-30 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 7ceb4302de738..7448c9917a32f 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-12-29 +date: 2023-12-30 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 89f7ab5ec28c8..6c7e2a26b5be5 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-12-29 +date: 2023-12-30 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 0bcec9d9c7da6..7defc452b6f19 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-12-29 +date: 2023-12-30 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 75225ec611d91..8270e717a3929 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-12-29 +date: 2023-12-30 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 fff602be454c7..85e957f78c1b2 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-12-29 +date: 2023-12-30 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 d721bef91c5b2..805e4e8cfb8c6 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-12-29 +date: 2023-12-30 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 b56f251debcbc..18e0585c265f3 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-12-29 +date: 2023-12-30 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 8a4e6d3b073d1..d593ef64b5ec8 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_bfetch_error.mdx b/api_docs/kbn_bfetch_error.mdx index adf4e356c36ae..292fa69f6aee5 100644 --- a/api_docs/kbn_bfetch_error.mdx +++ b/api_docs/kbn_bfetch_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-bfetch-error title: "@kbn/bfetch-error" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/bfetch-error plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bfetch-error'] --- import kbnBfetchErrorObj from './kbn_bfetch_error.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index 669a2d72bd10e..45be3a2d1695a 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index f22af62577cca..8474101454791 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index b2beb76040952..26e2514d72a2a 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-12-29 +date: 2023-12-30 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 b777c8b16b70d..bcea477bc0f0b 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-12-29 +date: 2023-12-30 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 e76dbf933bc69..d463c0faa34ad 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-12-29 +date: 2023-12-30 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 2c09b9ac53b70..bcf4f272f2d78 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-12-29 +date: 2023-12-30 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 7b3966477e12c..c3fbb33bbd5d8 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-12-29 +date: 2023-12-30 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 675ab179555d1..87077bc85cb87 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-12-29 +date: 2023-12-30 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 8e5e7fb5f4526..bb1193b14cfa3 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-12-29 +date: 2023-12-30 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 25aa77f57e9ab..69e0f97d25a09 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-12-29 +date: 2023-12-30 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 8fdf1ccf67965..9b5268aa65e0f 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index 879067ba7cfbc..02620df54f3f4 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 81c0a07cdddfe..f212f0d3defcf 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-12-29 +date: 2023-12-30 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 a1ac4d7039c73..cb1047ff5b2a7 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-12-29 +date: 2023-12-30 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 a7714b30082b6..0c1d7f809f613 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-12-29 +date: 2023-12-30 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 69810ad80319d..0185c7a13c607 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-12-29 +date: 2023-12-30 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 cffeb8e61d298..7932b305c1f3a 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-12-29 +date: 2023-12-30 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 3393f237d9a11..f6fda3c87f7de 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-12-29 +date: 2023-12-30 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 383aee5be00e7..b791789508569 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index 17ac626b87865..d6c5b8cc9508b 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index bc6baa12a6e59..dd21843e0204c 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index d5396a3680d65..5464447a27437 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 8b80b82073223..3d0b5b7a261d8 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-12-29 +date: 2023-12-30 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 39dbc9da3ebe0..3029e99cc934f 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-12-29 +date: 2023-12-30 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 38112c91342d9..ed7da6e7140c9 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-12-29 +date: 2023-12-30 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 64392b8794471..6b62f08a8d08f 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-12-29 +date: 2023-12-30 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 2ec96f6a64ac7..298d945a1a8f3 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-12-29 +date: 2023-12-30 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 ebd81f4d1a028..90cc529354699 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-12-29 +date: 2023-12-30 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 3b4a05ba7a996..11ca608f17f9b 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-12-29 +date: 2023-12-30 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 fb0d0173a3d51..6c8d8ec0b8c49 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-12-29 +date: 2023-12-30 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 5027ab8ccad0c..2c2fba8bf9e79 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-12-29 +date: 2023-12-30 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 1918a8bd7722f..2ff001947d8b6 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-12-29 +date: 2023-12-30 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 84e3c54e693b4..153f85f982d03 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-12-29 +date: 2023-12-30 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 9946bc3511d11..f563d4a65beb6 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-12-29 +date: 2023-12-30 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 8445208e991ab..8512437fb4347 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-12-29 +date: 2023-12-30 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 d7a79e7e86a33..dd2d958e52eed 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-12-29 +date: 2023-12-30 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 01a1f1469e0aa..4544aba96352f 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-12-29 +date: 2023-12-30 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 855190c215433..51a66d7b53765 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-12-29 +date: 2023-12-30 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 8e32ba07a63c6..28278a1392b25 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-12-29 +date: 2023-12-30 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 3d196b71d1080..06a527b6d98ef 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-12-29 +date: 2023-12-30 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 cdb9b55e4a89f..1ef6f2dba114b 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-12-29 +date: 2023-12-30 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 6538927218155..fd5de95c96775 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-12-29 +date: 2023-12-30 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 26b352cf8b522..f8f524fa7666f 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-12-29 +date: 2023-12-30 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 02c715b35cdf9..47e1a28f8d3e9 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-12-29 +date: 2023-12-30 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 e55979fec37d0..735b0d0c93bad 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-12-29 +date: 2023-12-30 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 4469d5973c3ed..0487c5847f885 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-12-29 +date: 2023-12-30 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 dae304c9bfe2f..a4e32aeb35cf1 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-12-29 +date: 2023-12-30 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 7030aa0bd27e3..092a25782999c 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-12-29 +date: 2023-12-30 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 722f483567c32..e36f1dc4bb180 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-12-29 +date: 2023-12-30 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 e260e0930fa2c..f9ba84c519d24 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-12-29 +date: 2023-12-30 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 6d4ab4535fa70..d318c855a95ee 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-12-29 +date: 2023-12-30 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 0db80f81a894d..3e204b78696df 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-12-29 +date: 2023-12-30 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 6a94494732143..41eef8853c856 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-12-29 +date: 2023-12-30 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 010052c7734f3..59c8f8fcb1046 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-12-29 +date: 2023-12-30 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 a6fadac04e670..03e9664b7a00f 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-12-29 +date: 2023-12-30 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 165110560078d..c7ddd3ff6743a 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-12-29 +date: 2023-12-30 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 7ffa86a7e829f..1fd80a38d3326 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-12-29 +date: 2023-12-30 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 0c59bcac3c087..3c6322ea83495 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-12-29 +date: 2023-12-30 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 7a8aea7d76973..8e9cf2671769b 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-12-29 +date: 2023-12-30 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 3ff24638e9653..a7a38c111ad32 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-12-29 +date: 2023-12-30 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 3ce098acf3c80..6622af9d7358b 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-12-29 +date: 2023-12-30 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 e812fd1270cdc..728603e0abd16 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-12-29 +date: 2023-12-30 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 66e19fbf58f96..96e4926289482 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-12-29 +date: 2023-12-30 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 668e9593cf4d1..cbe3b553d218b 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-12-29 +date: 2023-12-30 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 7ccecb32ad23e..4fb33c7ba3c54 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-12-29 +date: 2023-12-30 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 78fae5bb83c7f..d22a15b97f580 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-12-29 +date: 2023-12-30 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 b2af3932b0357..2b54b02385df9 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-12-29 +date: 2023-12-30 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 b35b5337c4ec3..bfe45ffc6cbf7 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-12-29 +date: 2023-12-30 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 a9e1a454fde2a..cabd4a049d5b8 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-12-29 +date: 2023-12-30 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 3f9429d6e4ec1..16c44c4e85fe6 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-12-29 +date: 2023-12-30 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 f904b5b332129..5f84c94610354 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-12-29 +date: 2023-12-30 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 6ece3ef2f396f..7d84b1a647744 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-12-29 +date: 2023-12-30 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 e4aa2defd6b9a..13b1fb85103fb 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-12-29 +date: 2023-12-30 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 be33f4a76aa16..549df50008d18 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-12-29 +date: 2023-12-30 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 3c437fd62de85..282320f3a43eb 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-12-29 +date: 2023-12-30 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 1abdc98de36f2..6f81e9b35a47d 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-12-29 +date: 2023-12-30 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 4463040e5fbed..67be96518dacf 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-12-29 +date: 2023-12-30 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 e48fcf1048d23..488edf1fab676 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-12-29 +date: 2023-12-30 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 28d92b3adae52..9b2fad48c8a26 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-12-29 +date: 2023-12-30 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 72574d7fb669c..a4805d5f6a85c 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-12-29 +date: 2023-12-30 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 e035b1c1e1241..8dc094bba9465 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-12-29 +date: 2023-12-30 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 ecaf3ba075c2e..5ccc7d7020617 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-12-29 +date: 2023-12-30 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 c933658dff2cb..f8cebd6edf6be 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-12-29 +date: 2023-12-30 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 4c8e6467b7cd1..b9cc233b4c416 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-12-29 +date: 2023-12-30 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 8911beb30adb3..76996ab2c6c89 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-12-29 +date: 2023-12-30 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 a2931cd7fc414..1c6511081680c 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-12-29 +date: 2023-12-30 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 370d8ddcb7fef..4afff8501f473 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-12-29 +date: 2023-12-30 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 377836bc83f5e..dae6edbf9932a 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-12-29 +date: 2023-12-30 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 2dcf83283a2b4..2ff6517e41df7 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-12-29 +date: 2023-12-30 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 a01048c800435..f71785ff6ce11 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-12-29 +date: 2023-12-30 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 0c5a54e128a78..545405793debe 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 3d79ead204931..424d02e2399cf 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-12-29 +date: 2023-12-30 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 92f8eb799fa46..0a22a66bea512 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-12-29 +date: 2023-12-30 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 14e9ae1e881c9..6a0f3302a7ea3 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-12-29 +date: 2023-12-30 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 602f3cc90ebef..4a49bb90447e0 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-12-29 +date: 2023-12-30 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 c82a1e30c99d7..f28dae0da586e 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-12-29 +date: 2023-12-30 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 f4785cbf5a160..d1c777196acae 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-12-29 +date: 2023-12-30 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 6d940b1d07fab..4d3d9953e389c 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-12-29 +date: 2023-12-30 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 7901f8dc274cd..1c463bea060bf 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-12-29 +date: 2023-12-30 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 19ea8feddb796..474e81b234227 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-12-29 +date: 2023-12-30 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 96e6709850bb6..172eecd60973e 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-12-29 +date: 2023-12-30 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 262d7325e0eec..409500a71899b 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-12-29 +date: 2023-12-30 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 192230fc83137..09f0bc941f0fb 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-12-29 +date: 2023-12-30 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 0c3e852fb161e..7662c3cea1811 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-12-29 +date: 2023-12-30 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 9d16144388b48..27f7538e46833 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-12-29 +date: 2023-12-30 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 2009e8d024504..bc35892d55ba3 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-12-29 +date: 2023-12-30 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 c2b8a0edf10ce..771f933093827 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-12-29 +date: 2023-12-30 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 8f48f9d753e91..57dcf3b58c66c 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-12-29 +date: 2023-12-30 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 1a76219d3430e..885f47a442166 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-12-29 +date: 2023-12-30 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 1f788bce9b185..6f473b6073b0f 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-12-29 +date: 2023-12-30 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 e6b2b47527251..f0f39c282f148 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-12-29 +date: 2023-12-30 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 5a278394adf7f..4937b55b2b8cd 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-12-29 +date: 2023-12-30 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 678c4e8a3f836..88e03e7ba613b 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-12-29 +date: 2023-12-30 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 e98095a8d99dc..572cf4c607114 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-12-29 +date: 2023-12-30 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 357962a6ffa59..4e1ae9807e2ed 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-12-29 +date: 2023-12-30 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 7525c2e1cf3ab..a7d2d64db42a8 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-12-29 +date: 2023-12-30 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 593741c29263d..59ac3111506f1 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-12-29 +date: 2023-12-30 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 3a5001af4ac4a..7bc096957fdc5 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-12-29 +date: 2023-12-30 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 554e5a73505dc..8360503b1dc94 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-12-29 +date: 2023-12-30 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 099b7968a218b..e98e65ed9d17d 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-12-29 +date: 2023-12-30 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 23d5e25daf32e..e2f499018fc96 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-12-29 +date: 2023-12-30 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 1c3d941796f42..e84c75ad458f8 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-12-29 +date: 2023-12-30 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 820d6f2b35711..6350fe9526586 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-12-29 +date: 2023-12-30 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 ac5a6894e3106..f5210e8ca6220 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-12-29 +date: 2023-12-30 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 ebef8e25abacd..cf7598c93517a 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-12-29 +date: 2023-12-30 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 a58771ba89963..3925770ff4a53 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-12-29 +date: 2023-12-30 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 4ebf7c6193d7a..4b381b592555c 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-12-29 +date: 2023-12-30 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 0409c4f31825e..94446dfc481eb 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index b8f04e19c16ec..1c841270b7663 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index 162db72f9671e..30468b7619adf 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index c14afdfb16322..107bd558d50b5 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-12-29 +date: 2023-12-30 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 ebd39db50ff38..a42f744ce7776 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-12-29 +date: 2023-12-30 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 29b2099700bc0..c003d3aa7424d 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-12-29 +date: 2023-12-30 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 0e579a8f4019b..7d1e3dcb7a7cc 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-12-29 +date: 2023-12-30 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 5c23c3cf49ec4..cec6f927d9c97 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-12-29 +date: 2023-12-30 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 95547ad5507b2..377ef7fcdd3f1 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-12-29 +date: 2023-12-30 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 ad3bf563b0935..444acfb742acb 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-12-29 +date: 2023-12-30 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 3fadf6fc789cb..c0103a117f51e 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-12-29 +date: 2023-12-30 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 1612c7e82034d..5bd9a7ad34e58 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-12-29 +date: 2023-12-30 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 eecfba4e8ba66..7b5a442268316 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-12-29 +date: 2023-12-30 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 326685357c089..fa78b26df5b9e 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-12-29 +date: 2023-12-30 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 3c04a9988cacc..bfb297b69f46b 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-12-29 +date: 2023-12-30 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 3f023238548c1..eb2411528cbac 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-12-29 +date: 2023-12-30 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 25bd44988b0f7..1b08c4d778d7a 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-12-29 +date: 2023-12-30 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 be8a11c9ba237..680149c4ba327 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-12-29 +date: 2023-12-30 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 177cd31b48188..c388c39c48a4a 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-12-29 +date: 2023-12-30 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 f45c8ff1e5f45..18939205f695d 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-12-29 +date: 2023-12-30 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 9c02fb29573bc..09f42cc3ee9a2 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-12-29 +date: 2023-12-30 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 30aa3f406561a..ef053ddbeb2a3 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-12-29 +date: 2023-12-30 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 e2efc6abb7aeb..e34068d0d0e34 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-12-29 +date: 2023-12-30 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 df6c8f3610a0b..c46967ef00964 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-12-29 +date: 2023-12-30 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 6ef386b2851cb..af065376f92b5 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-12-29 +date: 2023-12-30 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 3931385cc9df0..7cedd5f5eb8d0 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-12-29 +date: 2023-12-30 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 3944af5ddbac9..0ce65d285d4ad 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-12-29 +date: 2023-12-30 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 fbcd2aa628ed6..d87a49c1e1f5c 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-12-29 +date: 2023-12-30 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 73683eba49936..c08c552afe542 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-12-29 +date: 2023-12-30 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 6b43b24225590..112425d2c44cd 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-12-29 +date: 2023-12-30 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 7b7ed1ceed4e4..3bd386ad6cb24 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-12-29 +date: 2023-12-30 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 5162c8ff8e9dc..7632ce642f4d5 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-12-29 +date: 2023-12-30 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 e0d896dfed257..6253275a7b1e4 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-12-29 +date: 2023-12-30 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 62fba7ce4e417..56660c152f1c1 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-12-29 +date: 2023-12-30 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 4c2a4266546d9..abc40c76e22fb 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-12-29 +date: 2023-12-30 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 6685965541618..25ac5a669dfea 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index 71498d24af250..dee62e6de5974 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index fcd3f4c95ec3e..2b7cf3a2fc929 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-12-29 +date: 2023-12-30 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 504c8e35bd574..38b053e6b0343 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-12-29 +date: 2023-12-30 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 98cabac58197c..ae83c76972d93 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-12-29 +date: 2023-12-30 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 3235e01da098b..bfc8c33b41ec2 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-12-29 +date: 2023-12-30 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 446aba8b47b3f..732abaea47310 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-12-29 +date: 2023-12-30 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 affab40b5f91d..3fd87682926b2 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-12-29 +date: 2023-12-30 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 31d90791b0776..faf90cc27597a 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-12-29 +date: 2023-12-30 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 0b52f20483668..314bb53419254 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-12-29 +date: 2023-12-30 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 2b312c8ebb2b1..8e8cf3e61e1c9 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-12-29 +date: 2023-12-30 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 ce758f6df12cb..9abe2e31f1cd1 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-12-29 +date: 2023-12-30 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 b5b3a10ea063e..8197986d1abac 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-12-29 +date: 2023-12-30 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 940c9931998b0..36bf877064706 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-12-29 +date: 2023-12-30 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 f23c9c21cd348..f2445a2dbc240 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-12-29 +date: 2023-12-30 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 35efa4af950f7..6c9480eccf21f 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-12-29 +date: 2023-12-30 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 18e900b09d114..d0ebf4da74598 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-12-29 +date: 2023-12-30 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 88f545fd36c07..2e66198dfd797 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-12-29 +date: 2023-12-30 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 7c5e944633591..a3b40229049be 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-12-29 +date: 2023-12-30 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 d703f68dff39e..cf055ece43e3f 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-12-29 +date: 2023-12-30 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 3deffc944740d..0dd74dcf70ec0 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index 0346b4bb55363..db320a4d18e2c 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index 1611126a6fd5e..3f894158658a3 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 5898c58089eae..4b4fa3a18686b 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-12-29 +date: 2023-12-30 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 14c1d641e9bb3..0af93c93323a2 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-12-29 +date: 2023-12-30 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 3af75b823b3b9..4250ed9200cf1 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-12-29 +date: 2023-12-30 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 4310e12a85298..1d413aa0a4386 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-12-29 +date: 2023-12-30 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 5671f1bf9ec59..4db788bdd554c 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-12-29 +date: 2023-12-30 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 cc837988f4052..dfe3b634122d2 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-12-29 +date: 2023-12-30 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 2921878c489a0..ae77a1af9b614 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-12-29 +date: 2023-12-30 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 f1c94ecb98c0e..8583236a059a7 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-12-29 +date: 2023-12-30 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 01288fff521e5..ae0393b768a21 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-12-29 +date: 2023-12-30 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 a34dcfc917e2d..36cfd08b7f8da 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-12-29 +date: 2023-12-30 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 7e8dd567f2a98..e9cdf852e3982 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-12-29 +date: 2023-12-30 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 2d47f81faeaf5..2422e708b2e6b 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-12-29 +date: 2023-12-30 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 aaa1b39d89c64..f9e89a2a7c52b 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-12-29 +date: 2023-12-30 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 2f81315a5ee99..dab0b30ea5481 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-12-29 +date: 2023-12-30 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 456ccf7a1b57f..65c6f31b29a93 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-12-29 +date: 2023-12-30 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 c1f125fea8ac9..9cc6274eb9750 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-12-29 +date: 2023-12-30 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 d89c99c303d0a..076ba06060665 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-12-29 +date: 2023-12-30 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 ef397947f4d65..4800c919791f1 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 3bd8f7d63bea1..d20e37c305ed6 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-12-29 +date: 2023-12-30 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 d5840a529d4c5..d7c0a6a273074 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-12-29 +date: 2023-12-30 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 82a847496f6dd..f5a28d8c03c89 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-12-29 +date: 2023-12-30 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 47dd773385024..45571292300d5 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-12-29 +date: 2023-12-30 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 e79e2bfb01dc9..3ca86ef4b7a79 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-12-29 +date: 2023-12-30 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 5aab487bbc4c1..0958c3bcd8471 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index 31e127fff87fc..0c8d002b523d9 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index f05eeccecfdbf..addca9e474804 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index cd67cfe3fbf81..b8cd63c8c345f 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index e6faf5c74d87b..e698a19551ae0 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-12-29 +date: 2023-12-30 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 b004105b4f031..82eaddf63417e 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-12-29 +date: 2023-12-30 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 beef9ffb436bc..d73c114cdce0a 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-12-29 +date: 2023-12-30 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 edbf345a61349..7543efb7ae0ba 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-12-29 +date: 2023-12-30 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 30efb6656a1e4..58c97eacd4970 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-12-29 +date: 2023-12-30 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 fc83cf8d85931..0f7b49be3cb66 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-12-29 +date: 2023-12-30 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 5aa2f9131047f..2ea310d187b44 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index d1e0764a52840..d8d35e7bfd2db 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-12-29 +date: 2023-12-30 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 e665ff989f73f..cf271066101a3 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-12-29 +date: 2023-12-30 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 e4d7496c3d59d..a647a176e94bc 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index 4dda886690453..e443f8cfe1279 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 53d92303bbd45..e741dfa7de9d1 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-12-29 +date: 2023-12-30 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 48f41bb44b139..17aed97e25519 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index bc20a3ba50a39..6221d17250a84 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index f441b53add288..f0c3ef9fac0c7 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-12-29 +date: 2023-12-30 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 703c174c07d7b..72c0fcc818f10 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-12-29 +date: 2023-12-30 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 d6253f7912cd3..1f934e634c9aa 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index 3de731586b4ee..a8d96f346fef5 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-12-29 +date: 2023-12-30 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 5437419845965..bc8022630023f 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-12-29 +date: 2023-12-30 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 d2ffe1d62db2c..1d9bd0af8389c 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-12-29 +date: 2023-12-30 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 f6803e1ea536f..ad97b57397c3c 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-12-29 +date: 2023-12-30 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 fbe998bec9663..14506d3798e93 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-12-29 +date: 2023-12-30 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 02d498e63efe6..111ca3f1f77e6 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-12-29 +date: 2023-12-30 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 990a7d3361233..b6064981e906e 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-12-29 +date: 2023-12-30 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 3372c3c878cc4..6ed4b0b73c6bc 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-12-29 +date: 2023-12-30 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 d06e3117c2262..b68198fcf3d41 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-12-29 +date: 2023-12-30 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 7c24839f7f27c..ecce5cb7a036f 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-12-29 +date: 2023-12-30 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 05479077e8b97..62027882eb13e 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 471fdece7419e..31aed596f4e41 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-12-29 +date: 2023-12-30 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 7c3f4fd53bffc..6f500468eaa01 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-12-29 +date: 2023-12-30 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 0ac58e46e4389..3f31926e059c5 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-12-29 +date: 2023-12-30 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 85d9902bfb819..b6945b31d9d4f 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-12-29 +date: 2023-12-30 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 40fb18bfca965..989d60810b7c0 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-12-29 +date: 2023-12-30 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 b30a515d986a1..64a818f573ba0 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 2eacb522e09bc..eb5601b82d928 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index b5804a1287f54..eb8cbfe467f47 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-12-29 +date: 2023-12-30 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 77e572ecc83e5..41f882efe39ef 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-12-29 +date: 2023-12-30 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 49bd7f7b2834d..98e334d02daf0 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-12-29 +date: 2023-12-30 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 d61a8c7b6933e..c9d86304d733b 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index f52add785162d..98d90ec04ce1c 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index a4143c61992e7..68397b4b9e817 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index f5a170489185a..560bed2a8bfd6 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index 6aebc6a590fb7..41c56d6b953cc 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index cfa8ce5fda2b3..1586df934eea5 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index 4adf59db34ff4..a318a2bc81e24 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index de34503f6c1ce..cd2733f848a89 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index 2b0fe4ee125a6..5562394e97cab 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index 8c6304f4e7a1b..e5140c57c2be8 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index 45e5d93326922..d80b09bac93e8 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 4347c177102cc..d5aa4503afc8e 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-12-29 +date: 2023-12-30 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 94f80d982c3f8..2419b46f68cee 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-12-29 +date: 2023-12-30 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 d084879d7a2f6..574584dfe1c71 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-12-29 +date: 2023-12-30 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 904f1d57da2b2..67df63e536e44 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-12-29 +date: 2023-12-30 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 046855de01e3d..da3937d015214 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-12-29 +date: 2023-12-30 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 77e482bf16eca..94b23d0ffa57b 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index dab2af5b9cbf6..a8df989ee0c26 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index 5df7393634e86..bcc84e2182a33 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-12-29 +date: 2023-12-30 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 b45379d3026ec..57b875d9a151c 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-12-29 +date: 2023-12-30 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 820c5d39d3c15..e2a5d29b965f9 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-12-29 +date: 2023-12-30 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 6f643ba6e9f91..eb19322f08d27 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-12-29 +date: 2023-12-30 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 88e4c0dc59c2c..1bd2d0d591f23 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-12-29 +date: 2023-12-30 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 7af807e748f45..ca9bc4355ce59 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-12-29 +date: 2023-12-30 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 2074e3af6f45b..1735ef5f45082 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-12-29 +date: 2023-12-30 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 75b7788a3f275..5321eb1f729a6 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-12-29 +date: 2023-12-30 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 abdfa773fc1d0..d68bf34649325 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-12-29 +date: 2023-12-30 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 caea5c523af9e..d2c19cc8a8d91 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-12-29 +date: 2023-12-30 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 94549ee81b6c3..0203ba79e6942 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-12-29 +date: 2023-12-30 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 8e0aab072e6e8..da8084d2f7fca 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-12-29 +date: 2023-12-30 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 2c828757c76b6..c251f429a76d2 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-12-29 +date: 2023-12-30 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 fa76f1874ab53..4b5bd779207c3 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-12-29 +date: 2023-12-30 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 0fabfc34e6a42..23560bd1ad157 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-12-29 +date: 2023-12-30 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 76b3afad48455..af2a6e10d812a 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-12-29 +date: 2023-12-30 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 f4aa46d6e9c2a..1511c43cd325f 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-12-29 +date: 2023-12-30 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 ffeca32e749ec..5a74a2e17bff2 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_ui_actions.mdx b/api_docs/kbn_ml_ui_actions.mdx index 7007fd5d4b2a1..b199168c55cc5 100644 --- a/api_docs/kbn_ml_ui_actions.mdx +++ b/api_docs/kbn_ml_ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-ui-actions title: "@kbn/ml-ui-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-ui-actions plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-ui-actions'] --- import kbnMlUiActionsObj from './kbn_ml_ui_actions.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index cc273163ac215..28f1d3d4e4861 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-12-29 +date: 2023-12-30 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 627fd309e95ec..b2316c6a4bc28 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-12-29 +date: 2023-12-30 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 b80c653cf6590..80f1e74afd9d9 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-12-29 +date: 2023-12-30 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 d279ad158c055..249b7b603be84 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index d112fece7ae7b..cadb93fc47f41 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index e008f332d7f4f..6d1ac92c4745f 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index 6ebc45ec5093d..8c74f3fa381d9 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index 062cac801d895..a0d970c83a6d6 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 3e1e5bbdd2153..0e01617aaaced 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-12-29 +date: 2023-12-30 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 6722c0b013cfa..05e9e88bdeab1 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-12-29 +date: 2023-12-30 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 e23615edcaebc..d5d19133948e1 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index aadcf80178a27..c3628de98b42a 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index a8ae6c29ca34e..47ceba0123723 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-12-29 +date: 2023-12-30 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 14046312b36e6..8502cc468ea09 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-12-29 +date: 2023-12-30 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 45320d37a6be8..a29144405d896 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index d543348752bdb..027dfc6fe8274 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index c7a2545a29f12..11b86e7920999 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-12-29 +date: 2023-12-30 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 c4993aa86f254..e670630890f43 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-12-29 +date: 2023-12-30 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 1d92ea79e1154..55fdf95d0f76f 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-12-29 +date: 2023-12-30 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 1a2e6a45363a0..a4c74995d19ae 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-12-29 +date: 2023-12-30 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 0de2bf1e83a64..82be4d1f05ad1 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-12-29 +date: 2023-12-30 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 228ad11a5a84a..981eaf03b1bc6 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-12-29 +date: 2023-12-30 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 e941ec3b60add..1181bef356ed3 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-12-29 +date: 2023-12-30 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 a00df54bddc40..265987f8e120b 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-12-29 +date: 2023-12-30 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 b727011ba284e..2ec66224a5626 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-12-29 +date: 2023-12-30 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 f9985fb8a98eb..f2d995d39c2fa 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-12-29 +date: 2023-12-30 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 6e9c31568d061..14801f63cb69c 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-12-29 +date: 2023-12-30 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 96bb5fb8d63bc..f4b103f4a4edb 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-12-29 +date: 2023-12-30 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 49700e51abf3f..cef6db283f4db 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index 4607ffba95e12..aff0ff5d07825 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index df96841fcd7ae..bf979e5636922 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index fbaf7aa8e8e70..634ca0ddf562e 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index 93af7288c9f02..96c7cee2b8216 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index 1cf5d4308371e..c4b9a92c271e5 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index 8beb563723709..929b04225d30c 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index 598bb48f98635..374ba685fd982 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index e35028e51dbb5..6aea80aad8622 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index 36a25a14c5a99..955bcef29afaf 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index 6a38ed2a00418..d3d1b7273c890 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index b43b44b7045cc..46b2890e8db56 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index d8eb5194d8b70..9b8fc7eb2477b 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index c6ebc17caee29..52fcbe69b172e 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-12-29 +date: 2023-12-30 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 a51b7bc777663..c4ce40e49121b 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-12-29 +date: 2023-12-30 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 4bd7074602f24..8d9b6f162b9cd 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index 4cf269a9ca7f2..f397414993fd5 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index 4d0ac396af8b0..a255159dec442 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index cfa98af91678c..ccbfbd1751eb5 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index 5641ff87e43f0..a0833af3a9eac 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index 5bb25563cfbdf..f614ee45bce3d 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index fa25c23a63d0c..1960c14f2ad45 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index a8159ef5dd910..0da4190b1177f 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index 19c1ec1d8ec94..58c1e723fbdad 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index 105ff974f289d..c32f2f587993d 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index 8d8effaedff07..e9b25691a08a0 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-12-29 +date: 2023-12-30 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 7b653457a579e..f2532727bc5fb 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-12-29 +date: 2023-12-30 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 886b4a6b99355..15370b5a56774 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-12-29 +date: 2023-12-30 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 b809d76a11d2e..1c11669417aa9 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-12-29 +date: 2023-12-30 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 d66aba61bb4fb..719bb7ed7d549 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-12-29 +date: 2023-12-30 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 41a85ae698bd7..6426d1ae48a44 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-12-29 +date: 2023-12-30 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 82ec9441e292d..8b6e3b15ed47c 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-12-29 +date: 2023-12-30 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 a807d6c849ea2..aea41231f83ef 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-12-29 +date: 2023-12-30 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 b70f25b9fe7ed..f095bc2a6480d 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-12-29 +date: 2023-12-30 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 5483002634a03..e425cf4001a79 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-12-29 +date: 2023-12-30 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 a48a34cee7001..663a26c4a20c9 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-12-29 +date: 2023-12-30 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 0f2595d9b6cf1..3051c6f3d7956 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-12-29 +date: 2023-12-30 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 2ac5d6d407024..f7f9cc07ed03f 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-12-29 +date: 2023-12-30 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 273ba220e537f..c7657b6d29095 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-12-29 +date: 2023-12-30 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 b599f6aad3f44..65ac127169534 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-12-29 +date: 2023-12-30 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 2ff4c3aa57ec2..7532f130dea8d 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-12-29 +date: 2023-12-30 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 cb260e77ab012..a08b4c7caa03d 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-12-29 +date: 2023-12-30 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 ba8c0577b6e8a..146b92b0ddc03 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-12-29 +date: 2023-12-30 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 6f9f29c5b7dcd..48b22100a07e7 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-12-29 +date: 2023-12-30 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 06b3a31768a54..868a4291343a1 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-12-29 +date: 2023-12-30 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 a47febdd10265..4c5464df10301 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-12-29 +date: 2023-12-30 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 93d92eacccd2e..5965321b0e4f0 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-12-29 +date: 2023-12-30 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 75df5a4549d6d..b1337de41ddb1 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index 36d1ffbbd036c..dac27eb710444 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index 658093b811d5d..cfd726ff30c56 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index 023959c8cc273..6a2f937a0e627 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index 5dc1dd5cb9ae0..6319f7329f737 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index b075d382e5e84..29c5ae768c96b 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index 668481ffadda2..d8213f3e78054 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-12-29 +date: 2023-12-30 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 f45731fbe2bb8..66bc93b07726f 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-12-29 +date: 2023-12-30 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 ee4fed61101f3..97507eac61bb6 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index 09f2e5af22d95..dd4f09ddccb6a 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index 1f24af3d083ec..7209492516fe7 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-12-29 +date: 2023-12-30 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 42f1051ac5961..af32f553a6fa7 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-12-29 +date: 2023-12-30 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 9bae59b46aa1d..20be88be02046 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-12-29 +date: 2023-12-30 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 65a646aad56fa..07fef2de232d0 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index 8b834c9fabfe1..16330c42399e2 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index f1bd14f6faceb..be6132bfc7c0e 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-12-29 +date: 2023-12-30 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 d0358ed17f4ac..127b8d7bc49bb 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-12-29 +date: 2023-12-30 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 a1640ff05c461..a91e69d6b1066 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-12-29 +date: 2023-12-30 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 329d25a29486b..4ae054603e7d4 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-12-29 +date: 2023-12-30 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 e01d9709b27d1..d793ec72444c9 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-12-29 +date: 2023-12-30 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 410cf7f2664c5..2991e2cc05059 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-12-29 +date: 2023-12-30 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 442f5af646469..21e72bb49bb95 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-12-29 +date: 2023-12-30 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 9fb042f7f56df..1de04f6a83359 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-12-29 +date: 2023-12-30 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 4816f676c6852..17dc8c8bb70c3 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-12-29 +date: 2023-12-30 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 e584c4465a34c..c89985f2ce231 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-12-29 +date: 2023-12-30 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 ef9c6b90a845f..61cb1b10c92f5 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-12-29 +date: 2023-12-30 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 060b805a374a4..a1920d09562b4 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-12-29 +date: 2023-12-30 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 c3808b3aaaa16..5619ca5e25e2b 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-12-29 +date: 2023-12-30 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 7e90059c6f1ab..18f8506bae918 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-12-29 +date: 2023-12-30 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 950ae7eebb00d..649d81b568aa0 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-12-29 +date: 2023-12-30 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 3b2f25a921629..db07ac930c9d0 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-12-29 +date: 2023-12-30 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 4a5a097290d26..d56ee93d5a3de 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-12-29 +date: 2023-12-30 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 8f858e6c78687..6b85f3758c4c3 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-12-29 +date: 2023-12-30 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 bee4b5eda5557..e343056d41859 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-12-29 +date: 2023-12-30 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 945a786d53918..6c3c365171342 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-12-29 +date: 2023-12-30 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 29363d2d3ec1d..ae4aae33b4295 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-12-29 +date: 2023-12-30 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 072d865cf6920..58d1d5d875a2b 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-12-29 +date: 2023-12-30 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 ff588e0278bf6..8e2cb02361783 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-12-29 +date: 2023-12-30 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 6771acac32084..ce67cdec8b5ab 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-12-29 +date: 2023-12-30 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 b27c316b1956f..17e23909c2301 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-12-29 +date: 2023-12-30 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 c23048624533d..ae5997bf306e1 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-12-29 +date: 2023-12-30 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 231b22518d738..13d77290d1ac2 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-12-29 +date: 2023-12-30 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 6b7151e586c89..0c15a31b51645 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-12-29 +date: 2023-12-30 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 f7a2a92461dde..d46cafa9268d5 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-12-29 +date: 2023-12-30 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 93db47188210b..003351a4021d0 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-12-29 +date: 2023-12-30 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 af037b58194fd..d55951b8b46ce 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-12-29 +date: 2023-12-30 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 da74861149cc5..a6c3be69095cf 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-12-29 +date: 2023-12-30 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 ee6b170bd3b7c..df6a1d843f179 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-12-29 +date: 2023-12-30 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 5c94f1eacb347..fdd6f6c948ce6 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-12-29 +date: 2023-12-30 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 fb358e832b248..1ccf84d6063dd 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-12-29 +date: 2023-12-30 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 034b32321bd50..32b18bf419762 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-12-29 +date: 2023-12-30 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 06eb8fd2efe6a..a3a5c1245c7bc 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-12-29 +date: 2023-12-30 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 10a98ba5ba4a6..26e8a7d6a4c95 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-12-29 +date: 2023-12-30 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 73a7bb4d00f21..0ad59cc043be8 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-12-29 +date: 2023-12-30 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 6cc76d5d8c4de..2d7bae0f35713 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-12-29 +date: 2023-12-30 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 33d6cdf3ff04f..644ec5952070f 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-12-29 +date: 2023-12-30 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 d0df7c1c1a3fa..df057448dc130 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index 4f91062f8c871..a02f214c99746 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 6876166a7683c..2c8d62fd46b32 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-12-29 +date: 2023-12-30 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 4ab962df74dae..330d7e5645c89 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-12-29 +date: 2023-12-30 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 aa75c5cc5eb40..a32e6e35f1d15 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-12-29 +date: 2023-12-30 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 0b18635747528..29fa8eec5f54b 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-12-29 +date: 2023-12-30 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 8c2f4ed199de5..cdc6f57ccf946 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index 603d59aa4f0b4..3873f55797488 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index 020ea525d5976..dcec21b3c3dd0 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index 9f13afc7bba0d..ea2896bc05a44 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index 7eb68ec70bd6d..8f4fe5e3a99e0 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx index 7523ba2c503cf..a64180af33422 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index 539e3069daf29..96c33f7158d4f 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 97fd046194bb0..133c557db1356 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index d01f5fe0ebda4..5be114f3bae69 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-12-29 +date: 2023-12-30 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 a38c1ec0b8f49..8bad7ec940157 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-12-29 +date: 2023-12-30 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 627acacfd16f5..81c89117b3637 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-12-29 +date: 2023-12-30 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 efca511b7d126..729c5178dd1fd 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_visualization_utils.mdx b/api_docs/kbn_visualization_utils.mdx index ff1a7aedbbf9f..b7d62d4068337 100644 --- a/api_docs/kbn_visualization_utils.mdx +++ b/api_docs/kbn_visualization_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-utils title: "@kbn/visualization-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-utils plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-utils'] --- import kbnVisualizationUtilsObj from './kbn_visualization_utils.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index efcf9454d30c9..1de6374b858e8 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 7854d66e0e621..97b632e9f5012 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index f35f4aca0852b..e96b0f1776f9a 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index f11fa3beebcfa..c1829e103201f 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 810eb8721d439..23327d2ab704f 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-12-29 +date: 2023-12-30 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 1fef9fac0289e..bb9e108afcde0 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-12-29 +date: 2023-12-30 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 cb109755eacad..d2738ea436a88 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-12-29 +date: 2023-12-30 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 581232cd7cf69..ac46fdedac593 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-12-29 +date: 2023-12-30 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 5b03c6f8c8ca3..9c7ac2c003461 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-12-29 +date: 2023-12-30 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 1b56b8f43dee8..a5bb81f5f1144 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 7b5411a238c3f..cd25d76412b73 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index d2e98a04be489..b711bf1615b63 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 4f49da6f1ee22..3a8920a2b3d97 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx index a8d266d409a25..6f7db4be4d574 100644 --- a/api_docs/log_explorer.mdx +++ b/api_docs/log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logExplorer title: "logExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logExplorer plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer'] --- import logExplorerObj from './log_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index d3cb5d7e87f87..1fccc6ec355ea 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-12-29 +date: 2023-12-30 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 5ac742dfa868f..93caaa7bf751a 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-12-29 +date: 2023-12-30 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 644b52ea13540..f9469a903613b 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-12-29 +date: 2023-12-30 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 264b65d19ed3c..ce70a5df196eb 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index c95e69185ec10..b676246498669 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 48a25f2329ab6..551dca21354e4 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index e0e51a0a97141..6adeed569817f 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 8180c5af97836..2f5a7679f6107 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-12-29 +date: 2023-12-30 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 e24f4d7d5678b..a259e17fe4081 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-12-29 +date: 2023-12-30 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 29903de044f22..735b42c137a7c 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-12-29 +date: 2023-12-30 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 9fa0908386f2a..67f177f54576b 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index 63d8834b29a2d..d0966fd00a56d 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index dce22414e5b6d..417defde4474f 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index d8eecad380c55..67a6e6ad36a1c 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index 81ad1239b11b8..a15867facd6d1 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_log_explorer.mdx b/api_docs/observability_log_explorer.mdx index fd7e5ce4fefce..d44f2c8bd46aa 100644 --- a/api_docs/observability_log_explorer.mdx +++ b/api_docs/observability_log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogExplorer title: "observabilityLogExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogExplorer plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogExplorer'] --- import observabilityLogExplorerObj from './observability_log_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index f3a273eca6dde..90522fe4d30b9 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index df88881575c76..2e0ef15fc0c98 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-12-29 +date: 2023-12-30 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 4d7aaff8acf3e..555a4a93b97e3 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index 103528bf077dc..c3b685afb74f8 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 66305afa62f4a..3b772c517ce06 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index d27a246a3cd43..2ca833cc7f0dd 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-12-29 +date: 2023-12-30 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 1a313d44b2dad..bc713263c7c86 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index a41287ddf6e05..7a18c8bb77ac5 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 5e8f337b346e0..008bd1f5eaf8a 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-12-29 +date: 2023-12-30 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 28ec1ce14faab..732e5715e25ea 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-12-29 +date: 2023-12-30 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 087740d75ed1b..d1e400bde2c69 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-12-29 +date: 2023-12-30 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 c6e4cb7a32c4c..ae66328e420ad 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-12-29 +date: 2023-12-30 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 084572f825a76..a7de2e26ce7a9 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-12-29 +date: 2023-12-30 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 c88cfb8bf2859..1093219c504f3 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index b0f7a1b6dcb11..b982ae980d6d5 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 14b6b51ac38e9..dd5d3386a9481 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index d6f7401ec964f..293a8133b5af1 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-12-29 +date: 2023-12-30 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 81119c8be4f9c..f663e0a508a14 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-12-29 +date: 2023-12-30 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 7811d72bef31e..ae64084631e69 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-12-29 +date: 2023-12-30 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 fa8a0b67f2e6e..e920836787891 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-12-29 +date: 2023-12-30 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 9c5a8c00cc315..dda6b97de2753 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 179eb4d1306a9..92457649bec24 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index e256ca70df9df..c255a99e47946 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index c688c4540d802..7e7c59a9957cf 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-12-29 +date: 2023-12-30 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 43e8f0c72c31e..68354da99eccd 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-12-29 +date: 2023-12-30 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 da051b4fe5a98..b16bf9a7e1e9f 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-12-29 +date: 2023-12-30 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 9e1192adb081a..1799d3e66d575 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-12-29 +date: 2023-12-30 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 b1f4a5d57b286..c4cc11b2c43b0 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-12-29 +date: 2023-12-30 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 9b85d1edf99bf..ab764fac61212 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-12-29 +date: 2023-12-30 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 6289a6af283f4..7528d11b6f360 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-12-29 +date: 2023-12-30 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 3f43ce3c8aa15..565834a314991 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-12-29 +date: 2023-12-30 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 474c70f0851f5..516dda58e4f71 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-12-29 +date: 2023-12-30 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 4b97f2a16982b..c22a69d65f0ad 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-12-29 +date: 2023-12-30 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 081e0ecf14cfd..f2f3865dd7dd9 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-12-29 +date: 2023-12-30 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 92f0739ef1070..592295701949c 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-12-29 +date: 2023-12-30 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 16d3e27520820..161ee52a78f30 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-12-29 +date: 2023-12-30 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 0ca8b63b3083a..eb07f5679b45e 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-12-29 +date: 2023-12-30 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 348b00de42abe..0a0cd6bc44c26 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-12-29 +date: 2023-12-30 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 1850996887fc6..44a79b2bf1166 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-12-29 +date: 2023-12-30 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 dccd5cc0e9816..e28e13eefcbf9 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-12-29 +date: 2023-12-30 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 6dc9c28dd4b13..3a2e2b624f4b0 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-12-29 +date: 2023-12-30 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 b21eab7487ea1..de1eddd75b6ea 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-12-29 +date: 2023-12-30 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 a09937bf0e662..1f7147342d85b 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index db3d0495d4594..0070250663e70 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 45f3f89157be0..1362c047a2eda 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index d388ed10b29f9..66f21a2793aea 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index d7f5cc542944e..c94e8a487db09 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2023-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index a478cfcbeb5fe..4d032ec3bebac 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-12-29 +date: 2023-12-30 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 3c27502689285..9468205c3c143 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-12-29 +date: 2023-12-30 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 9c0e987d3d492..75d4d527c1fe3 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-12-29 +date: 2023-12-30 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 17435ae070d64..e10559269c5a2 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-12-29 +date: 2023-12-30 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 042f3287377b5..4306e2f8c12b3 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-12-29 +date: 2023-12-30 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 15cfb749a78f2..df4d5c67afc00 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-12-29 +date: 2023-12-30 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 350bd2df0555b..1fb121e9bb733 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-12-29 +date: 2023-12-30 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 f366e7cf8f39a..70d049065afc0 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-12-29 +date: 2023-12-30 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 c62bdce395ea5..aeb75a3ae1589 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-12-29 +date: 2023-12-30 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 91935e523366b..c795c43ec27c5 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-12-29 +date: 2023-12-30 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 075ecf4ea7241..535ad9bc00aa3 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-12-29 +date: 2023-12-30 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 46ffcb0e873b0..7b6608b72baed 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-12-29 +date: 2023-12-30 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 ab15f72ee73f2..0f27707c4641d 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-12-29 +date: 2023-12-30 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 29cf25b0a7af9..1f2dbc01a841a 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-12-29 +date: 2023-12-30 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 d37c72d4c35be..a8e9b0ae46e4d 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-12-29 +date: 2023-12-30 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 90dfe65ec8241..c9f5a9d14e3d9 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-12-29 +date: 2023-12-30 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 7822c40796f08..f351b134c7b35 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-12-29 +date: 2023-12-30 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 db445c6c13d7f..38c8734d464f6 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-12-29 +date: 2023-12-30 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From f542e160b96b203a0212357d1d953e54f1e04943 Mon Sep 17 00:00:00 2001 From: Tiago Vila Verde Date: Sat, 30 Dec 2023 16:20:01 +0200 Subject: [PATCH 024/323] Temporarily disabling serverless test (#174023) Disabling serverless test until we figure out what's wrong [here](https://github.com/elastic/kibana/issues/173991) --- .../e2e/entity_analytics/asset_criticality/host_flyout.cy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/asset_criticality/host_flyout.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/asset_criticality/host_flyout.cy.ts index 2ec2e40cb72ac..d7b94f914b75a 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/asset_criticality/host_flyout.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/asset_criticality/host_flyout.cy.ts @@ -29,7 +29,7 @@ import { ALERTS_URL } from '../../../urls/navigation'; describe( 'Host details flyout', { - tags: ['@ess', '@serverless'], + tags: ['@ess'], env: { ftrConfig: { kbnServerArgs: [ From 10d94e45327778584df5a84f216121e941d5cefb Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Sun, 31 Dec 2023 01:16:40 -0500 Subject: [PATCH 025/323] [api-docs] 2023-12-31 Daily api_docs build (#174070) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/568 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- api_docs/ai_assistant_management_observability.mdx | 2 +- api_docs/ai_assistant_management_selection.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/apm_data_access.mdx | 2 +- api_docs/asset_manager.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_experiments.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/dataset_quality.mdx | 2 +- api_docs/deprecations_by_api.mdx | 2 +- api_docs/deprecations_by_plugin.mdx | 2 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/elastic_assistant.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_annotation_listing.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_actions_types.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- api_docs/kbn_alerting_api_integration_helpers.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerting_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- api_docs/kbn_analytics_collection_utils.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_common.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_analytics_shippers_gainsight.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_bfetch_error.mdx | 2 +- api_docs/kbn_calculate_auto.mdx | 2 +- api_docs/kbn_calculate_width_from_char_count.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_owners.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- api_docs/kbn_content_management_content_editor.mdx | 2 +- api_docs/kbn_content_management_tabbed_table_list_view.mdx | 2 +- api_docs/kbn_content_management_table_list_view.mdx | 2 +- api_docs/kbn_content_management_table_list_view_common.mdx | 2 +- api_docs/kbn_content_management_table_list_view_table.mdx | 2 +- api_docs/kbn_content_management_utils.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- api_docs/kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- api_docs/kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- api_docs/kbn_core_application_browser_internal.mdx | 2 +- api_docs/kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- api_docs/kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- api_docs/kbn_core_custom_branding_browser_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- api_docs/kbn_core_custom_branding_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- api_docs/kbn_core_deprecations_browser_internal.mdx | 2 +- api_docs/kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- api_docs/kbn_core_deprecations_server_internal.mdx | 2 +- api_docs/kbn_core_deprecations_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_client_server_internal.mdx | 2 +- api_docs/kbn_core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- api_docs/kbn_core_elasticsearch_server_internal.mdx | 2 +- api_docs/kbn_core_elasticsearch_server_mocks.mdx | 2 +- api_docs/kbn_core_environment_server_internal.mdx | 2 +- api_docs/kbn_core_environment_server_mocks.mdx | 2 +- api_docs/kbn_core_execution_context_browser.mdx | 2 +- api_docs/kbn_core_execution_context_browser_internal.mdx | 2 +- api_docs/kbn_core_execution_context_browser_mocks.mdx | 2 +- api_docs/kbn_core_execution_context_common.mdx | 2 +- api_docs/kbn_core_execution_context_server.mdx | 2 +- api_docs/kbn_core_execution_context_server_internal.mdx | 2 +- api_docs/kbn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- api_docs/kbn_core_http_context_server_mocks.mdx | 2 +- api_docs/kbn_core_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- api_docs/kbn_core_http_resources_server_internal.mdx | 2 +- api_docs/kbn_core_http_resources_server_mocks.mdx | 2 +- api_docs/kbn_core_http_router_server_internal.mdx | 2 +- api_docs/kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- api_docs/kbn_core_injected_metadata_browser_mocks.mdx | 2 +- api_docs/kbn_core_integrations_browser_internal.mdx | 2 +- api_docs/kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_collectors_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- api_docs/kbn_core_notifications_browser_internal.mdx | 2 +- api_docs/kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- api_docs/kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_contracts_browser.mdx | 2 +- api_docs/kbn_core_plugins_contracts_server.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- api_docs/kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_api_browser.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_base_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- api_docs/kbn_core_saved_objects_browser_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- .../kbn_core_saved_objects_import_export_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_migration_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- api_docs/kbn_core_saved_objects_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- api_docs/kbn_core_test_helpers_deprecations_getters.mdx | 2 +- api_docs/kbn_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- api_docs/kbn_core_test_helpers_model_versions.mdx | 2 +- api_docs/kbn_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- api_docs/kbn_core_ui_settings_browser_internal.mdx | 2 +- api_docs/kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- api_docs/kbn_core_ui_settings_server_internal.mdx | 2 +- api_docs/kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- api_docs/kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- api_docs/kbn_core_user_settings_server_internal.mdx | 2 +- api_docs/kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_custom_icons.mdx | 2 +- api_docs/kbn_custom_integrations.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_data_service.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_discover_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_agent_utils.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_elastic_assistant_common.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_event_annotation_common.mdx | 2 +- api_docs/kbn_event_annotation_components.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_field_utils.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- api_docs/kbn_ftr_common_functional_services.mdx | 2 +- api_docs/kbn_ftr_common_functional_ui_services.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- api_docs/kbn_language_documentation_popover.mdx | 2 +- api_docs/kbn_lens_embeddable_utils.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_management_cards_navigation.mdx | 2 +- api_docs/kbn_management_settings_application.mdx | 2 +- api_docs/kbn_management_settings_components_field_category.mdx | 2 +- api_docs/kbn_management_settings_components_field_input.mdx | 2 +- api_docs/kbn_management_settings_components_field_row.mdx | 2 +- api_docs/kbn_management_settings_components_form.mdx | 2 +- api_docs/kbn_management_settings_field_definition.mdx | 2 +- api_docs/kbn_management_settings_ids.mdx | 2 +- api_docs/kbn_management_settings_section_registry.mdx | 2 +- api_docs/kbn_management_settings_types.mdx | 2 +- api_docs/kbn_management_settings_utilities.mdx | 2 +- api_docs/kbn_management_storybook_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_category_validator.mdx | 2 +- api_docs/kbn_ml_chi2test.mdx | 2 +- api_docs/kbn_ml_data_frame_analytics_utils.mdx | 2 +- api_docs/kbn_ml_data_grid.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_date_utils.mdx | 2 +- api_docs/kbn_ml_error_utils.mdx | 2 +- api_docs/kbn_ml_in_memory_table.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_kibana_theme.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_ui_actions.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- api_docs/kbn_observability_alerting_test_data.mdx | 2 +- api_docs/kbn_observability_get_padded_alert_time_range_util.mdx | 2 +- api_docs/kbn_openapi_bundler.mdx | 2 +- api_docs/kbn_openapi_generator.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- api_docs/kbn_panel_loader.mdx | 2 +- api_docs/kbn_performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_profiling_utils.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_react_kibana_context_common.mdx | 2 +- api_docs/kbn_react_kibana_context_render.mdx | 2 +- api_docs/kbn_react_kibana_context_root.mdx | 2 +- api_docs/kbn_react_kibana_context_styled.mdx | 2 +- api_docs/kbn_react_kibana_context_theme.mdx | 2 +- api_docs/kbn_react_kibana_mount.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_reporting_common.mdx | 2 +- api_docs/kbn_reporting_export_types_csv.mdx | 2 +- api_docs/kbn_reporting_export_types_csv_common.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf_common.mdx | 2 +- api_docs/kbn_reporting_export_types_png.mdx | 2 +- api_docs/kbn_reporting_export_types_png_common.mdx | 2 +- api_docs/kbn_reporting_mocks_server.mdx | 2 +- api_docs/kbn_reporting_public.mdx | 2 +- api_docs/kbn_reporting_server.mdx | 2 +- api_docs/kbn_resizable_layout.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_router_utils.mdx | 2 +- api_docs/kbn_rrule.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_search_api_panels.mdx | 2 +- api_docs/kbn_search_connectors.mdx | 2 +- api_docs/kbn_search_errors.mdx | 2 +- api_docs/kbn_search_index_documents.mdx | 2 +- api_docs/kbn_search_response_warnings.mdx | 2 +- api_docs/kbn_security_plugin_types_common.mdx | 2 +- api_docs/kbn_security_plugin_types_public.mdx | 2 +- api_docs/kbn_security_plugin_types_server.mdx | 2 +- api_docs/kbn_security_solution_features.mdx | 2 +- api_docs/kbn_security_solution_navigation.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- api_docs/kbn_security_solution_storybook_config.mdx | 2 +- api_docs/kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- api_docs/kbn_securitysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_grouping.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_alerting_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- api_docs/kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_serverless_common_settings.mdx | 2 +- api_docs/kbn_serverless_observability_settings.mdx | 2 +- api_docs/kbn_serverless_project_switcher.mdx | 2 +- api_docs/kbn_serverless_search_settings.mdx | 2 +- api_docs/kbn_serverless_security_settings.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- api_docs/kbn_shared_ux_button_exit_full_screen.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_chrome_navigation.mdx | 2 +- api_docs/kbn_shared_ux_error_boundary.mdx | 2 +- api_docs/kbn_shared_ux_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_analytics_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_template.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_config.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- api_docs/kbn_shared_ux_prompt_no_data_views.mdx | 2 +- api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_text_based_editor.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_triggers_actions_ui_types.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_unified_data_table.mdx | 2 +- api_docs/kbn_unified_doc_viewer.mdx | 2 +- api_docs/kbn_unified_field_list.mdx | 2 +- api_docs/kbn_unsaved_changes_badge.mdx | 2 +- api_docs/kbn_url_state.mdx | 2 +- api_docs/kbn_use_tracked_promise.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kbn_visualization_ui_components.mdx | 2 +- api_docs/kbn_visualization_utils.mdx | 2 +- api_docs/kbn_xstate_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kbn_zod_helpers.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/links.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/log_explorer.mdx | 2 +- api_docs/logs_shared.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/metrics_data_access.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/mock_idp_plugin.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/no_data_page.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/observability_a_i_assistant.mdx | 2 +- api_docs/observability_log_explorer.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/painless_lab.mdx | 2 +- api_docs/plugin_directory.mdx | 2 +- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/profiling_data_access.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/security_solution_ess.mdx | 2 +- api_docs/security_solution_serverless.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/text_based_languages.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_doc_viewer.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/uptime.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 635 files changed, 635 insertions(+), 635 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 9c8c88a8b9971..3fb689275fa04 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-12-30 +date: 2023-12-31 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 ddd3f29ed2e6e..676858ba658ec 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_observability.mdx b/api_docs/ai_assistant_management_observability.mdx index b02b43b0b4df3..a8a782cf9d77c 100644 --- a/api_docs/ai_assistant_management_observability.mdx +++ b/api_docs/ai_assistant_management_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementObservability title: "aiAssistantManagementObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementObservability plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementObservability'] --- import aiAssistantManagementObservabilityObj from './ai_assistant_management_observability.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index c2a27f8ceb32f..bb6297359c53e 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index ab4138077c7ee..16d4669399110 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index d7761315f1ccf..6c7c4fd50f476 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index bb36b74bac1b7..26b3b63dedace 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index 4a63fa714064c..ea7ef072eef7c 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index 0a93791b8ba1e..2311fc75255a2 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-12-30 +date: 2023-12-31 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 685a7f607f2a1..2a36b8939631b 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-12-30 +date: 2023-12-31 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 1eaad0242ab89..9581603f53c5e 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-12-30 +date: 2023-12-31 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 33aa4e6c1f418..dad4cd246d613 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 73b3f425d5b08..cb0aeaa3c4ebf 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 7083d4f253795..3f79712490701 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-12-30 +date: 2023-12-31 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 27918d04b2170..f59576040c1b5 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index 01feb34304de2..e22c5e24b2c35 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-12-30 +date: 2023-12-31 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 5fbc599af9ddc..df6cea1439229 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-12-30 +date: 2023-12-31 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 2afbee279d6f1..c710e6d1f4672 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-12-30 +date: 2023-12-31 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 c19d0da33acac..e624b9b861fde 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-12-30 +date: 2023-12-31 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 308258154d536..709fab05446ff 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-12-30 +date: 2023-12-31 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 d93fd627831f3..5920a55f1215f 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-12-30 +date: 2023-12-31 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 723d40cdbeb6f..63d3199b48b38 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-12-30 +date: 2023-12-31 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 9b9c186fcf6cb..475511fc503d6 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-12-30 +date: 2023-12-31 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 b986917808552..da1960af3d22b 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-12-30 +date: 2023-12-31 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 18f7d24d64d12..5ad41489ae3fe 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index d4dce453e727c..6a33621c16c41 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index e9c7ea39ce285..ccd2faa4e3d6e 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 2705373b1af2f..2a4c0b969ea38 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 1c9b38e0b00c6..7c3186c82925b 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-12-30 +date: 2023-12-31 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 c38b73b606b30..5e49adc999499 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-12-30 +date: 2023-12-31 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 9298720214561..dd6e9f9154e66 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 22978a82b9241..0e4345567ddbc 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 29ceaec232444..bf370afadf45f 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index 278d4b0f82b5e..35a0fcae7fb05 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 051629d494a46..838810da73b87 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 2f84e7e02dfcf..9ffd2429a0544 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index cd5f7fe17f521..9e14f25e6a0e3 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index bfa5809bbe354..03100f1831e48 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-12-30 +date: 2023-12-31 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 6553f38b9ecde..9d30a0b2061d0 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-12-30 +date: 2023-12-31 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 f21c6df801e19..9df8bca7e2e56 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-12-30 +date: 2023-12-31 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 136414ac98668..8c6c8b5c286b7 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index 6f384a6f062a4..a7e0741db238f 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 5c365d406980f..302a9edbf43c6 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 6038fcdb24d9c..abf6015a59d6c 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-12-30 +date: 2023-12-31 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 4e3f62dc17a7e..f015fef6370bb 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-12-30 +date: 2023-12-31 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 c64df96691661..a24f06b548929 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-12-30 +date: 2023-12-31 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 405eae3ddbe53..0a9d57807e96b 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index b40a9882f97a5..f0190f790335c 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index 0125d3461b1e2..5bd542ea722df 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 25e0497db9260..8317ea91e395e 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index 8f2c08ddafb01..647d677a3ddce 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-12-30 +date: 2023-12-31 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 b45e8b0ee9292..ca0f5ae6eb344 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-12-30 +date: 2023-12-31 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 8f7868474363c..a63f84387ac85 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 4efdd9dfa208a..ef5c30000e455 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-12-30 +date: 2023-12-31 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 03bba533362ff..32d1348cbd1fb 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-12-30 +date: 2023-12-31 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 d1aa48972f4c4..21247901087ca 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-12-30 +date: 2023-12-31 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 a773ae9713812..31fb11037a4d2 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-12-30 +date: 2023-12-31 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 f641d40888d42..6814a0c0a53af 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-12-30 +date: 2023-12-31 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 f539a92223fb9..f4cfb673e5016 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-12-30 +date: 2023-12-31 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 276e5ce169483..4e66e2c2f4755 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-12-30 +date: 2023-12-31 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 77c357b4618a7..8ce7e4e54383e 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-12-30 +date: 2023-12-31 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 ddc4d7f1ddb49..a7a5b9c34fe87 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-12-30 +date: 2023-12-31 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 ca985cc904eca..ebec63ea16a16 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-12-30 +date: 2023-12-31 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 1b3bb7ffa4caa..f4e943d94b000 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-12-30 +date: 2023-12-31 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 b2a519a5ce2d8..e92eb346755be 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-12-30 +date: 2023-12-31 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 57ba9abe53358..c6eabedf2eaf6 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-12-30 +date: 2023-12-31 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 38907832eb974..68441b2e02b16 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-12-30 +date: 2023-12-31 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 1109755df716f..1eab3826b62cc 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index d2e2ad0fa2912..aaf3805d8b3bf 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-12-30 +date: 2023-12-31 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 4230ab987e8ae..163b7727bc956 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-12-30 +date: 2023-12-31 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 32c82852a7b05..ff2b20d47aa5b 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-12-30 +date: 2023-12-31 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 7cc5c0ea9f362..b5bd56dad4dea 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-12-30 +date: 2023-12-31 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 ca9638aee2346..8d2348ef5689b 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-12-30 +date: 2023-12-31 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 c1679f3ef9a6b..edee74918ad26 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-12-30 +date: 2023-12-31 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 9ab512a532b8a..d425c2b266e3e 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-12-30 +date: 2023-12-31 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 891912481c91f..3340134603c43 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-12-30 +date: 2023-12-31 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 02eb3968ba10d..eaadf325959a5 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-12-30 +date: 2023-12-31 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 c6afd1c5c71d0..ee41b51e26f92 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-12-30 +date: 2023-12-31 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 03c77a6de07da..8d831921b8d65 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-12-30 +date: 2023-12-31 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 343b183738640..5f98be94a6f37 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-12-30 +date: 2023-12-31 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 ebc7286fd11bf..ced29652106e5 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index b0769fdacd781..96eebc7347bde 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index fb40727380738..8859781c6c4c8 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 55f011c96c2e5..b3965f257ce74 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index d5ecf8b513bae..d34f7f92df4e5 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 2d5b43fe7a616..1e865cc127322 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index b67cdd2808652..e674866293df7 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index b827e236693b4..cb4c01d5156e8 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-12-30 +date: 2023-12-31 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 fe09e3611965d..b17cab8f88748 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-12-30 +date: 2023-12-31 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 5d2152cefcf37..141a293e9f484 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 25604f84026ca..bb0cc457465f8 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index 48ab3f6cfd751..79c1d37738489 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index a247a7804bf2a..709b156296e72 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-12-30 +date: 2023-12-31 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 b2d776f84a1c0..a7be91b7ffc02 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-12-30 +date: 2023-12-31 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 7448c9917a32f..fbd620d0fa93c 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-12-30 +date: 2023-12-31 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 6c7e2a26b5be5..97f4f6a861ece 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-12-30 +date: 2023-12-31 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 7defc452b6f19..80f206ecd2e20 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-12-30 +date: 2023-12-31 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 8270e717a3929..f8a962b6e4797 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-12-30 +date: 2023-12-31 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 85e957f78c1b2..94631df9956cd 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-12-30 +date: 2023-12-31 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 805e4e8cfb8c6..e06ddc87b001b 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-12-30 +date: 2023-12-31 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 18e0585c265f3..57149cae5a118 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-12-30 +date: 2023-12-31 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 d593ef64b5ec8..bea15b7b5f874 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_bfetch_error.mdx b/api_docs/kbn_bfetch_error.mdx index 292fa69f6aee5..e7d5e15f5e7ad 100644 --- a/api_docs/kbn_bfetch_error.mdx +++ b/api_docs/kbn_bfetch_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-bfetch-error title: "@kbn/bfetch-error" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/bfetch-error plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bfetch-error'] --- import kbnBfetchErrorObj from './kbn_bfetch_error.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index 45be3a2d1695a..7b3746b9d4a69 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index 8474101454791..35ce3f3a89e64 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 26e2514d72a2a..ee9472b06d220 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-12-30 +date: 2023-12-31 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 bcea477bc0f0b..72e2aac31438f 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-12-30 +date: 2023-12-31 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 d463c0faa34ad..5ab3dbf775494 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-12-30 +date: 2023-12-31 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 bcf4f272f2d78..6867aa6b785a7 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-12-30 +date: 2023-12-31 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 c3fbb33bbd5d8..e9fe001510d49 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-12-30 +date: 2023-12-31 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 87077bc85cb87..9d1b3678d526f 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-12-30 +date: 2023-12-31 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 bb1193b14cfa3..2cceb6667a9f6 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-12-30 +date: 2023-12-31 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 69e0f97d25a09..0790ce7b84735 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-12-30 +date: 2023-12-31 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 9b5268aa65e0f..f05934a289723 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index 02620df54f3f4..63c020a025fb0 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index f212f0d3defcf..0a403233f18e0 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-12-30 +date: 2023-12-31 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 cb1047ff5b2a7..331123fc1dd62 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-12-30 +date: 2023-12-31 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 0c1d7f809f613..8d77ce3b32553 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-12-30 +date: 2023-12-31 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 0185c7a13c607..a0219f0e7d840 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-12-30 +date: 2023-12-31 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 7932b305c1f3a..25391fff77afd 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-12-30 +date: 2023-12-31 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 f6fda3c87f7de..b6599e79bc790 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-12-30 +date: 2023-12-31 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 b791789508569..5b7f32f8e2d93 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index d6c5b8cc9508b..238808d81df15 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index dd21843e0204c..d914ce2978e55 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index 5464447a27437..f7db2d5ed6f96 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 3d0b5b7a261d8..73f2aeff03fc1 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-12-30 +date: 2023-12-31 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 3029e99cc934f..f0cd6235f7d38 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-12-30 +date: 2023-12-31 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 ed7da6e7140c9..6a47e4e93c78a 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-12-30 +date: 2023-12-31 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 6b62f08a8d08f..2e560081f0ccd 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-12-30 +date: 2023-12-31 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 298d945a1a8f3..9ee92bf88207a 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-12-30 +date: 2023-12-31 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 90cc529354699..26010e3625472 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-12-30 +date: 2023-12-31 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 11ca608f17f9b..63c36ccbfe3d9 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-12-30 +date: 2023-12-31 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 6c8d8ec0b8c49..35739fd3a3963 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-12-30 +date: 2023-12-31 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 2c2fba8bf9e79..e90d2a1ed43ba 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-12-30 +date: 2023-12-31 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 2ff001947d8b6..abd67e25bea6a 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-12-30 +date: 2023-12-31 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 153f85f982d03..e25025f5855b5 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-12-30 +date: 2023-12-31 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 f563d4a65beb6..e91dfa709d9cf 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-12-30 +date: 2023-12-31 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 8512437fb4347..3df7d565fb1b0 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-12-30 +date: 2023-12-31 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 dd2d958e52eed..784bdc851f2e7 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-12-30 +date: 2023-12-31 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 4544aba96352f..9bc9678a345b3 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-12-30 +date: 2023-12-31 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 51a66d7b53765..15d9a8aeb47e0 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-12-30 +date: 2023-12-31 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 28278a1392b25..edce609ec5ea9 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-12-30 +date: 2023-12-31 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 06a527b6d98ef..61e1d0e5320d8 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-12-30 +date: 2023-12-31 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 1ef6f2dba114b..dc7aefb652d52 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-12-30 +date: 2023-12-31 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 fd5de95c96775..7c5f3f0c131c8 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-12-30 +date: 2023-12-31 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 f8f524fa7666f..327305d2c02eb 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-12-30 +date: 2023-12-31 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 47e1a28f8d3e9..426200129b4d7 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-12-30 +date: 2023-12-31 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 735b0d0c93bad..6c2b8812db7c6 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-12-30 +date: 2023-12-31 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 0487c5847f885..2ea544468fe79 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-12-30 +date: 2023-12-31 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 a4e32aeb35cf1..fe7a8ec558e01 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-12-30 +date: 2023-12-31 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 092a25782999c..23bedae6fcb8e 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-12-30 +date: 2023-12-31 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 e36f1dc4bb180..7dca3ddd451a1 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-12-30 +date: 2023-12-31 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 f9ba84c519d24..38b14d1289526 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-12-30 +date: 2023-12-31 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 d318c855a95ee..4b7a5625e2256 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-12-30 +date: 2023-12-31 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 3e204b78696df..70c1bb4a2787e 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-12-30 +date: 2023-12-31 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 41eef8853c856..cfec83b1297a1 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-12-30 +date: 2023-12-31 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 59c8f8fcb1046..7138c6c853dce 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-12-30 +date: 2023-12-31 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 03e9664b7a00f..d8013f72b5d42 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-12-30 +date: 2023-12-31 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 c7ddd3ff6743a..a245645c4b047 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-12-30 +date: 2023-12-31 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 1fd80a38d3326..97e4d8be6523b 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-12-30 +date: 2023-12-31 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 3c6322ea83495..e36e5dffee291 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-12-30 +date: 2023-12-31 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 8e9cf2671769b..1796ad5c323bd 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-12-30 +date: 2023-12-31 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 a7a38c111ad32..7a9e9bb2ae3e8 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-12-30 +date: 2023-12-31 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 6622af9d7358b..9870b0c63b9dc 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-12-30 +date: 2023-12-31 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 728603e0abd16..7c7d94ca84086 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-12-30 +date: 2023-12-31 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 96e4926289482..55d6f532b039c 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-12-30 +date: 2023-12-31 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 cbe3b553d218b..e96b36b07c547 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-12-30 +date: 2023-12-31 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 4fb33c7ba3c54..a001c81d68889 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-12-30 +date: 2023-12-31 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 d22a15b97f580..d3c13fbec1c34 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-12-30 +date: 2023-12-31 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 2b54b02385df9..2c46cdb602999 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-12-30 +date: 2023-12-31 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 bfe45ffc6cbf7..3f7ef3574a0fa 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-12-30 +date: 2023-12-31 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 cabd4a049d5b8..e6f01b3b1a0bb 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-12-30 +date: 2023-12-31 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 16c44c4e85fe6..d730121eb0521 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-12-30 +date: 2023-12-31 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 5f84c94610354..1dab775012cb6 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-12-30 +date: 2023-12-31 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 7d84b1a647744..a6d8159100789 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-12-30 +date: 2023-12-31 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 13b1fb85103fb..fa18cbe797e64 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-12-30 +date: 2023-12-31 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 549df50008d18..f1bc1c8e5647b 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-12-30 +date: 2023-12-31 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 282320f3a43eb..14dfe853febe1 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-12-30 +date: 2023-12-31 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 6f81e9b35a47d..66d423b3523df 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-12-30 +date: 2023-12-31 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 67be96518dacf..396957631e1a8 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-12-30 +date: 2023-12-31 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 488edf1fab676..3d02a9a5754c4 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-12-30 +date: 2023-12-31 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 9b2fad48c8a26..744768a8132bf 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-12-30 +date: 2023-12-31 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 a4805d5f6a85c..1005c74743258 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-12-30 +date: 2023-12-31 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 8dc094bba9465..2cd13f446aeff 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-12-30 +date: 2023-12-31 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 5ccc7d7020617..7d74f34616628 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-12-30 +date: 2023-12-31 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 f8cebd6edf6be..8fb25bdca9be7 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-12-30 +date: 2023-12-31 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 b9cc233b4c416..baf0087a312d4 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-12-30 +date: 2023-12-31 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 76996ab2c6c89..7d55b80b96b7a 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-12-30 +date: 2023-12-31 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 1c6511081680c..8ffbac6acbb75 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-12-30 +date: 2023-12-31 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 4afff8501f473..086a66ef28ab0 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-12-30 +date: 2023-12-31 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 dae6edbf9932a..15fb36136ee4c 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-12-30 +date: 2023-12-31 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 2ff6517e41df7..74e931c727ff6 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-12-30 +date: 2023-12-31 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 f71785ff6ce11..2f7d723dcc18a 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-12-30 +date: 2023-12-31 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 545405793debe..424d723c97a5e 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 424d02e2399cf..0e4184d908b09 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-12-30 +date: 2023-12-31 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 0a22a66bea512..0fe50689700ea 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-12-30 +date: 2023-12-31 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 6a0f3302a7ea3..d8cdebe37ec09 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-12-30 +date: 2023-12-31 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 4a49bb90447e0..c848e5d320538 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-12-30 +date: 2023-12-31 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 f28dae0da586e..6138910864391 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-12-30 +date: 2023-12-31 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 d1c777196acae..ea14f6b51c59b 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-12-30 +date: 2023-12-31 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 4d3d9953e389c..6871d1b6cef6d 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-12-30 +date: 2023-12-31 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 1c463bea060bf..dc2c163dcde23 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-12-30 +date: 2023-12-31 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 474e81b234227..daf8160be61dd 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-12-30 +date: 2023-12-31 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 172eecd60973e..8a657ed63cfeb 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-12-30 +date: 2023-12-31 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 409500a71899b..37f9c175339de 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-12-30 +date: 2023-12-31 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 09f0bc941f0fb..87e2d916acc7e 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-12-30 +date: 2023-12-31 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 7662c3cea1811..62afc19629df1 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-12-30 +date: 2023-12-31 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 27f7538e46833..47c41b507cf3b 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-12-30 +date: 2023-12-31 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 bc35892d55ba3..a5953176aa0ff 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-12-30 +date: 2023-12-31 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 771f933093827..34402ae7088fc 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-12-30 +date: 2023-12-31 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 57dcf3b58c66c..b798b84ce86f4 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-12-30 +date: 2023-12-31 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 885f47a442166..e13bf181ed255 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-12-30 +date: 2023-12-31 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 6f473b6073b0f..3cdb799d5ccc3 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-12-30 +date: 2023-12-31 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 f0f39c282f148..4dc0d4422edd4 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-12-30 +date: 2023-12-31 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 4937b55b2b8cd..92581cc5f7880 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-12-30 +date: 2023-12-31 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 88e03e7ba613b..e8f6345b66bdb 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-12-30 +date: 2023-12-31 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 572cf4c607114..e5b2de979d4b9 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-12-30 +date: 2023-12-31 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 4e1ae9807e2ed..f1d58397a23cd 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-12-30 +date: 2023-12-31 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 a7d2d64db42a8..d3a252f7bab65 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-12-30 +date: 2023-12-31 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 59ac3111506f1..c12696f6109fb 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-12-30 +date: 2023-12-31 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 7bc096957fdc5..9b18de965acd0 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-12-30 +date: 2023-12-31 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 8360503b1dc94..67c1f1ed40b62 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-12-30 +date: 2023-12-31 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 e98e65ed9d17d..da4560a3af3d3 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-12-30 +date: 2023-12-31 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 e2f499018fc96..b1261b7676ae9 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-12-30 +date: 2023-12-31 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 e84c75ad458f8..1d1962422fcbe 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-12-30 +date: 2023-12-31 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 6350fe9526586..2eb971b8a35a0 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-12-30 +date: 2023-12-31 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 f5210e8ca6220..d57d220d58b7d 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-12-30 +date: 2023-12-31 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 cf7598c93517a..746dfa4079ba2 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-12-30 +date: 2023-12-31 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 3925770ff4a53..4f7f7fe6ca709 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-12-30 +date: 2023-12-31 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 4b381b592555c..59f240e7ff94d 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-12-30 +date: 2023-12-31 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 94446dfc481eb..799e00eaefd59 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index 1c841270b7663..49d77ccc16239 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index 30468b7619adf..c256e9acdf8d9 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index 107bd558d50b5..a0a52e9696fa6 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-12-30 +date: 2023-12-31 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 a42f744ce7776..638eba6e03388 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-12-30 +date: 2023-12-31 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 c003d3aa7424d..4b78a61d3db30 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-12-30 +date: 2023-12-31 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 7d1e3dcb7a7cc..2510b53345b28 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-12-30 +date: 2023-12-31 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 cec6f927d9c97..6e9d373e68894 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-12-30 +date: 2023-12-31 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 377ef7fcdd3f1..27bba0efa3392 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-12-30 +date: 2023-12-31 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 444acfb742acb..d6c7eb26e32d7 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-12-30 +date: 2023-12-31 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 c0103a117f51e..2ea6e9b73b67b 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-12-30 +date: 2023-12-31 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 5bd9a7ad34e58..923cab96690f7 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-12-30 +date: 2023-12-31 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 7b5a442268316..fc859cbe18a80 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-12-30 +date: 2023-12-31 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 fa78b26df5b9e..6452ae200b150 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-12-30 +date: 2023-12-31 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 bfb297b69f46b..56a6acb0e2c33 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-12-30 +date: 2023-12-31 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 eb2411528cbac..2d75552384dea 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-12-30 +date: 2023-12-31 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 1b08c4d778d7a..5a6cc51228b91 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-12-30 +date: 2023-12-31 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 680149c4ba327..930df7339e9cf 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-12-30 +date: 2023-12-31 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 c388c39c48a4a..e2ac7ea3e7349 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-12-30 +date: 2023-12-31 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 18939205f695d..b40d75d87d207 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-12-30 +date: 2023-12-31 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 09f42cc3ee9a2..d77a52859c824 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-12-30 +date: 2023-12-31 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 ef053ddbeb2a3..211619def808e 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-12-30 +date: 2023-12-31 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 e34068d0d0e34..0a6dc9af8546e 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-12-30 +date: 2023-12-31 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 c46967ef00964..249a874d58430 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-12-30 +date: 2023-12-31 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 af065376f92b5..a0e77c33a8fd0 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-12-30 +date: 2023-12-31 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 7cedd5f5eb8d0..9be0d70a010dd 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-12-30 +date: 2023-12-31 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 0ce65d285d4ad..96ffa8b824ff3 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-12-30 +date: 2023-12-31 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 d87a49c1e1f5c..bae44f0e1e31d 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-12-30 +date: 2023-12-31 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 c08c552afe542..7b9a7926579a1 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-12-30 +date: 2023-12-31 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 112425d2c44cd..e03f3f7acf923 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-12-30 +date: 2023-12-31 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 3bd386ad6cb24..5ec0c1348c685 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-12-30 +date: 2023-12-31 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 7632ce642f4d5..fa7143413101e 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-12-30 +date: 2023-12-31 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 6253275a7b1e4..d2e6c46390b7a 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-12-30 +date: 2023-12-31 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 56660c152f1c1..20a2f6e7013d0 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-12-30 +date: 2023-12-31 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 abc40c76e22fb..ea30aaa79bc67 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-12-30 +date: 2023-12-31 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 25ac5a669dfea..aece1e532e9f2 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index dee62e6de5974..dc8cbf344305f 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index 2b7cf3a2fc929..2d4fe18b58b46 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-12-30 +date: 2023-12-31 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 38b053e6b0343..a719e08fa89f8 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-12-30 +date: 2023-12-31 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 ae83c76972d93..a410f9ab23fba 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-12-30 +date: 2023-12-31 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 bfc8c33b41ec2..91092dfd05c4a 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-12-30 +date: 2023-12-31 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 732abaea47310..b121770a261eb 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-12-30 +date: 2023-12-31 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 3fd87682926b2..0c254f376480a 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-12-30 +date: 2023-12-31 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 faf90cc27597a..cd4f3c9b6114a 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-12-30 +date: 2023-12-31 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 314bb53419254..e862aa83a93bd 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-12-30 +date: 2023-12-31 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 8e8cf3e61e1c9..b45f863a85d96 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-12-30 +date: 2023-12-31 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 9abe2e31f1cd1..f8e197348bcf2 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-12-30 +date: 2023-12-31 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 8197986d1abac..28a8c15ff9593 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-12-30 +date: 2023-12-31 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 36bf877064706..2b83022344566 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-12-30 +date: 2023-12-31 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 f2445a2dbc240..147d5d17ed258 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-12-30 +date: 2023-12-31 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 6c9480eccf21f..66fc78135fcef 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-12-30 +date: 2023-12-31 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 d0ebf4da74598..c8ba674d14cf8 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-12-30 +date: 2023-12-31 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 2e66198dfd797..da524300470b8 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-12-30 +date: 2023-12-31 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 a3b40229049be..4e0df183d6708 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-12-30 +date: 2023-12-31 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 cf055ece43e3f..bbcdc11398079 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-12-30 +date: 2023-12-31 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 0dd74dcf70ec0..75d9483a083b1 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index db320a4d18e2c..b043c54c82dd8 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index 3f894158658a3..307796e913b5f 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 4b4fa3a18686b..b80627c6f05fb 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-12-30 +date: 2023-12-31 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 0af93c93323a2..7656052466eb2 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-12-30 +date: 2023-12-31 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 4250ed9200cf1..4e3cf4ae189ef 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-12-30 +date: 2023-12-31 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 1d413aa0a4386..be2b1eca95b78 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-12-30 +date: 2023-12-31 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 4db788bdd554c..89127e5ace494 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-12-30 +date: 2023-12-31 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 dfe3b634122d2..ad00b1089fa50 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-12-30 +date: 2023-12-31 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 ae77a1af9b614..b4354397b3b55 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-12-30 +date: 2023-12-31 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 8583236a059a7..963096d3ec043 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-12-30 +date: 2023-12-31 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 ae0393b768a21..41c3d53e710ba 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-12-30 +date: 2023-12-31 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 36cfd08b7f8da..36e1947bf6ea0 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-12-30 +date: 2023-12-31 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 e9cdf852e3982..d998ab8f2c0f8 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-12-30 +date: 2023-12-31 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 2422e708b2e6b..15a47eff78852 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-12-30 +date: 2023-12-31 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 f9e89a2a7c52b..eb8711a812ff3 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-12-30 +date: 2023-12-31 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 dab0b30ea5481..50c0bfc55b1d8 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-12-30 +date: 2023-12-31 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 65c6f31b29a93..74edfb844973f 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-12-30 +date: 2023-12-31 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 9cc6274eb9750..ab9c1b947600d 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-12-30 +date: 2023-12-31 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 076ba06060665..4ee06f69107be 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-12-30 +date: 2023-12-31 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 4800c919791f1..10d378fd78367 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index d20e37c305ed6..088614b9c7721 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-12-30 +date: 2023-12-31 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 d7c0a6a273074..5b19f7b9483f9 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-12-30 +date: 2023-12-31 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 f5a28d8c03c89..013bd45bef523 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-12-30 +date: 2023-12-31 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 45571292300d5..2ed9d16af9a2f 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-12-30 +date: 2023-12-31 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 3ca86ef4b7a79..5562e72971965 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-12-30 +date: 2023-12-31 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 0958c3bcd8471..f2e7b4d26f402 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index 0c8d002b523d9..5283fe75b0336 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index addca9e474804..21af5bc4d85b3 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index b8cd63c8c345f..c154d832bb64a 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index e698a19551ae0..b261198445370 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-12-30 +date: 2023-12-31 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 82eaddf63417e..dad68409561a3 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-12-30 +date: 2023-12-31 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 d73c114cdce0a..4db73e7b163e9 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-12-30 +date: 2023-12-31 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 7543efb7ae0ba..a00eb32c31478 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-12-30 +date: 2023-12-31 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 58c97eacd4970..f076852abc3ba 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-12-30 +date: 2023-12-31 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 0f7b49be3cb66..f60f668b9396e 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-12-30 +date: 2023-12-31 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 2ea310d187b44..798c2de6be5f9 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index d8d35e7bfd2db..9ca6aaf5dbdeb 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-12-30 +date: 2023-12-31 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 cf271066101a3..92b1bc95c3477 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-12-30 +date: 2023-12-31 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 a647a176e94bc..51d32f9b1358c 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index e443f8cfe1279..8a637315273f8 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index e741dfa7de9d1..16f413de4933d 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-12-30 +date: 2023-12-31 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 17aed97e25519..0f7b9a6899ec3 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index 6221d17250a84..f0074000c06f0 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index f0c3ef9fac0c7..c34956861df84 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-12-30 +date: 2023-12-31 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 72c0fcc818f10..7cca7b975f186 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-12-30 +date: 2023-12-31 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 1f934e634c9aa..a9c9abae16451 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index a8d96f346fef5..e085c9c08eb37 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-12-30 +date: 2023-12-31 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 bc8022630023f..d135dece6e7e8 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-12-30 +date: 2023-12-31 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 1d9bd0af8389c..85c3fcf804311 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-12-30 +date: 2023-12-31 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 ad97b57397c3c..049a2abd037f5 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-12-30 +date: 2023-12-31 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 14506d3798e93..2f90e5433c14a 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-12-30 +date: 2023-12-31 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 111ca3f1f77e6..9e335b09b91f2 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-12-30 +date: 2023-12-31 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 b6064981e906e..cf3fd1c88ec21 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-12-30 +date: 2023-12-31 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 6ed4b0b73c6bc..e6bfeb8bba4de 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-12-30 +date: 2023-12-31 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 b68198fcf3d41..aaf1647bb6dc8 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-12-30 +date: 2023-12-31 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 ecce5cb7a036f..c6b1e35fbcc13 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-12-30 +date: 2023-12-31 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 62027882eb13e..7ecbd52c8622c 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 31aed596f4e41..bd662dcd764bf 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-12-30 +date: 2023-12-31 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 6f500468eaa01..0005b97f5b96e 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-12-30 +date: 2023-12-31 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 3f31926e059c5..734bbf055ffc8 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-12-30 +date: 2023-12-31 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 b6945b31d9d4f..dcf8aed9c1bdf 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-12-30 +date: 2023-12-31 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 989d60810b7c0..7e84b8ea19b8b 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-12-30 +date: 2023-12-31 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 64a818f573ba0..07d59187ef7ca 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index eb5601b82d928..ffcf97e36aeca 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index eb8cbfe467f47..2e307587bc5d2 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-12-30 +date: 2023-12-31 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 41f882efe39ef..d2a66e2695fda 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-12-30 +date: 2023-12-31 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 98e334d02daf0..bd1a6627f8570 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-12-30 +date: 2023-12-31 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 c9d86304d733b..ca871c9965442 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index 98d90ec04ce1c..6c0c1faf66978 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index 68397b4b9e817..b2b784f48af4f 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index 560bed2a8bfd6..a8b1d7331ec3e 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index 41c56d6b953cc..307e65633da3b 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index 1586df934eea5..8a103637a3687 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index a318a2bc81e24..63c3099e87288 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index cd2733f848a89..235aa650f0872 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index 5562394e97cab..4a3c7ba9f28b0 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index e5140c57c2be8..d890d209d09d6 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index d80b09bac93e8..65e0bb2400ad3 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index d5aa4503afc8e..02df389aecfc1 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-12-30 +date: 2023-12-31 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 2419b46f68cee..6b654b56188f0 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-12-30 +date: 2023-12-31 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 574584dfe1c71..9975c8e751bee 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-12-30 +date: 2023-12-31 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 67df63e536e44..67d30151d579f 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-12-30 +date: 2023-12-31 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 da3937d015214..90731aabf4379 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-12-30 +date: 2023-12-31 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 94b23d0ffa57b..6f6514b43facf 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index a8df989ee0c26..ed3ed00125700 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index bcc84e2182a33..d29a14307d81a 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-12-30 +date: 2023-12-31 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 57b875d9a151c..3d89190e1f4c5 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-12-30 +date: 2023-12-31 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 e2a5d29b965f9..09999772e1c6a 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-12-30 +date: 2023-12-31 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 eb19322f08d27..057119df3d55a 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-12-30 +date: 2023-12-31 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 1bd2d0d591f23..964bbeda41b29 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-12-30 +date: 2023-12-31 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 ca9bc4355ce59..b5a0d33820fb1 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-12-30 +date: 2023-12-31 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 1735ef5f45082..2c2ea85fd3688 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-12-30 +date: 2023-12-31 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 5321eb1f729a6..fa67b240c412c 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-12-30 +date: 2023-12-31 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 d68bf34649325..562c73d8bcc46 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-12-30 +date: 2023-12-31 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 d2c19cc8a8d91..94d1efb9a8629 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-12-30 +date: 2023-12-31 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 0203ba79e6942..59bdb5b558a11 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-12-30 +date: 2023-12-31 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 da8084d2f7fca..83fc84cf0155a 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-12-30 +date: 2023-12-31 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 c251f429a76d2..7ca12b75f2365 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-12-30 +date: 2023-12-31 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 4b5bd779207c3..50226ab3c6c26 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-12-30 +date: 2023-12-31 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 23560bd1ad157..355a1e8e1bbbf 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-12-30 +date: 2023-12-31 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 af2a6e10d812a..fd9948b411517 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-12-30 +date: 2023-12-31 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 1511c43cd325f..106e33d230f97 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-12-30 +date: 2023-12-31 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 5a74a2e17bff2..5ec7817913944 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_ui_actions.mdx b/api_docs/kbn_ml_ui_actions.mdx index b199168c55cc5..34da105020061 100644 --- a/api_docs/kbn_ml_ui_actions.mdx +++ b/api_docs/kbn_ml_ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-ui-actions title: "@kbn/ml-ui-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-ui-actions plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-ui-actions'] --- import kbnMlUiActionsObj from './kbn_ml_ui_actions.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 28f1d3d4e4861..1a781646a1390 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-12-30 +date: 2023-12-31 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 b2316c6a4bc28..6e7196612c5ff 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-12-30 +date: 2023-12-31 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 80f1e74afd9d9..106cbca21f571 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-12-30 +date: 2023-12-31 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 249b7b603be84..80d088fd4dbd4 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index cadb93fc47f41..b61f9378b481a 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index 6d1ac92c4745f..dc07f138d5232 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index 8c74f3fa381d9..3d70afae3ec41 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index a0d970c83a6d6..4ddb5f1383143 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 0e01617aaaced..ebbe86e9e7dd4 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-12-30 +date: 2023-12-31 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 05e9e88bdeab1..7ba6233a4fa4f 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-12-30 +date: 2023-12-31 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 d5d19133948e1..8d232ecf2155b 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index c3628de98b42a..eb729f5c65e38 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 47ceba0123723..5decfb0ea9646 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-12-30 +date: 2023-12-31 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 8502cc468ea09..27226cb2e9c21 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-12-30 +date: 2023-12-31 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 a29144405d896..719b481360d41 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index 027dfc6fe8274..2b57a3b0fa680 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 11b86e7920999..05953fa3e8ce7 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-12-30 +date: 2023-12-31 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 e670630890f43..00b7542a58517 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-12-30 +date: 2023-12-31 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 55fdf95d0f76f..250eff3e0ee46 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-12-30 +date: 2023-12-31 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 a4c74995d19ae..b229d12b73481 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-12-30 +date: 2023-12-31 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 82be4d1f05ad1..819446e7b5425 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-12-30 +date: 2023-12-31 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 981eaf03b1bc6..b4e8950b86b95 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-12-30 +date: 2023-12-31 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 1181bef356ed3..ef33067cc59e4 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-12-30 +date: 2023-12-31 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 265987f8e120b..22666c5f1d41e 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-12-30 +date: 2023-12-31 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 2ec66224a5626..b4c575099b53e 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-12-30 +date: 2023-12-31 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 f2d995d39c2fa..65b5731d28f37 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-12-30 +date: 2023-12-31 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 14801f63cb69c..3bf7298a8684d 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-12-30 +date: 2023-12-31 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 f4b103f4a4edb..c04d216248d5c 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-12-30 +date: 2023-12-31 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 cef6db283f4db..e356469317e99 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index aff0ff5d07825..ffa411c59062a 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index bf979e5636922..dc99786de452a 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index 634ca0ddf562e..2f8a1abd2b5dc 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index 96c7cee2b8216..afa06009f2599 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index c4b9a92c271e5..5fbca796b70ac 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index 929b04225d30c..0b8a36b34d3bd 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index 374ba685fd982..fca161b54171a 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index 6aea80aad8622..31b5b6dd56934 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index 955bcef29afaf..24b4f956b5bc5 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index d3d1b7273c890..f58daf99c47f8 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 46b2890e8db56..377b74564177c 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index 9b8fc7eb2477b..17a66293747e9 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index 52fcbe69b172e..40cbf2b41c92f 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-12-30 +date: 2023-12-31 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 c4ce40e49121b..af67329fb635b 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-12-30 +date: 2023-12-31 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 8d9b6f162b9cd..3b3ad174f262b 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index f397414993fd5..2d785a03c45a1 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index a255159dec442..3bf5c2d5cbd13 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index ccbfbd1751eb5..43144e46dbfab 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index a0833af3a9eac..ce78512a85875 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index f614ee45bce3d..49c0098dedcc9 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index 1960c14f2ad45..8c6bdab985545 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index 0da4190b1177f..6a72b849d70bd 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index 58c1e723fbdad..4d6c687f15740 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index c32f2f587993d..b7319f2c5433e 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index e9b25691a08a0..9b5946dbd3960 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-12-30 +date: 2023-12-31 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 f2532727bc5fb..a3ac02e2f90fa 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-12-30 +date: 2023-12-31 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 15370b5a56774..b4f948454518f 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-12-30 +date: 2023-12-31 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 1c11669417aa9..1732335b50e50 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-12-30 +date: 2023-12-31 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 719bb7ed7d549..e859a8e424ae3 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-12-30 +date: 2023-12-31 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 6426d1ae48a44..083054eb5d56b 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-12-30 +date: 2023-12-31 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 8b6e3b15ed47c..f72986dd2988e 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-12-30 +date: 2023-12-31 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 aea41231f83ef..8a5f4c6c5a0e4 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-12-30 +date: 2023-12-31 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 f095bc2a6480d..183a5aa4e70e8 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-12-30 +date: 2023-12-31 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 e425cf4001a79..97967d486f74a 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-12-30 +date: 2023-12-31 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 663a26c4a20c9..f74f3d410f75e 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-12-30 +date: 2023-12-31 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 3051c6f3d7956..c585b9322c38a 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-12-30 +date: 2023-12-31 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 f7f9cc07ed03f..6c5519ac168a4 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-12-30 +date: 2023-12-31 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 c7657b6d29095..3bbe94c4819a2 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-12-30 +date: 2023-12-31 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 65ac127169534..4cdab21247149 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-12-30 +date: 2023-12-31 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 7532f130dea8d..25654b8f226f6 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-12-30 +date: 2023-12-31 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 a08b4c7caa03d..7be0d64c58e10 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-12-30 +date: 2023-12-31 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 146b92b0ddc03..39f8cdd3906cd 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-12-30 +date: 2023-12-31 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 48b22100a07e7..33f79f364ea53 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-12-30 +date: 2023-12-31 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 868a4291343a1..ce94b2ca83c7a 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-12-30 +date: 2023-12-31 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 4c5464df10301..07c966bff6e04 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-12-30 +date: 2023-12-31 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 5965321b0e4f0..9e3a42234d8f9 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-12-30 +date: 2023-12-31 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 b1337de41ddb1..b9d460954fe7e 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index dac27eb710444..c7bd56e2670d7 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index cfd726ff30c56..29612b5ff8950 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index 6a2f937a0e627..0b8131ee3a598 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index 6319f7329f737..7752ab874d8ce 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index 29c5ae768c96b..2abf38061ac8f 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index d8213f3e78054..1ac633e6b420f 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-12-30 +date: 2023-12-31 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 66bc93b07726f..7e5b2ccd5ecff 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-12-30 +date: 2023-12-31 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 97507eac61bb6..82325e55a6239 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index dd4f09ddccb6a..fa18a9a584a16 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index 7209492516fe7..77ab3ed44d6af 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-12-30 +date: 2023-12-31 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 af32f553a6fa7..2f5dd3bd34d7e 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-12-30 +date: 2023-12-31 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 20be88be02046..80e4332f80ed3 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-12-30 +date: 2023-12-31 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 07fef2de232d0..e0891af4636e1 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index 16330c42399e2..de4cc308617a1 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index be6132bfc7c0e..84849ac720183 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-12-30 +date: 2023-12-31 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 127b8d7bc49bb..31f8207ca4472 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-12-30 +date: 2023-12-31 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 a91e69d6b1066..dc869555f72fa 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-12-30 +date: 2023-12-31 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 4ae054603e7d4..f79d06b1c0395 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-12-30 +date: 2023-12-31 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 d793ec72444c9..905a440d5cdcc 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-12-30 +date: 2023-12-31 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 2991e2cc05059..bfc6ec5596d77 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-12-30 +date: 2023-12-31 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 21e72bb49bb95..3faf60d4ce8dd 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-12-30 +date: 2023-12-31 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 1de04f6a83359..0c1e1105beb51 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-12-30 +date: 2023-12-31 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 17dc8c8bb70c3..2cb6c290d427a 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-12-30 +date: 2023-12-31 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 c89985f2ce231..f2318c0a4d8be 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-12-30 +date: 2023-12-31 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 61cb1b10c92f5..72b09b83eeea5 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-12-30 +date: 2023-12-31 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 a1920d09562b4..14404512e25a5 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-12-30 +date: 2023-12-31 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 5619ca5e25e2b..9f58a56d33e5b 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-12-30 +date: 2023-12-31 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 18f8506bae918..dc67c0477b908 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-12-30 +date: 2023-12-31 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 649d81b568aa0..7e93274d0096f 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-12-30 +date: 2023-12-31 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 db07ac930c9d0..458d8a603c6c8 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-12-30 +date: 2023-12-31 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 d56ee93d5a3de..19ca607f3c40b 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-12-30 +date: 2023-12-31 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 6b85f3758c4c3..1ef1cafdf18e3 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-12-30 +date: 2023-12-31 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 e343056d41859..2206781190dd6 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-12-30 +date: 2023-12-31 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 6c3c365171342..72b3ba864428a 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-12-30 +date: 2023-12-31 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 ae4aae33b4295..aaaaaa13c11ce 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-12-30 +date: 2023-12-31 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 58d1d5d875a2b..2f0e8e2d03f54 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-12-30 +date: 2023-12-31 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 8e2cb02361783..e4372af929990 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-12-30 +date: 2023-12-31 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 ce67cdec8b5ab..f09407ee01327 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-12-30 +date: 2023-12-31 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 17e23909c2301..3361ad2f3062c 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-12-30 +date: 2023-12-31 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 ae5997bf306e1..2306ba1d0c5bd 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-12-30 +date: 2023-12-31 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 13d77290d1ac2..e0b621dbac9ee 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-12-30 +date: 2023-12-31 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 0c15a31b51645..05dc4b995edaf 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-12-30 +date: 2023-12-31 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 d46cafa9268d5..bfff9eea960f4 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-12-30 +date: 2023-12-31 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 003351a4021d0..47c5ff97f24b0 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-12-30 +date: 2023-12-31 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 d55951b8b46ce..345f3fb398369 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-12-30 +date: 2023-12-31 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 a6c3be69095cf..7514c6f315c83 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-12-30 +date: 2023-12-31 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 df6a1d843f179..ace0ddf69aa81 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-12-30 +date: 2023-12-31 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 fdd6f6c948ce6..844999586b238 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-12-30 +date: 2023-12-31 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 1ccf84d6063dd..ba031e5445d07 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-12-30 +date: 2023-12-31 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 32b18bf419762..8162527e1412f 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-12-30 +date: 2023-12-31 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 a3a5c1245c7bc..eb78e602bcc1d 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-12-30 +date: 2023-12-31 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 26e8a7d6a4c95..453cc95b0c288 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-12-30 +date: 2023-12-31 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 0ad59cc043be8..5c633399e82a0 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-12-30 +date: 2023-12-31 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 2d7bae0f35713..6fcdb863fc6cb 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-12-30 +date: 2023-12-31 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 644ec5952070f..a2c409dd9baa3 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-12-30 +date: 2023-12-31 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 df057448dc130..2fddcf08c2960 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index a02f214c99746..558b67c87dd68 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 2c8d62fd46b32..b52e4add6a452 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-12-30 +date: 2023-12-31 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 330d7e5645c89..0d5519e1fc125 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-12-30 +date: 2023-12-31 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 a32e6e35f1d15..59e4b1ffd2cc3 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-12-30 +date: 2023-12-31 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 29fa8eec5f54b..9bedf6f75294b 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-12-30 +date: 2023-12-31 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 cdc6f57ccf946..62b500858b9a0 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index 3873f55797488..e45d0e6278421 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index dcec21b3c3dd0..a02b217381d8a 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index ea2896bc05a44..c4f72384e6d26 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index 8f4fe5e3a99e0..c1482e39e46fd 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx index a64180af33422..c7226ca805cba 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index 96c33f7158d4f..46b4fbf6479e5 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 133c557db1356..118e205485ca6 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index 5be114f3bae69..98f14b80d5a94 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-12-30 +date: 2023-12-31 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 8bad7ec940157..43686d5adfae9 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-12-30 +date: 2023-12-31 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 81c89117b3637..75d1698ca1489 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-12-30 +date: 2023-12-31 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 729c5178dd1fd..b6e4a4b225820 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_visualization_utils.mdx b/api_docs/kbn_visualization_utils.mdx index b7d62d4068337..4e3cdc6b6f544 100644 --- a/api_docs/kbn_visualization_utils.mdx +++ b/api_docs/kbn_visualization_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-utils title: "@kbn/visualization-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-utils plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-utils'] --- import kbnVisualizationUtilsObj from './kbn_visualization_utils.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index 1de6374b858e8..a4539a9d5f834 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 97b632e9f5012..b00b6e3bd829f 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index e96b0f1776f9a..1b99459a62004 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index c1829e103201f..0db3f10e66244 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 23327d2ab704f..abf9907a4b518 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-12-30 +date: 2023-12-31 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 bb9e108afcde0..6a1be8d70ef6c 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-12-30 +date: 2023-12-31 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 d2738ea436a88..f9f357339c3f5 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-12-30 +date: 2023-12-31 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 ac46fdedac593..127d6201d44b4 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-12-30 +date: 2023-12-31 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 9c7ac2c003461..37542c5c0cafd 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-12-30 +date: 2023-12-31 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 a5bb81f5f1144..5887fbc5677b9 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index cd25d76412b73..0cfffbd99316e 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index b711bf1615b63..7bef84c417a39 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 3a8920a2b3d97..13136dcdfb1d3 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx index 6f7db4be4d574..852079251d576 100644 --- a/api_docs/log_explorer.mdx +++ b/api_docs/log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logExplorer title: "logExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logExplorer plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer'] --- import logExplorerObj from './log_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 1fccc6ec355ea..95c8969bb4279 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-12-30 +date: 2023-12-31 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 93caaa7bf751a..818deca8ce433 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-12-30 +date: 2023-12-31 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 f9469a903613b..67ec05824575c 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-12-30 +date: 2023-12-31 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 ce70a5df196eb..38cf308015a6e 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index b676246498669..3fee2e63121b7 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 551dca21354e4..6c439a1d6ffee 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index 6adeed569817f..7d50cbc4e3639 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 2f5a7679f6107..6f663d80b8aaa 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-12-30 +date: 2023-12-31 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 a259e17fe4081..e6dd1dbd18727 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-12-30 +date: 2023-12-31 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 735b42c137a7c..ebff258a039a2 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-12-30 +date: 2023-12-31 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 67f177f54576b..af5e441a81862 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index d0966fd00a56d..aa944beea0a87 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 417defde4474f..fa38506627b43 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 67a6e6ad36a1c..a4f2eb51086f0 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index a15867facd6d1..74a8f2db1253f 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_log_explorer.mdx b/api_docs/observability_log_explorer.mdx index d44f2c8bd46aa..8af2d2b922984 100644 --- a/api_docs/observability_log_explorer.mdx +++ b/api_docs/observability_log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogExplorer title: "observabilityLogExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogExplorer plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogExplorer'] --- import observabilityLogExplorerObj from './observability_log_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 90522fe4d30b9..c47e6643985c3 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index 2e0ef15fc0c98..8b3e406e4a14f 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-12-30 +date: 2023-12-31 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 555a4a93b97e3..426969efc0574 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index c3b685afb74f8..36f60ac394fc4 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 3b772c517ce06..e95f18b2879d2 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 2ca833cc7f0dd..4624344da0606 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-12-30 +date: 2023-12-31 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 bc713263c7c86..f9aabdf2452a8 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index 7a18c8bb77ac5..b7e6818fe05fa 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 008bd1f5eaf8a..6287749e951e3 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-12-30 +date: 2023-12-31 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 732e5715e25ea..ede42289f64e7 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-12-30 +date: 2023-12-31 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 d1e400bde2c69..f4ff7e1779844 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-12-30 +date: 2023-12-31 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 ae66328e420ad..4927f473c6f5b 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-12-30 +date: 2023-12-31 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 a7de2e26ce7a9..054f2c31424c5 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-12-30 +date: 2023-12-31 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 1093219c504f3..4db334cbf252f 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index b982ae980d6d5..20a8551a89ab4 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index dd5d3386a9481..c50e634560c65 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 293a8133b5af1..27c29f7ecdcc0 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-12-30 +date: 2023-12-31 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 f663e0a508a14..414068f5f040b 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-12-30 +date: 2023-12-31 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 ae64084631e69..9e85544697e2a 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-12-30 +date: 2023-12-31 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 e920836787891..ed82ce28ac95f 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-12-30 +date: 2023-12-31 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 dda6b97de2753..007e7e4521654 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 92457649bec24..5ad843770b28f 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index c255a99e47946..de3826500d44b 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index 7e7c59a9957cf..6c3458713d809 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-12-30 +date: 2023-12-31 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 68354da99eccd..0bea74a412f12 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-12-30 +date: 2023-12-31 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 b16bf9a7e1e9f..8f8621e0f93e5 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-12-30 +date: 2023-12-31 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 1799d3e66d575..6b1267730063a 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-12-30 +date: 2023-12-31 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 c4cc11b2c43b0..1e27b58b8bcbf 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-12-30 +date: 2023-12-31 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 ab764fac61212..c9aea59dbfaaa 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-12-30 +date: 2023-12-31 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 7528d11b6f360..f9d65aa17da3b 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-12-30 +date: 2023-12-31 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 565834a314991..2a9a878b77366 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-12-30 +date: 2023-12-31 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 516dda58e4f71..5e6526d0239f4 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-12-30 +date: 2023-12-31 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 c22a69d65f0ad..915ebc51ca109 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-12-30 +date: 2023-12-31 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 f2f3865dd7dd9..ab2a9de4d8fb7 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-12-30 +date: 2023-12-31 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 592295701949c..d8f84f4cad42d 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-12-30 +date: 2023-12-31 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 161ee52a78f30..000cbc54a2752 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-12-30 +date: 2023-12-31 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 eb07f5679b45e..03308fd827333 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-12-30 +date: 2023-12-31 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 0a0cd6bc44c26..b20bf705241e9 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-12-30 +date: 2023-12-31 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 44a79b2bf1166..a256bec7a1b82 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-12-30 +date: 2023-12-31 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 e28e13eefcbf9..163ef544336f8 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-12-30 +date: 2023-12-31 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 3a2e2b624f4b0..40fe836bb547d 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-12-30 +date: 2023-12-31 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 de1eddd75b6ea..aa9724c195d35 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-12-30 +date: 2023-12-31 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 1f7147342d85b..f67c8b57b1767 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 0070250663e70..7d5fab951038c 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 1362c047a2eda..ff163fb7b1dcc 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 66f21a2793aea..b71dc32b73eaa 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index c94e8a487db09..f10671dac676b 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2023-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 4d032ec3bebac..fdd3e1c10e047 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-12-30 +date: 2023-12-31 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 9468205c3c143..ff45a9af4652e 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-12-30 +date: 2023-12-31 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 75d4d527c1fe3..c76779c934b41 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-12-30 +date: 2023-12-31 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 e10559269c5a2..d9d943e4cc91f 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-12-30 +date: 2023-12-31 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 4306e2f8c12b3..89d490871c1eb 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-12-30 +date: 2023-12-31 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 df4d5c67afc00..29a85c19a73fc 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-12-30 +date: 2023-12-31 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 1fb121e9bb733..5e3068f148319 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-12-30 +date: 2023-12-31 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 70d049065afc0..baa56f8577bcf 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-12-30 +date: 2023-12-31 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 aeb75a3ae1589..fc6252faa4cc4 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-12-30 +date: 2023-12-31 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 c795c43ec27c5..dfbaf3976ba62 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-12-30 +date: 2023-12-31 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 535ad9bc00aa3..84c25340bc244 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-12-30 +date: 2023-12-31 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 7b6608b72baed..05832fa9087e9 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-12-30 +date: 2023-12-31 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 0f27707c4641d..c9fde9ce64568 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-12-30 +date: 2023-12-31 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 1f2dbc01a841a..b85047716df44 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-12-30 +date: 2023-12-31 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 a8e9b0ae46e4d..00d0ea93a4aa6 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-12-30 +date: 2023-12-31 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 c9f5a9d14e3d9..04207fb4b0a54 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-12-30 +date: 2023-12-31 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 f351b134c7b35..b979a8d267014 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-12-30 +date: 2023-12-31 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 38c8734d464f6..9d0ae7429925f 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-12-30 +date: 2023-12-31 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 2cddc6036879380723e3c3a6b382fb84217070aa Mon Sep 17 00:00:00 2001 From: Marco Liberati Date: Tue, 2 Jan 2024 13:54:07 +0100 Subject: [PATCH 026/323] [Lens] Fix table alignment (#173908) ## Summary Fixes https://github.com/elastic/kibana/issues/173902 Fix issue and introduces also a unit test. ![text_alignment_table_fix](https://github.com/elastic/kibana/assets/924948/201f70cd-6fc6-41e9-bf87-8e87f9906052) ### Checklist - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --------- Co-authored-by: Stratoula Kalafateli Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- NOTICE.txt | 2 +- .../datatable/visualization.test.tsx | 41 +++++++++++++++++++ .../datatable/visualization.tsx | 1 + 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/NOTICE.txt b/NOTICE.txt index 45af6e5231783..d02031c4b5a2b 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -1,5 +1,5 @@ Kibana source code with Kibana X-Pack source code -Copyright 2012-2023 Elasticsearch B.V. +Copyright 2012-2024 Elasticsearch B.V. --- Pretty handling of logarithmic axes. diff --git a/x-pack/plugins/lens/public/visualizations/datatable/visualization.test.tsx b/x-pack/plugins/lens/public/visualizations/datatable/visualization.test.tsx index a3f4f6f797ee1..dda07ef2c41c8 100644 --- a/x-pack/plugins/lens/public/visualizations/datatable/visualization.test.tsx +++ b/x-pack/plugins/lens/public/visualizations/datatable/visualization.test.tsx @@ -759,6 +759,47 @@ describe('Datatable Visualization', () => { }).headerRowHeightLines ).toEqual([2]); }); + + it('sets alignment correctly', () => { + datasource.publicAPIMock.getOperationForColumnId.mockReturnValue({ + dataType: 'string', + isBucketed: false, // <= make them metrics + label: 'label', + isStaticValue: false, + hasTimeShift: false, + hasReducedTimeRange: false, + }); + const expression = datatableVisualization.toExpression( + { + ...defaultExpressionTableState, + columns: [ + { columnId: 'b', alignment: 'center' }, + { columnId: 'c', alignment: 'left' }, + { columnId: 'a' }, + ], + }, + frame.datasourceLayers, + {}, + { '1': { type: 'expression', chain: [] } } + ) as Ast; + + const columnArgs = buildExpression(expression).findFunction('lens_datatable_column'); + expect(columnArgs[0].arguments).toEqual( + expect.objectContaining({ + alignment: ['left'], + }) + ); + expect(columnArgs[1].arguments).toEqual( + expect.objectContaining({ + alignment: ['center'], + }) + ); + expect(columnArgs[2].arguments).toEqual( + expect.not.objectContaining({ + alignment: [], + }) + ); + }); }); describe('#onEditAction', () => { diff --git a/x-pack/plugins/lens/public/visualizations/datatable/visualization.tsx b/x-pack/plugins/lens/public/visualizations/datatable/visualization.tsx index 505b20bdc3e58..f22d17afad762 100644 --- a/x-pack/plugins/lens/public/visualizations/datatable/visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/datatable/visualization.tsx @@ -496,6 +496,7 @@ export const getDatatableVisualization = ({ width: column.width, isTransposed: column.isTransposed, transposable: isTransposable, + alignment: column.alignment, colorMode: canColor && column.colorMode ? column.colorMode : 'none', palette: paletteService.get(CUSTOM_PALETTE).toExpression(paletteParams), summaryRow: hasNoSummaryRow ? undefined : column.summaryRow!, From 9476dfaed85fbcc3a8a629ebd402a1ca9ba8b0ec Mon Sep 17 00:00:00 2001 From: Sander Philipse <94373878+sphilipse@users.noreply.github.com> Date: Tue, 2 Jan 2024 21:55:51 +0800 Subject: [PATCH 027/323] [Search] Fix connector status bug when updating service type (#174009) ## Summary The connector status will no longer be updated to 'needs_configuration' when updating the service type if the status is 'created'. This is to prevent skipping the initial configuration phase when updating the service type right after creation. --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../configuration/connector_configuration.tsx | 21 +++++++++++++++++++ .../lib/update_connector_service_type.ts | 5 ++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/kbn-search-connectors/components/configuration/connector_configuration.tsx b/packages/kbn-search-connectors/components/configuration/connector_configuration.tsx index fb1ebce945306..b3fc911460bf7 100644 --- a/packages/kbn-search-connectors/components/configuration/connector_configuration.tsx +++ b/packages/kbn-search-connectors/components/configuration/connector_configuration.tsx @@ -118,6 +118,27 @@ export const ConnectorConfigurationComponent: React.FC {children && {children}} + {!uncategorizedDisplayList.length && ( + + + {i18n.translate( + 'searchConnectors.configurationConnector.config.noConfigCallout.description', + { + defaultMessage: + 'This connector has no configuration fields. Has your connector connected successfully to Elasticsearch and set its configuration?', + } + )} + + + )} {isEditing ? ( Date: Tue, 2 Jan 2024 14:56:15 +0100 Subject: [PATCH 028/323] [ES|QL] Fixed round signature to support decimals. (#173915) ## Summary Added decimals arg to `round` function. Co-authored-by: Stratoula Kalafateli --- .../src/esql/lib/ast/definitions/functions.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/functions.ts b/packages/kbn-monaco/src/esql/lib/ast/definitions/functions.ts index 820ab04fea3bf..9d19305a25060 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/functions.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/definitions/functions.ts @@ -18,9 +18,15 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }), signatures: [ { - params: [{ name: 'field', type: 'number' }], + params: [ + { name: 'field', type: 'number' }, + { name: 'decimals', type: 'number', optional: true }, + ], returnType: 'number', - examples: [`from index | eval round_value = round(field)`], + examples: [ + `from index | eval round_value = round(field)`, + `from index | eval round_value = round(field, 2)`, + ], }, ], }, From 274134120a27fc8273c35c440c819ea1e2e1d5a7 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Tue, 2 Jan 2024 14:56:27 +0100 Subject: [PATCH 029/323] [Fleet] Use correctly space scoped SO client when tagging saved objects (#173860) --- .../fleet/server/services/app_context.ts | 21 ++++++++- .../services/epm/packages/install.test.ts | 45 +++++++++++++++++-- .../server/services/epm/packages/install.ts | 7 ++- 3 files changed, 66 insertions(+), 7 deletions(-) diff --git a/x-pack/plugins/fleet/server/services/app_context.ts b/x-pack/plugins/fleet/server/services/app_context.ts index 24b35b7b10201..9e40bcd64c8c8 100644 --- a/x-pack/plugins/fleet/server/services/app_context.ts +++ b/x-pack/plugins/fleet/server/services/app_context.ts @@ -16,6 +16,8 @@ import type { KibanaRequest, } from '@kbn/core/server'; +import { CoreKibanaRequest } from '@kbn/core/server'; + import type { PluginStart as DataPluginStart } from '@kbn/data-plugin/server'; import type { EncryptedSavedObjectsClient, @@ -25,7 +27,7 @@ import type { import type { SecurityPluginStart, SecurityPluginSetup } from '@kbn/security-plugin/server'; import type { CloudSetup } from '@kbn/cloud-plugin/server'; - +import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; import type { SavedObjectTaggingStart } from '@kbn/saved-objects-tagging-plugin/server'; import { SECURITY_EXTENSION_ID } from '@kbn/core-saved-objects-server'; @@ -172,6 +174,23 @@ class AppContextService { } return this.savedObjectsTagging; } + public getInternalUserSOClientForSpaceId(spaceId?: string) { + const request = CoreKibanaRequest.from({ + headers: {}, + path: '/', + route: { settings: {} }, + url: { href: '', hash: '' } as URL, + raw: { req: { url: '/' } } as any, + }); + if (this.httpSetup && spaceId && spaceId !== DEFAULT_SPACE_ID) { + this.httpSetup?.basePath.set(request, `/s/${spaceId}`); + } + + // soClient as kibana internal users, be careful on how you use it, security is not enabled + return appContextService.getSavedObjects().getScopedClient(request, { + excludedExtensions: [SECURITY_EXTENSION_ID], + }); + } public getInternalUserSOClient(request: KibanaRequest) { // soClient as kibana internal users, be careful on how you use it, security is not enabled diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/install.test.ts index bfb99d0f17980..08e006289c7ea 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install.test.ts @@ -28,6 +28,11 @@ import * as obj from '.'; jest.mock('../../app_context', () => { const logger = { error: jest.fn(), debug: jest.fn(), warn: jest.fn(), info: jest.fn() }; + const mockedSavedObjectTagging = { + createInternalAssignmentService: jest.fn(), + createTagClient: jest.fn(), + }; + return { appContextService: { getLogger: jest.fn(() => { @@ -38,13 +43,12 @@ jest.mock('../../app_context', () => { createImporter: jest.fn(), })), getConfig: jest.fn(() => ({})), - getSavedObjectsTagging: jest.fn(() => ({ - createInternalAssignmentService: jest.fn(), - createTagClient: jest.fn(), - })), + getSavedObjectsTagging: jest.fn(() => mockedSavedObjectTagging), + getInternalUserSOClientForSpaceId: jest.fn(), }, }; }); + jest.mock('.'); jest.mock('../registry', () => { return { @@ -145,6 +149,7 @@ describe('install', () => { mockGetBundledPackageByPkgKey.mockReset(); (install._installPackage as jest.Mock).mockClear(); + jest.mocked(appContextService.getInternalUserSOClientForSpaceId).mockReset(); }); describe('registry', () => { @@ -348,6 +353,38 @@ describe('install', () => { expect(response.status).toEqual('installed'); }); + + it('should use a scopped to package space soClient for tagging', async () => { + const mockedTaggingSo = savedObjectsClientMock.create(); + jest + .mocked(appContextService.getInternalUserSOClientForSpaceId) + .mockReturnValue(mockedTaggingSo); + jest + .spyOn(obj, 'getInstallationObject') + .mockImplementationOnce(() => Promise.resolve({ attributes: { version: '1.2.0' } } as any)); + jest.spyOn(licenseService, 'hasAtLeast').mockReturnValue(true); + await installPackage({ + spaceId: 'test', + installSource: 'registry', + pkgkey: 'apache-1.3.0', + savedObjectsClient: savedObjectsClientMock.create(), + esClient: {} as ElasticsearchClient, + }); + + expect(appContextService.getInternalUserSOClientForSpaceId).toBeCalledWith('test'); + expect(appContextService.getSavedObjectsTagging().createTagClient).toBeCalledWith( + expect.objectContaining({ + client: mockedTaggingSo, + }) + ); + expect( + appContextService.getSavedObjectsTagging().createInternalAssignmentService + ).toBeCalledWith( + expect.objectContaining({ + client: mockedTaggingSo, + }) + ); + }); }); describe('upload', () => { diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install.ts b/x-pack/plugins/fleet/server/services/epm/packages/install.ts index 33f1b3a6ab73e..72c4500047e83 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install.ts @@ -578,13 +578,16 @@ async function installPackageCommon(options: { .getSavedObjects() .createImporter(savedObjectsClient, { importSizeLimit: 15_000 }); + // Saved object client need to be scopped with the package space for saved object tagging + const savedObjectClientWithSpace = appContextService.getInternalUserSOClientForSpaceId(spaceId); + const savedObjectTagAssignmentService = appContextService .getSavedObjectsTagging() - .createInternalAssignmentService({ client: savedObjectsClient }); + .createInternalAssignmentService({ client: savedObjectClientWithSpace }); const savedObjectTagClient = appContextService .getSavedObjectsTagging() - .createTagClient({ client: savedObjectsClient }); + .createTagClient({ client: savedObjectClientWithSpace }); // try installing the package, if there was an error, call error handler and rethrow // @ts-expect-error status is string instead of InstallResult.status 'installed' | 'already_installed' From ba5be6fc65f8f2d187a7a878b38fe27087895833 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Tue, 2 Jan 2024 08:56:45 -0500 Subject: [PATCH 030/323] [api-docs] 2024-01-01 Daily api_docs build (#174071) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/569 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- api_docs/ai_assistant_management_observability.mdx | 2 +- api_docs/ai_assistant_management_selection.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/apm_data_access.mdx | 2 +- api_docs/asset_manager.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_experiments.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/dataset_quality.mdx | 2 +- api_docs/deprecations_by_api.mdx | 2 +- api_docs/deprecations_by_plugin.mdx | 2 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/elastic_assistant.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_annotation_listing.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_actions_types.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- api_docs/kbn_alerting_api_integration_helpers.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerting_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- api_docs/kbn_analytics_collection_utils.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_common.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_analytics_shippers_gainsight.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_bfetch_error.mdx | 2 +- api_docs/kbn_calculate_auto.mdx | 2 +- api_docs/kbn_calculate_width_from_char_count.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_owners.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- api_docs/kbn_content_management_content_editor.mdx | 2 +- api_docs/kbn_content_management_tabbed_table_list_view.mdx | 2 +- api_docs/kbn_content_management_table_list_view.mdx | 2 +- api_docs/kbn_content_management_table_list_view_common.mdx | 2 +- api_docs/kbn_content_management_table_list_view_table.mdx | 2 +- api_docs/kbn_content_management_utils.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- api_docs/kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- api_docs/kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- api_docs/kbn_core_application_browser_internal.mdx | 2 +- api_docs/kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- api_docs/kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- api_docs/kbn_core_custom_branding_browser_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- api_docs/kbn_core_custom_branding_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- api_docs/kbn_core_deprecations_browser_internal.mdx | 2 +- api_docs/kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- api_docs/kbn_core_deprecations_server_internal.mdx | 2 +- api_docs/kbn_core_deprecations_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_client_server_internal.mdx | 2 +- api_docs/kbn_core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- api_docs/kbn_core_elasticsearch_server_internal.mdx | 2 +- api_docs/kbn_core_elasticsearch_server_mocks.mdx | 2 +- api_docs/kbn_core_environment_server_internal.mdx | 2 +- api_docs/kbn_core_environment_server_mocks.mdx | 2 +- api_docs/kbn_core_execution_context_browser.mdx | 2 +- api_docs/kbn_core_execution_context_browser_internal.mdx | 2 +- api_docs/kbn_core_execution_context_browser_mocks.mdx | 2 +- api_docs/kbn_core_execution_context_common.mdx | 2 +- api_docs/kbn_core_execution_context_server.mdx | 2 +- api_docs/kbn_core_execution_context_server_internal.mdx | 2 +- api_docs/kbn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- api_docs/kbn_core_http_context_server_mocks.mdx | 2 +- api_docs/kbn_core_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- api_docs/kbn_core_http_resources_server_internal.mdx | 2 +- api_docs/kbn_core_http_resources_server_mocks.mdx | 2 +- api_docs/kbn_core_http_router_server_internal.mdx | 2 +- api_docs/kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- api_docs/kbn_core_injected_metadata_browser_mocks.mdx | 2 +- api_docs/kbn_core_integrations_browser_internal.mdx | 2 +- api_docs/kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_collectors_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- api_docs/kbn_core_notifications_browser_internal.mdx | 2 +- api_docs/kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- api_docs/kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_contracts_browser.mdx | 2 +- api_docs/kbn_core_plugins_contracts_server.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- api_docs/kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_api_browser.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_base_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- api_docs/kbn_core_saved_objects_browser_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- .../kbn_core_saved_objects_import_export_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_migration_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- api_docs/kbn_core_saved_objects_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- api_docs/kbn_core_test_helpers_deprecations_getters.mdx | 2 +- api_docs/kbn_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- api_docs/kbn_core_test_helpers_model_versions.mdx | 2 +- api_docs/kbn_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- api_docs/kbn_core_ui_settings_browser_internal.mdx | 2 +- api_docs/kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- api_docs/kbn_core_ui_settings_server_internal.mdx | 2 +- api_docs/kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- api_docs/kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- api_docs/kbn_core_user_settings_server_internal.mdx | 2 +- api_docs/kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_custom_icons.mdx | 2 +- api_docs/kbn_custom_integrations.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_data_service.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_discover_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_agent_utils.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_elastic_assistant_common.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_event_annotation_common.mdx | 2 +- api_docs/kbn_event_annotation_components.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_field_utils.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- api_docs/kbn_ftr_common_functional_services.mdx | 2 +- api_docs/kbn_ftr_common_functional_ui_services.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- api_docs/kbn_language_documentation_popover.mdx | 2 +- api_docs/kbn_lens_embeddable_utils.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_management_cards_navigation.mdx | 2 +- api_docs/kbn_management_settings_application.mdx | 2 +- api_docs/kbn_management_settings_components_field_category.mdx | 2 +- api_docs/kbn_management_settings_components_field_input.mdx | 2 +- api_docs/kbn_management_settings_components_field_row.mdx | 2 +- api_docs/kbn_management_settings_components_form.mdx | 2 +- api_docs/kbn_management_settings_field_definition.mdx | 2 +- api_docs/kbn_management_settings_ids.mdx | 2 +- api_docs/kbn_management_settings_section_registry.mdx | 2 +- api_docs/kbn_management_settings_types.mdx | 2 +- api_docs/kbn_management_settings_utilities.mdx | 2 +- api_docs/kbn_management_storybook_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_category_validator.mdx | 2 +- api_docs/kbn_ml_chi2test.mdx | 2 +- api_docs/kbn_ml_data_frame_analytics_utils.mdx | 2 +- api_docs/kbn_ml_data_grid.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_date_utils.mdx | 2 +- api_docs/kbn_ml_error_utils.mdx | 2 +- api_docs/kbn_ml_in_memory_table.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_kibana_theme.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_ui_actions.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- api_docs/kbn_observability_alerting_test_data.mdx | 2 +- api_docs/kbn_observability_get_padded_alert_time_range_util.mdx | 2 +- api_docs/kbn_openapi_bundler.mdx | 2 +- api_docs/kbn_openapi_generator.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- api_docs/kbn_panel_loader.mdx | 2 +- api_docs/kbn_performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_profiling_utils.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_react_kibana_context_common.mdx | 2 +- api_docs/kbn_react_kibana_context_render.mdx | 2 +- api_docs/kbn_react_kibana_context_root.mdx | 2 +- api_docs/kbn_react_kibana_context_styled.mdx | 2 +- api_docs/kbn_react_kibana_context_theme.mdx | 2 +- api_docs/kbn_react_kibana_mount.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_reporting_common.mdx | 2 +- api_docs/kbn_reporting_export_types_csv.mdx | 2 +- api_docs/kbn_reporting_export_types_csv_common.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf_common.mdx | 2 +- api_docs/kbn_reporting_export_types_png.mdx | 2 +- api_docs/kbn_reporting_export_types_png_common.mdx | 2 +- api_docs/kbn_reporting_mocks_server.mdx | 2 +- api_docs/kbn_reporting_public.mdx | 2 +- api_docs/kbn_reporting_server.mdx | 2 +- api_docs/kbn_resizable_layout.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_router_utils.mdx | 2 +- api_docs/kbn_rrule.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_search_api_panels.mdx | 2 +- api_docs/kbn_search_connectors.mdx | 2 +- api_docs/kbn_search_errors.mdx | 2 +- api_docs/kbn_search_index_documents.mdx | 2 +- api_docs/kbn_search_response_warnings.mdx | 2 +- api_docs/kbn_security_plugin_types_common.mdx | 2 +- api_docs/kbn_security_plugin_types_public.mdx | 2 +- api_docs/kbn_security_plugin_types_server.mdx | 2 +- api_docs/kbn_security_solution_features.mdx | 2 +- api_docs/kbn_security_solution_navigation.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- api_docs/kbn_security_solution_storybook_config.mdx | 2 +- api_docs/kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- api_docs/kbn_securitysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_grouping.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_alerting_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- api_docs/kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_serverless_common_settings.mdx | 2 +- api_docs/kbn_serverless_observability_settings.mdx | 2 +- api_docs/kbn_serverless_project_switcher.mdx | 2 +- api_docs/kbn_serverless_search_settings.mdx | 2 +- api_docs/kbn_serverless_security_settings.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- api_docs/kbn_shared_ux_button_exit_full_screen.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_chrome_navigation.mdx | 2 +- api_docs/kbn_shared_ux_error_boundary.mdx | 2 +- api_docs/kbn_shared_ux_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_analytics_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_template.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_config.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- api_docs/kbn_shared_ux_prompt_no_data_views.mdx | 2 +- api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_text_based_editor.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_triggers_actions_ui_types.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_unified_data_table.mdx | 2 +- api_docs/kbn_unified_doc_viewer.mdx | 2 +- api_docs/kbn_unified_field_list.mdx | 2 +- api_docs/kbn_unsaved_changes_badge.mdx | 2 +- api_docs/kbn_url_state.mdx | 2 +- api_docs/kbn_use_tracked_promise.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kbn_visualization_ui_components.mdx | 2 +- api_docs/kbn_visualization_utils.mdx | 2 +- api_docs/kbn_xstate_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kbn_zod_helpers.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/links.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/log_explorer.mdx | 2 +- api_docs/logs_shared.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/metrics_data_access.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/mock_idp_plugin.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/no_data_page.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/observability_a_i_assistant.mdx | 2 +- api_docs/observability_log_explorer.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/painless_lab.mdx | 2 +- api_docs/plugin_directory.mdx | 2 +- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/profiling_data_access.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/security_solution_ess.mdx | 2 +- api_docs/security_solution_serverless.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/text_based_languages.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_doc_viewer.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/uptime.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 635 files changed, 635 insertions(+), 635 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 3fb689275fa04..44b65cb668c76 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-12-31 +date: 2024-01-01 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 676858ba658ec..472349c4f9a59 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_observability.mdx b/api_docs/ai_assistant_management_observability.mdx index a8a782cf9d77c..c18fb87386cbc 100644 --- a/api_docs/ai_assistant_management_observability.mdx +++ b/api_docs/ai_assistant_management_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementObservability title: "aiAssistantManagementObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementObservability plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementObservability'] --- import aiAssistantManagementObservabilityObj from './ai_assistant_management_observability.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index bb6297359c53e..2ebc63b443a52 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 16d4669399110..2fde10fac8aca 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 6c7c4fd50f476..afa2173382f15 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 26b3b63dedace..1f309bdfa527e 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index ea7ef072eef7c..71239fda07db8 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index 2311fc75255a2..b1eb5f3e63e6d 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-12-31 +date: 2024-01-01 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 2a36b8939631b..084c1b951a320 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-12-31 +date: 2024-01-01 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 9581603f53c5e..34bfde19da4fa 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-12-31 +date: 2024-01-01 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 dad4cd246d613..a4d90fbfdc203 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index cb0aeaa3c4ebf..362a075d64092 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 3f79712490701..8888fe9db27f0 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-12-31 +date: 2024-01-01 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 f59576040c1b5..395ef8190e716 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index e22c5e24b2c35..1be1bf5e2c423 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-12-31 +date: 2024-01-01 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 df6cea1439229..717df98be3a62 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-12-31 +date: 2024-01-01 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 c710e6d1f4672..4cce03a63dbc8 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-12-31 +date: 2024-01-01 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 e624b9b861fde..150c90f8a3214 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-12-31 +date: 2024-01-01 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 709fab05446ff..29052826af95d 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-12-31 +date: 2024-01-01 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 5920a55f1215f..6e31939b25689 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-12-31 +date: 2024-01-01 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 63d3199b48b38..8977ba2fa8cdf 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-12-31 +date: 2024-01-01 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 475511fc503d6..a36eb829931ec 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-12-31 +date: 2024-01-01 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 da1960af3d22b..22f2e1328a343 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-12-31 +date: 2024-01-01 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 5ad41489ae3fe..4c2ea101fff3a 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 6a33621c16c41..6762330ceb80c 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index ccd2faa4e3d6e..066431cf2625c 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 2a4c0b969ea38..58e5d6167fa77 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 7c3186c82925b..d308ab1a8498f 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-12-31 +date: 2024-01-01 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 5e49adc999499..22e56146a7dce 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-12-31 +date: 2024-01-01 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 dd6e9f9154e66..f84ec5456c6a6 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 0e4345567ddbc..bc211ae7176c1 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index bf370afadf45f..eef2c179cc9d2 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index 35a0fcae7fb05..2d597fac62571 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 838810da73b87..ba428c739fbe0 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 9ffd2429a0544..fa51c84a7c066 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 9e14f25e6a0e3..bcc3c1a02350b 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 03100f1831e48..f770028a7d19f 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-12-31 +date: 2024-01-01 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 9d30a0b2061d0..1ffa11617e90f 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-12-31 +date: 2024-01-01 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 9df8bca7e2e56..8336d9b1375c8 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-12-31 +date: 2024-01-01 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 8c6c8b5c286b7..9b84e69f252ee 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index a7e0741db238f..0320c7c89a40f 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 302a9edbf43c6..816ba9a46f3a0 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index abf6015a59d6c..93c9faea9a449 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-12-31 +date: 2024-01-01 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 f015fef6370bb..e4fc2b87763a8 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-12-31 +date: 2024-01-01 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 a24f06b548929..4644e1ffa51d2 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-12-31 +date: 2024-01-01 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 0a9d57807e96b..3d2af60bc443b 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index f0190f790335c..c3daac75a6d7b 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index 5bd542ea722df..674e4aae380dd 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 8317ea91e395e..3b6716a6ee629 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index 647d677a3ddce..60f4261c69795 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-12-31 +date: 2024-01-01 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 ca0f5ae6eb344..e6e3f0c244075 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-12-31 +date: 2024-01-01 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 a63f84387ac85..0e97b905fe45b 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index ef5c30000e455..88b11ec2e350a 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-12-31 +date: 2024-01-01 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 32d1348cbd1fb..639cecdcf137b 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-12-31 +date: 2024-01-01 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 21247901087ca..97cd25e3cfe64 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-12-31 +date: 2024-01-01 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 31fb11037a4d2..d48f81a084099 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-12-31 +date: 2024-01-01 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 6814a0c0a53af..b6ccb60e2c4ca 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-12-31 +date: 2024-01-01 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 f4cfb673e5016..a74787875d28e 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-12-31 +date: 2024-01-01 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 4e66e2c2f4755..0d6a0165c1b6a 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-12-31 +date: 2024-01-01 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 8ce7e4e54383e..e6fb2a0f68e3d 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-12-31 +date: 2024-01-01 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 a7a5b9c34fe87..da475f0e01b8a 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-12-31 +date: 2024-01-01 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 ebec63ea16a16..a8780b75e3486 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-12-31 +date: 2024-01-01 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 f4e943d94b000..a62211163dda4 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-12-31 +date: 2024-01-01 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 e92eb346755be..8561010fb158c 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-12-31 +date: 2024-01-01 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 c6eabedf2eaf6..3e7ebb22a80c2 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-12-31 +date: 2024-01-01 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 68441b2e02b16..197b4b93843f4 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-12-31 +date: 2024-01-01 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 1eab3826b62cc..87e4128d853e1 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index aaf3805d8b3bf..e6ce2650f73df 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-12-31 +date: 2024-01-01 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 163b7727bc956..cfe8d9cdbc281 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-12-31 +date: 2024-01-01 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 ff2b20d47aa5b..3950fbb4c20ef 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-12-31 +date: 2024-01-01 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 b5bd56dad4dea..2148851edac90 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-12-31 +date: 2024-01-01 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 8d2348ef5689b..30717f38627b7 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-12-31 +date: 2024-01-01 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 edee74918ad26..c9074ad9b0ee6 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-12-31 +date: 2024-01-01 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 d425c2b266e3e..f5f63aac9382a 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-12-31 +date: 2024-01-01 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 3340134603c43..154c43dd3fd69 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-12-31 +date: 2024-01-01 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 eaadf325959a5..8e09ef2331adc 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-12-31 +date: 2024-01-01 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 ee41b51e26f92..0f6942c037620 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-12-31 +date: 2024-01-01 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 8d831921b8d65..5b2c265a101b6 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-12-31 +date: 2024-01-01 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 5f98be94a6f37..8f2615ea4e192 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-12-31 +date: 2024-01-01 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 ced29652106e5..fb54835384cba 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index 96eebc7347bde..b660b44ed5337 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 8859781c6c4c8..fa51a2cd3e6a0 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index b3965f257ce74..612f62b6e66ea 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index d34f7f92df4e5..c978d826e174f 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 1e865cc127322..4a20e9fbbbe33 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index e674866293df7..bcb6801834f13 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index cb4c01d5156e8..761ae51ec5267 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-12-31 +date: 2024-01-01 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 b17cab8f88748..15e34bcf13e8d 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-12-31 +date: 2024-01-01 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 141a293e9f484..fd172ef0a5eaa 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index bb0cc457465f8..7be989318dbc9 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index 79c1d37738489..9ed60d111e587 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index 709b156296e72..a6bb58bcffd9a 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-12-31 +date: 2024-01-01 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 a7be91b7ffc02..2531829d684e8 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-12-31 +date: 2024-01-01 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 fbd620d0fa93c..3cd02ec3d19c9 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-12-31 +date: 2024-01-01 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 97f4f6a861ece..e63eebc283895 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-12-31 +date: 2024-01-01 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 80f206ecd2e20..5ce05a3aeb655 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-12-31 +date: 2024-01-01 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 f8a962b6e4797..f2a9413fe1de6 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-12-31 +date: 2024-01-01 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 94631df9956cd..c1bbdec645d95 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-12-31 +date: 2024-01-01 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 e06ddc87b001b..55698a3afd1a7 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-12-31 +date: 2024-01-01 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 57149cae5a118..58f5c55233bc3 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-12-31 +date: 2024-01-01 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 bea15b7b5f874..98579281269a5 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_bfetch_error.mdx b/api_docs/kbn_bfetch_error.mdx index e7d5e15f5e7ad..1e30c0fa5012c 100644 --- a/api_docs/kbn_bfetch_error.mdx +++ b/api_docs/kbn_bfetch_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-bfetch-error title: "@kbn/bfetch-error" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/bfetch-error plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bfetch-error'] --- import kbnBfetchErrorObj from './kbn_bfetch_error.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index 7b3746b9d4a69..5869871313098 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index 35ce3f3a89e64..158376a9b8fcb 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index ee9472b06d220..96e999aa4e140 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-12-31 +date: 2024-01-01 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 72e2aac31438f..0e59be34fffa8 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-12-31 +date: 2024-01-01 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 5ab3dbf775494..ad267fce50788 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-12-31 +date: 2024-01-01 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 6867aa6b785a7..08d9e4fd83b08 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-12-31 +date: 2024-01-01 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 e9fe001510d49..7a9ac1653151e 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-12-31 +date: 2024-01-01 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 9d1b3678d526f..6b094e0e454ff 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-12-31 +date: 2024-01-01 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 2cceb6667a9f6..fb2a0477fd6ba 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-12-31 +date: 2024-01-01 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 0790ce7b84735..85c419833e342 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-12-31 +date: 2024-01-01 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 f05934a289723..b41d5b251b917 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index 63c020a025fb0..013cf12485d41 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 0a403233f18e0..0c637a259bbf4 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-12-31 +date: 2024-01-01 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 331123fc1dd62..c5854b5f996a6 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-12-31 +date: 2024-01-01 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 8d77ce3b32553..9c21a33499c1e 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-12-31 +date: 2024-01-01 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 a0219f0e7d840..a81742386804b 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-12-31 +date: 2024-01-01 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 25391fff77afd..b03f8a33c81e1 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-12-31 +date: 2024-01-01 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 b6599e79bc790..b152fbdd7f585 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-12-31 +date: 2024-01-01 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 5b7f32f8e2d93..2e20854e22426 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index 238808d81df15..b107dc4f91365 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index d914ce2978e55..3052b6e44d471 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index f7db2d5ed6f96..dd9fa0f403c58 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 73f2aeff03fc1..8b6694a164ec6 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-12-31 +date: 2024-01-01 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 f0cd6235f7d38..805d4c9e1942a 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-12-31 +date: 2024-01-01 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 6a47e4e93c78a..af1287e0c85d2 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-12-31 +date: 2024-01-01 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 2e560081f0ccd..992d440a6c59b 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-12-31 +date: 2024-01-01 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 9ee92bf88207a..c6a4487152e32 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-12-31 +date: 2024-01-01 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 26010e3625472..01f19ee413d71 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-12-31 +date: 2024-01-01 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 63c36ccbfe3d9..9bf7b8ded9833 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-12-31 +date: 2024-01-01 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 35739fd3a3963..7a6a941469f21 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-12-31 +date: 2024-01-01 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 e90d2a1ed43ba..a06a08aba07aa 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-12-31 +date: 2024-01-01 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 abd67e25bea6a..3a6cea726b0eb 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-12-31 +date: 2024-01-01 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 e25025f5855b5..3cb39454e881a 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-12-31 +date: 2024-01-01 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 e91dfa709d9cf..ea29a4e613180 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-12-31 +date: 2024-01-01 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 3df7d565fb1b0..a0e33c2c0eea9 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-12-31 +date: 2024-01-01 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 784bdc851f2e7..8ce5e026a6b91 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-12-31 +date: 2024-01-01 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 9bc9678a345b3..600561abc4bed 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-12-31 +date: 2024-01-01 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 15d9a8aeb47e0..d900211c183ef 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-12-31 +date: 2024-01-01 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 edce609ec5ea9..e0d48682bbc79 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-12-31 +date: 2024-01-01 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 61e1d0e5320d8..2fb1534e72ffc 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-12-31 +date: 2024-01-01 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 dc7aefb652d52..3f011fd2f8701 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-12-31 +date: 2024-01-01 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 7c5f3f0c131c8..ea8dec5dae69b 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-12-31 +date: 2024-01-01 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 327305d2c02eb..811f706b309fe 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-12-31 +date: 2024-01-01 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 426200129b4d7..b0ba3decac8d2 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-12-31 +date: 2024-01-01 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 6c2b8812db7c6..e965523a89479 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-12-31 +date: 2024-01-01 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 2ea544468fe79..00dcb486c38fb 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-12-31 +date: 2024-01-01 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 fe7a8ec558e01..f1c78abadafd6 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-12-31 +date: 2024-01-01 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 23bedae6fcb8e..679617c8875a1 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-12-31 +date: 2024-01-01 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 7dca3ddd451a1..8c57a8a4111b9 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-12-31 +date: 2024-01-01 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 38b14d1289526..e91ccf58c1354 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-12-31 +date: 2024-01-01 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 4b7a5625e2256..64b91a9ab767e 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-12-31 +date: 2024-01-01 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 70c1bb4a2787e..4e430e6cdc8ef 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-12-31 +date: 2024-01-01 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 cfec83b1297a1..3a73499e187c8 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-12-31 +date: 2024-01-01 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 7138c6c853dce..948c657a21b87 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-12-31 +date: 2024-01-01 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 d8013f72b5d42..8f6202422b145 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-12-31 +date: 2024-01-01 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 a245645c4b047..fff0345b18e9a 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-12-31 +date: 2024-01-01 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 97e4d8be6523b..ebb10427b37b2 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-12-31 +date: 2024-01-01 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 e36e5dffee291..eb3122e46918b 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-12-31 +date: 2024-01-01 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 1796ad5c323bd..3d6742171b38b 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-12-31 +date: 2024-01-01 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 7a9e9bb2ae3e8..54149659a4490 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-12-31 +date: 2024-01-01 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 9870b0c63b9dc..bad65e24b6002 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-12-31 +date: 2024-01-01 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 7c7d94ca84086..9cea11d81f1f5 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-12-31 +date: 2024-01-01 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 55d6f532b039c..a60addb4ccd0b 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-12-31 +date: 2024-01-01 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 e96b36b07c547..b508e12255b0f 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-12-31 +date: 2024-01-01 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 a001c81d68889..b738d2413905a 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-12-31 +date: 2024-01-01 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 d3c13fbec1c34..b3badc09ee497 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-12-31 +date: 2024-01-01 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 2c46cdb602999..9bd457faea556 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-12-31 +date: 2024-01-01 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 3f7ef3574a0fa..a6038899821c7 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-12-31 +date: 2024-01-01 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 e6f01b3b1a0bb..a59c2744497d9 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-12-31 +date: 2024-01-01 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 d730121eb0521..947d971357967 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-12-31 +date: 2024-01-01 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 1dab775012cb6..2c176a254d164 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-12-31 +date: 2024-01-01 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 a6d8159100789..56831c7d1ea60 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-12-31 +date: 2024-01-01 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 fa18cbe797e64..12302969dab51 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-12-31 +date: 2024-01-01 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 f1bc1c8e5647b..e706cde3f46df 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-12-31 +date: 2024-01-01 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 14dfe853febe1..cfae66dcb2b87 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-12-31 +date: 2024-01-01 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 66d423b3523df..45a35f0c50587 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-12-31 +date: 2024-01-01 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 396957631e1a8..feeed2ac86faf 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-12-31 +date: 2024-01-01 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 3d02a9a5754c4..909b22635ffc6 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-12-31 +date: 2024-01-01 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 744768a8132bf..e3e7684635901 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-12-31 +date: 2024-01-01 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 1005c74743258..d41c16370f0c0 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-12-31 +date: 2024-01-01 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 2cd13f446aeff..9ff3dd564692b 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-12-31 +date: 2024-01-01 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 7d74f34616628..ec944e81fed31 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-12-31 +date: 2024-01-01 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 8fb25bdca9be7..a50d4c2fedb62 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-12-31 +date: 2024-01-01 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 baf0087a312d4..9c66d4e036464 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-12-31 +date: 2024-01-01 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 7d55b80b96b7a..23d4778cef4fd 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-12-31 +date: 2024-01-01 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 8ffbac6acbb75..f1561231834d9 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-12-31 +date: 2024-01-01 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 086a66ef28ab0..1eba5cd513260 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-12-31 +date: 2024-01-01 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 15fb36136ee4c..9aa3e7a01819e 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-12-31 +date: 2024-01-01 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 74e931c727ff6..329bfea9fac5a 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-12-31 +date: 2024-01-01 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 2f7d723dcc18a..0f2987ebb7cef 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-12-31 +date: 2024-01-01 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 424d723c97a5e..3687cf6f13a5a 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 0e4184d908b09..2790467d69261 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-12-31 +date: 2024-01-01 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 0fe50689700ea..9a9986f0db800 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-12-31 +date: 2024-01-01 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 d8cdebe37ec09..e28cb5856925d 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-12-31 +date: 2024-01-01 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 c848e5d320538..f120048a7e696 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-12-31 +date: 2024-01-01 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 6138910864391..2812dc24c4285 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-12-31 +date: 2024-01-01 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 ea14f6b51c59b..1eb7627f23d83 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-12-31 +date: 2024-01-01 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 6871d1b6cef6d..271fb4abadca8 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-12-31 +date: 2024-01-01 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 dc2c163dcde23..0a22339645ca6 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-12-31 +date: 2024-01-01 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 daf8160be61dd..843218f78739d 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-12-31 +date: 2024-01-01 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 8a657ed63cfeb..02b9fa9f92196 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-12-31 +date: 2024-01-01 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 37f9c175339de..037c877a8dbf6 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-12-31 +date: 2024-01-01 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 87e2d916acc7e..49b43760eeebe 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-12-31 +date: 2024-01-01 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 62afc19629df1..d653062853d94 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-12-31 +date: 2024-01-01 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 47c41b507cf3b..3830d6898fd08 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-12-31 +date: 2024-01-01 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 a5953176aa0ff..ecd44a4af9ccc 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-12-31 +date: 2024-01-01 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 34402ae7088fc..2e566559d55dd 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-12-31 +date: 2024-01-01 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 b798b84ce86f4..949a047e27222 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-12-31 +date: 2024-01-01 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 e13bf181ed255..0ba04d345d2d0 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-12-31 +date: 2024-01-01 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 3cdb799d5ccc3..94c6c2d86b07e 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-12-31 +date: 2024-01-01 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 4dc0d4422edd4..3053766769e11 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-12-31 +date: 2024-01-01 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 92581cc5f7880..3d333a33cf2c6 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-12-31 +date: 2024-01-01 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 e8f6345b66bdb..819eb77827f98 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-12-31 +date: 2024-01-01 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 e5b2de979d4b9..51b19e37d8187 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-12-31 +date: 2024-01-01 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 f1d58397a23cd..a5c7ccbaeeca6 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-12-31 +date: 2024-01-01 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 d3a252f7bab65..db7bf46e7943f 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-12-31 +date: 2024-01-01 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 c12696f6109fb..f531889fede95 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-12-31 +date: 2024-01-01 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 9b18de965acd0..272cff8b8badd 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-12-31 +date: 2024-01-01 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 67c1f1ed40b62..6252c77642040 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-12-31 +date: 2024-01-01 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 da4560a3af3d3..2f7a72e0bea4c 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-12-31 +date: 2024-01-01 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 b1261b7676ae9..de81ffacfcdd9 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-12-31 +date: 2024-01-01 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 1d1962422fcbe..5ab833fd70d58 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-12-31 +date: 2024-01-01 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 2eb971b8a35a0..ba8fbc280a184 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-12-31 +date: 2024-01-01 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 d57d220d58b7d..3ce23e9f0a992 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-12-31 +date: 2024-01-01 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 746dfa4079ba2..189bbd4d4e0bf 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-12-31 +date: 2024-01-01 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 4f7f7fe6ca709..1ebe241cf24f7 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-12-31 +date: 2024-01-01 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 59f240e7ff94d..0f2c6129a03b4 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-12-31 +date: 2024-01-01 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 799e00eaefd59..ebbc5b4cea39f 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index 49d77ccc16239..e7a10e55cb7f6 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index c256e9acdf8d9..5299e5ca2d6b4 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index a0a52e9696fa6..fe3eb1b7688b8 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-12-31 +date: 2024-01-01 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 638eba6e03388..e8362fa88f024 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-12-31 +date: 2024-01-01 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 4b78a61d3db30..a35abb6270c8f 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-12-31 +date: 2024-01-01 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 2510b53345b28..762478a59dd2e 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-12-31 +date: 2024-01-01 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 6e9d373e68894..c601f9091211f 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-12-31 +date: 2024-01-01 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 27bba0efa3392..8e877f9e78323 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-12-31 +date: 2024-01-01 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 d6c7eb26e32d7..cb33a6af19622 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-12-31 +date: 2024-01-01 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 2ea6e9b73b67b..27fa2b4117bde 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-12-31 +date: 2024-01-01 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 923cab96690f7..02e9c4c13483d 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-12-31 +date: 2024-01-01 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 fc859cbe18a80..0d7a137e41b30 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-12-31 +date: 2024-01-01 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 6452ae200b150..2b2f0b6923221 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-12-31 +date: 2024-01-01 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 56a6acb0e2c33..a617256e44cbd 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-12-31 +date: 2024-01-01 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 2d75552384dea..405f55f3c4b41 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-12-31 +date: 2024-01-01 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 5a6cc51228b91..64c5653f0049a 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-12-31 +date: 2024-01-01 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 930df7339e9cf..aca59f31bd792 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-12-31 +date: 2024-01-01 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 e2ac7ea3e7349..4a2ab8be7a94b 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-12-31 +date: 2024-01-01 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 b40d75d87d207..6c207516b46b9 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-12-31 +date: 2024-01-01 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 d77a52859c824..6bff12ec4ec1b 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-12-31 +date: 2024-01-01 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 211619def808e..758b39cdcad3c 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-12-31 +date: 2024-01-01 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 0a6dc9af8546e..01b01d07fbbf1 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-12-31 +date: 2024-01-01 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 249a874d58430..781f3d76e77ae 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-12-31 +date: 2024-01-01 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 a0e77c33a8fd0..4cf6f6f54563f 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-12-31 +date: 2024-01-01 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 9be0d70a010dd..7cc51e6fbd7ac 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-12-31 +date: 2024-01-01 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 96ffa8b824ff3..454783316e21e 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-12-31 +date: 2024-01-01 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 bae44f0e1e31d..1f398d87f34ed 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-12-31 +date: 2024-01-01 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 7b9a7926579a1..1244e9bbb8145 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-12-31 +date: 2024-01-01 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 e03f3f7acf923..aede031cffd6f 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-12-31 +date: 2024-01-01 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 5ec0c1348c685..3581062458ca8 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-12-31 +date: 2024-01-01 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 fa7143413101e..9e609dc42abcb 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-12-31 +date: 2024-01-01 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 d2e6c46390b7a..93198919c8118 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-12-31 +date: 2024-01-01 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 20a2f6e7013d0..7d0eae5d8342a 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-12-31 +date: 2024-01-01 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 ea30aaa79bc67..2b4fcaec1eaa0 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-12-31 +date: 2024-01-01 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 aece1e532e9f2..76024ad5fd23f 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index dc8cbf344305f..0a4c4a1496816 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index 2d4fe18b58b46..b1f21cd183406 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-12-31 +date: 2024-01-01 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 a719e08fa89f8..88ca4fe6ad03c 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-12-31 +date: 2024-01-01 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 a410f9ab23fba..e799edd5c68bf 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-12-31 +date: 2024-01-01 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 91092dfd05c4a..85c2c01f71cd6 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-12-31 +date: 2024-01-01 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 b121770a261eb..c591e6e51ebb7 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-12-31 +date: 2024-01-01 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 0c254f376480a..747a395d83853 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-12-31 +date: 2024-01-01 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 cd4f3c9b6114a..820ff0affbd64 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-12-31 +date: 2024-01-01 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 e862aa83a93bd..08c7696f3fad8 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-12-31 +date: 2024-01-01 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 b45f863a85d96..73e02769b4e6f 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-12-31 +date: 2024-01-01 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 f8e197348bcf2..fcf816541262b 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-12-31 +date: 2024-01-01 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 28a8c15ff9593..6379b6c599abc 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-12-31 +date: 2024-01-01 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 2b83022344566..7018b7c161b77 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-12-31 +date: 2024-01-01 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 147d5d17ed258..e92d1987996b4 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-12-31 +date: 2024-01-01 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 66fc78135fcef..44f31919a5d14 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-12-31 +date: 2024-01-01 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 c8ba674d14cf8..157266794301a 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-12-31 +date: 2024-01-01 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 da524300470b8..035ec69e2a859 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-12-31 +date: 2024-01-01 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 4e0df183d6708..48f97ca9cf8e3 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-12-31 +date: 2024-01-01 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 bbcdc11398079..9946ed6f34fab 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-12-31 +date: 2024-01-01 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 75d9483a083b1..aa05f42f6b6e2 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index b043c54c82dd8..2944c204d946b 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index 307796e913b5f..6565e053e9a31 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index b80627c6f05fb..de8fcd2d63828 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-12-31 +date: 2024-01-01 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 7656052466eb2..98f9811440f32 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-12-31 +date: 2024-01-01 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 4e3cf4ae189ef..6ef1917fa64d9 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-12-31 +date: 2024-01-01 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 be2b1eca95b78..90d83c39f09ff 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-12-31 +date: 2024-01-01 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 89127e5ace494..f3d7b374529d4 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-12-31 +date: 2024-01-01 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 ad00b1089fa50..a53370a44ad2c 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-12-31 +date: 2024-01-01 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 b4354397b3b55..15f05b42a5dbd 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-12-31 +date: 2024-01-01 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 963096d3ec043..fdc55b13c69cd 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-12-31 +date: 2024-01-01 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 41c3d53e710ba..5b7084265ac60 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-12-31 +date: 2024-01-01 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 36e1947bf6ea0..e3e588d1043bc 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-12-31 +date: 2024-01-01 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 d998ab8f2c0f8..8555f9a284db9 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-12-31 +date: 2024-01-01 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 15a47eff78852..ccafea1ecad34 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-12-31 +date: 2024-01-01 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 eb8711a812ff3..870e8ee3730fc 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-12-31 +date: 2024-01-01 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 50c0bfc55b1d8..656985e52d604 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-12-31 +date: 2024-01-01 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 74edfb844973f..fcbdbde8ac630 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-12-31 +date: 2024-01-01 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 ab9c1b947600d..16b0006fb2c03 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-12-31 +date: 2024-01-01 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 4ee06f69107be..c8dffa2a9c7ac 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-12-31 +date: 2024-01-01 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 10d378fd78367..3c19fae877f6b 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 088614b9c7721..d6b0f3c7b0e4c 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-12-31 +date: 2024-01-01 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 5b19f7b9483f9..b22cc7425835f 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-12-31 +date: 2024-01-01 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 013bd45bef523..c96f5e3b9fa63 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-12-31 +date: 2024-01-01 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 2ed9d16af9a2f..aa800cf05544b 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-12-31 +date: 2024-01-01 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 5562e72971965..91955ee6c54ff 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-12-31 +date: 2024-01-01 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 f2e7b4d26f402..f95a17a41c9c1 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index 5283fe75b0336..e839209b2f1c2 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index 21af5bc4d85b3..aae03296cbe0f 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index c154d832bb64a..741a4b48cf914 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index b261198445370..8121559a36ad8 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-12-31 +date: 2024-01-01 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 dad68409561a3..6933203917c69 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-12-31 +date: 2024-01-01 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 4db73e7b163e9..f5335698d5dd1 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-12-31 +date: 2024-01-01 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 a00eb32c31478..b97c2a94e1d07 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-12-31 +date: 2024-01-01 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 f076852abc3ba..6a6743af05cf0 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-12-31 +date: 2024-01-01 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 f60f668b9396e..2b672d25e0e59 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-12-31 +date: 2024-01-01 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 798c2de6be5f9..fd9ed09154dfe 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index 9ca6aaf5dbdeb..48f57edfe89e6 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-12-31 +date: 2024-01-01 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 92b1bc95c3477..ad64f8baf9923 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-12-31 +date: 2024-01-01 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 51d32f9b1358c..a9e21037dec1e 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index 8a637315273f8..0942b98a495b7 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 16f413de4933d..175dfe1ebc141 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-12-31 +date: 2024-01-01 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 0f7b9a6899ec3..b594fb3876f24 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index f0074000c06f0..5e1681c809e74 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index c34956861df84..23a570ae5fc50 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-12-31 +date: 2024-01-01 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 7cca7b975f186..a2a9255f63b61 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-12-31 +date: 2024-01-01 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 a9c9abae16451..0beca06471adf 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index e085c9c08eb37..bbd2dbb8fb4e0 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-12-31 +date: 2024-01-01 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 d135dece6e7e8..c4b4e495150f0 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-12-31 +date: 2024-01-01 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 85c3fcf804311..554fac4945834 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-12-31 +date: 2024-01-01 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 049a2abd037f5..14891fd65cc99 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-12-31 +date: 2024-01-01 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 2f90e5433c14a..a15eb1c9c19af 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-12-31 +date: 2024-01-01 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 9e335b09b91f2..c3aaeb0c7c232 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-12-31 +date: 2024-01-01 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 cf3fd1c88ec21..f55200cbf297a 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-12-31 +date: 2024-01-01 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 e6bfeb8bba4de..0a898c5df8469 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-12-31 +date: 2024-01-01 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 aaf1647bb6dc8..789d29fc5260d 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-12-31 +date: 2024-01-01 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 c6b1e35fbcc13..1bff5a0976255 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-12-31 +date: 2024-01-01 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 7ecbd52c8622c..d50fc41bc8664 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index bd662dcd764bf..2b77d02c72e4a 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-12-31 +date: 2024-01-01 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 0005b97f5b96e..624b16fd3f2f7 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-12-31 +date: 2024-01-01 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 734bbf055ffc8..84064718b60f6 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-12-31 +date: 2024-01-01 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 dcf8aed9c1bdf..fcfa868c2d98a 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-12-31 +date: 2024-01-01 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 7e84b8ea19b8b..063d5d621fc1f 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-12-31 +date: 2024-01-01 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 07d59187ef7ca..a160ba27a8e44 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index ffcf97e36aeca..3a6198b990c6c 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 2e307587bc5d2..32fe1ee31987e 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-12-31 +date: 2024-01-01 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 d2a66e2695fda..3f61dc8857aeb 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-12-31 +date: 2024-01-01 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 bd1a6627f8570..b8519b0909ecf 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-12-31 +date: 2024-01-01 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 ca871c9965442..da8a8065677f9 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index 6c0c1faf66978..32546ca5207a6 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index b2b784f48af4f..499fcb7e84368 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index a8b1d7331ec3e..1eef70eddca61 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index 307e65633da3b..1f0e87e87ac7c 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index 8a103637a3687..706429be40425 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index 63c3099e87288..837b35088c22e 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index 235aa650f0872..c2c8c413b6796 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index 4a3c7ba9f28b0..79a48d36b6035 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index d890d209d09d6..0f475e177f170 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index 65e0bb2400ad3..7b6f435617d14 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 02df389aecfc1..28487cd2a204e 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-12-31 +date: 2024-01-01 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 6b654b56188f0..402e829e6d3d7 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-12-31 +date: 2024-01-01 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 9975c8e751bee..cd0eea70c9cdf 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-12-31 +date: 2024-01-01 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 67d30151d579f..6de928ecd51b7 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-12-31 +date: 2024-01-01 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 90731aabf4379..25d2ae5807110 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-12-31 +date: 2024-01-01 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 6f6514b43facf..89179f67cfd3a 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index ed3ed00125700..c2101e2f4ce96 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index d29a14307d81a..4db0931c22213 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-12-31 +date: 2024-01-01 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 3d89190e1f4c5..b670629bce316 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-12-31 +date: 2024-01-01 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 09999772e1c6a..a34fa49e47339 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-12-31 +date: 2024-01-01 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 057119df3d55a..7122965db66bb 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-12-31 +date: 2024-01-01 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 964bbeda41b29..6b137690849e3 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-12-31 +date: 2024-01-01 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 b5a0d33820fb1..f1e920eebeb2e 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-12-31 +date: 2024-01-01 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 2c2ea85fd3688..fae9d0ad7be75 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-12-31 +date: 2024-01-01 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 fa67b240c412c..869da83ee85f0 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-12-31 +date: 2024-01-01 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 562c73d8bcc46..f40e314c5aed6 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-12-31 +date: 2024-01-01 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 94d1efb9a8629..45621de54aca7 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-12-31 +date: 2024-01-01 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 59bdb5b558a11..13b5065a9da73 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-12-31 +date: 2024-01-01 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 83fc84cf0155a..cf25a68130b0a 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-12-31 +date: 2024-01-01 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 7ca12b75f2365..1e9dca2fb2929 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-12-31 +date: 2024-01-01 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 50226ab3c6c26..eb1ecc45b59b9 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-12-31 +date: 2024-01-01 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 355a1e8e1bbbf..dbde62fbb4137 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-12-31 +date: 2024-01-01 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 fd9948b411517..aae2e673f6868 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-12-31 +date: 2024-01-01 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 106e33d230f97..875671f5d414b 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-12-31 +date: 2024-01-01 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 5ec7817913944..7940032accf8f 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_ui_actions.mdx b/api_docs/kbn_ml_ui_actions.mdx index 34da105020061..7eadea35a6de2 100644 --- a/api_docs/kbn_ml_ui_actions.mdx +++ b/api_docs/kbn_ml_ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-ui-actions title: "@kbn/ml-ui-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-ui-actions plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-ui-actions'] --- import kbnMlUiActionsObj from './kbn_ml_ui_actions.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 1a781646a1390..fb10efa82ae06 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-12-31 +date: 2024-01-01 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 6e7196612c5ff..47a477c473ac6 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-12-31 +date: 2024-01-01 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 106cbca21f571..409bf2e4ae1db 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-12-31 +date: 2024-01-01 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 80d088fd4dbd4..58b7f3c2c1c9e 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index b61f9378b481a..3e09ddb704e51 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index dc07f138d5232..6b28ee40ee2fb 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index 3d70afae3ec41..d5619a26858d8 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index 4ddb5f1383143..a200c5b173da3 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index ebbe86e9e7dd4..2e6e93d6dad89 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-12-31 +date: 2024-01-01 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 7ba6233a4fa4f..37637f8397751 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-12-31 +date: 2024-01-01 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 8d232ecf2155b..c57932356ca91 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index eb729f5c65e38..eee11572cc058 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 5decfb0ea9646..a30ebbcf79290 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-12-31 +date: 2024-01-01 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 27226cb2e9c21..1ebb1c2db54c3 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-12-31 +date: 2024-01-01 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 719b481360d41..316403aff2048 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index 2b57a3b0fa680..f774d63a68192 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 05953fa3e8ce7..e2c918a5963ce 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-12-31 +date: 2024-01-01 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 00b7542a58517..9007f6f0b7994 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-12-31 +date: 2024-01-01 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 250eff3e0ee46..678bb87e8ce48 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-12-31 +date: 2024-01-01 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 b229d12b73481..90184d8520453 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-12-31 +date: 2024-01-01 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 819446e7b5425..25e6d94702b0b 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-12-31 +date: 2024-01-01 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 b4e8950b86b95..86eaae57f5826 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-12-31 +date: 2024-01-01 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 ef33067cc59e4..fe37effde7ffb 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-12-31 +date: 2024-01-01 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 22666c5f1d41e..9dfaac2ff575d 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-12-31 +date: 2024-01-01 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 b4c575099b53e..78fb4718ab7cb 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-12-31 +date: 2024-01-01 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 65b5731d28f37..7f4375052f1fc 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-12-31 +date: 2024-01-01 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 3bf7298a8684d..b61872381e027 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-12-31 +date: 2024-01-01 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 c04d216248d5c..d6daaeea1fc9e 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-12-31 +date: 2024-01-01 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 e356469317e99..08c077993a8c8 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index ffa411c59062a..c7a9373efa835 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index dc99786de452a..5b77cd044315a 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index 2f8a1abd2b5dc..e49748ab7d480 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index afa06009f2599..4c81401857143 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index 5fbca796b70ac..a1ed1c82d8f38 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index 0b8a36b34d3bd..5bc8c3a6f9d19 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index fca161b54171a..0d73857851066 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index 31b5b6dd56934..a9353c4364431 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index 24b4f956b5bc5..7bb6f635cfa82 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index f58daf99c47f8..0212d187da5d2 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 377b74564177c..4b36bf4ae7fec 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index 17a66293747e9..fba7aa0776fcc 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index 40cbf2b41c92f..e534d6721bf48 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-12-31 +date: 2024-01-01 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 af67329fb635b..20d5d677d797c 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-12-31 +date: 2024-01-01 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 3b3ad174f262b..cadcd2c01c032 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index 2d785a03c45a1..3a6716c8f89bd 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index 3bf5c2d5cbd13..e331bfcc146d0 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index 43144e46dbfab..cbad19a32bd08 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index ce78512a85875..cb36507e728a2 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index 49c0098dedcc9..acd2b4668e57e 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index 8c6bdab985545..146143e3abc67 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index 6a72b849d70bd..92be158c8ed66 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index 4d6c687f15740..8f4a343d15e0e 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index b7319f2c5433e..ba17c0b7fb0d5 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index 9b5946dbd3960..2fb7e33a3d1c4 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-12-31 +date: 2024-01-01 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 a3ac02e2f90fa..9b79f0f495e9b 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-12-31 +date: 2024-01-01 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 b4f948454518f..16a0070da3d17 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-12-31 +date: 2024-01-01 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 1732335b50e50..702f7e49ab9e6 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-12-31 +date: 2024-01-01 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 e859a8e424ae3..ddb3f6af677fc 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-12-31 +date: 2024-01-01 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 083054eb5d56b..2586dc668d281 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-12-31 +date: 2024-01-01 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 f72986dd2988e..756ccbe7ac440 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-12-31 +date: 2024-01-01 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 8a5f4c6c5a0e4..e0636c073fe34 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-12-31 +date: 2024-01-01 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 183a5aa4e70e8..c827ff4a287b4 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-12-31 +date: 2024-01-01 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 97967d486f74a..96ed681103f96 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-12-31 +date: 2024-01-01 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 f74f3d410f75e..1571464b123b7 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-12-31 +date: 2024-01-01 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 c585b9322c38a..8cf777d7132e0 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-12-31 +date: 2024-01-01 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 6c5519ac168a4..2ed210ab50e64 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-12-31 +date: 2024-01-01 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 3bbe94c4819a2..46155a116a716 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-12-31 +date: 2024-01-01 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 4cdab21247149..5441f8cddad1c 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-12-31 +date: 2024-01-01 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 25654b8f226f6..bd49031642499 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-12-31 +date: 2024-01-01 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 7be0d64c58e10..4fa2196960bde 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-12-31 +date: 2024-01-01 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 39f8cdd3906cd..0f614724b67d2 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-12-31 +date: 2024-01-01 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 33f79f364ea53..df700c51f22c7 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-12-31 +date: 2024-01-01 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 ce94b2ca83c7a..4ef2968fb3b48 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-12-31 +date: 2024-01-01 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 07c966bff6e04..4cfac7f0ec84f 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-12-31 +date: 2024-01-01 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 9e3a42234d8f9..5dc2f1150b5ff 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-12-31 +date: 2024-01-01 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 b9d460954fe7e..6540577807077 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index c7bd56e2670d7..172df4268cc08 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index 29612b5ff8950..b1250190dc368 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index 0b8131ee3a598..26782e3ffc8e9 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index 7752ab874d8ce..f6c8be0080f29 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index 2abf38061ac8f..5f72155243ec1 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index 1ac633e6b420f..8fedfb31d9a83 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-12-31 +date: 2024-01-01 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 7e5b2ccd5ecff..9b66c554abf42 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-12-31 +date: 2024-01-01 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 82325e55a6239..06701a75c24c2 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index fa18a9a584a16..fd3bd8cf1e895 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index 77ab3ed44d6af..8d54cfc2c5830 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-12-31 +date: 2024-01-01 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 2f5dd3bd34d7e..b628c03314948 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-12-31 +date: 2024-01-01 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 80e4332f80ed3..3ccafda48012f 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-12-31 +date: 2024-01-01 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 e0891af4636e1..051102a25a89a 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index de4cc308617a1..5a72143571bb4 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index 84849ac720183..58a1e9b966ea3 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-12-31 +date: 2024-01-01 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 31f8207ca4472..81df33298ab19 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-12-31 +date: 2024-01-01 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 dc869555f72fa..32c668f1e8311 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-12-31 +date: 2024-01-01 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 f79d06b1c0395..a704d0553268a 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-12-31 +date: 2024-01-01 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 905a440d5cdcc..b00d460aa2f93 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-12-31 +date: 2024-01-01 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 bfc6ec5596d77..95dd77ccc3e75 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-12-31 +date: 2024-01-01 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 3faf60d4ce8dd..f81c642ce5f4b 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-12-31 +date: 2024-01-01 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 0c1e1105beb51..a8a220f0e18eb 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-12-31 +date: 2024-01-01 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 2cb6c290d427a..a7296a8e5ce91 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-12-31 +date: 2024-01-01 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 f2318c0a4d8be..3bb92a066b121 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-12-31 +date: 2024-01-01 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 72b09b83eeea5..5a1f923895120 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-12-31 +date: 2024-01-01 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 14404512e25a5..b59badf167bdb 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-12-31 +date: 2024-01-01 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 9f58a56d33e5b..1932e19bcd02e 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-12-31 +date: 2024-01-01 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 dc67c0477b908..9108f448b60aa 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-12-31 +date: 2024-01-01 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 7e93274d0096f..04cef2640b6c5 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-12-31 +date: 2024-01-01 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 458d8a603c6c8..d1bc6cb4e9a6b 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-12-31 +date: 2024-01-01 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 19ca607f3c40b..260d94e94a1f0 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-12-31 +date: 2024-01-01 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 1ef1cafdf18e3..727a975aed3d7 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-12-31 +date: 2024-01-01 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 2206781190dd6..24e261383654c 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-12-31 +date: 2024-01-01 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 72b3ba864428a..d7590f26e83ee 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-12-31 +date: 2024-01-01 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 aaaaaa13c11ce..a8d6c9298dc41 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-12-31 +date: 2024-01-01 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 2f0e8e2d03f54..29f37c497fe99 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-12-31 +date: 2024-01-01 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 e4372af929990..cc986eddc79e0 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-12-31 +date: 2024-01-01 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 f09407ee01327..27297a9215300 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-12-31 +date: 2024-01-01 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 3361ad2f3062c..6d720b027757b 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-12-31 +date: 2024-01-01 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 2306ba1d0c5bd..4ade754f6a9cd 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-12-31 +date: 2024-01-01 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 e0b621dbac9ee..6120b379670b9 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-12-31 +date: 2024-01-01 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 05dc4b995edaf..02e7746f25eab 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-12-31 +date: 2024-01-01 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 bfff9eea960f4..67129e8756ffa 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-12-31 +date: 2024-01-01 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 47c5ff97f24b0..6d44a89190796 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-12-31 +date: 2024-01-01 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 345f3fb398369..f2d447a8be247 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-12-31 +date: 2024-01-01 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 7514c6f315c83..8cdc1382044c9 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-12-31 +date: 2024-01-01 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 ace0ddf69aa81..f3092792e556f 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-12-31 +date: 2024-01-01 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 844999586b238..b70db19811752 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-12-31 +date: 2024-01-01 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 ba031e5445d07..0c385091a506d 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-12-31 +date: 2024-01-01 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 8162527e1412f..3757afa017b67 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-12-31 +date: 2024-01-01 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 eb78e602bcc1d..fdc698587b7a4 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-12-31 +date: 2024-01-01 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 453cc95b0c288..6b89e54b3359b 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-12-31 +date: 2024-01-01 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 5c633399e82a0..c81fcf4042cdd 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-12-31 +date: 2024-01-01 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 6fcdb863fc6cb..c4bfd193d09cd 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-12-31 +date: 2024-01-01 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 a2c409dd9baa3..93316014fab60 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-12-31 +date: 2024-01-01 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 2fddcf08c2960..7b7eda7a4e842 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index 558b67c87dd68..28e4a557e6ece 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index b52e4add6a452..38f212ba15d32 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-12-31 +date: 2024-01-01 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 0d5519e1fc125..16e4f52ac8d72 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-12-31 +date: 2024-01-01 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 59e4b1ffd2cc3..cf33083cafe6d 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-12-31 +date: 2024-01-01 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 9bedf6f75294b..51c894e4d3968 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-12-31 +date: 2024-01-01 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 62b500858b9a0..de5657353c5e2 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index e45d0e6278421..bb302bf78daec 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index a02b217381d8a..1e2944b919e91 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index c4f72384e6d26..afa3979264987 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index c1482e39e46fd..7ba280c0d5562 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx index c7226ca805cba..5a9c6b3bbe991 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index 46b4fbf6479e5..9b9249f8958de 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 118e205485ca6..d2382d8c0a16a 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index 98f14b80d5a94..d01cabe215e19 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-12-31 +date: 2024-01-01 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 43686d5adfae9..59973ee478f7f 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-12-31 +date: 2024-01-01 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 75d1698ca1489..65273d87f7928 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-12-31 +date: 2024-01-01 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 b6e4a4b225820..ca79f8f0524a1 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_visualization_utils.mdx b/api_docs/kbn_visualization_utils.mdx index 4e3cdc6b6f544..34781f2d8f4d2 100644 --- a/api_docs/kbn_visualization_utils.mdx +++ b/api_docs/kbn_visualization_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-utils title: "@kbn/visualization-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-utils plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-utils'] --- import kbnVisualizationUtilsObj from './kbn_visualization_utils.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index a4539a9d5f834..95f5f8428e4bb 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index b00b6e3bd829f..b9ab418fd0089 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index 1b99459a62004..8515dab0feae6 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 0db3f10e66244..9381f293b0050 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index abf9907a4b518..23e4bd42251fc 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-12-31 +date: 2024-01-01 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 6a1be8d70ef6c..eb9eae5210ef2 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-12-31 +date: 2024-01-01 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 f9f357339c3f5..818b248dcfe4d 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-12-31 +date: 2024-01-01 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 127d6201d44b4..61d574c6e2c06 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-12-31 +date: 2024-01-01 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 37542c5c0cafd..ac1eaa02adda9 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-12-31 +date: 2024-01-01 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 5887fbc5677b9..4017a420ba3c6 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 0cfffbd99316e..6f3c86b5226ae 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index 7bef84c417a39..5f7f79d0ad1dc 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 13136dcdfb1d3..7f02ef1c2f781 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx index 852079251d576..3f2d742c3092b 100644 --- a/api_docs/log_explorer.mdx +++ b/api_docs/log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logExplorer title: "logExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logExplorer plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer'] --- import logExplorerObj from './log_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 95c8969bb4279..62b82c294fbec 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-12-31 +date: 2024-01-01 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 818deca8ce433..c51306d5b0cd6 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-12-31 +date: 2024-01-01 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 67ec05824575c..f88c896c2e932 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-12-31 +date: 2024-01-01 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 38cf308015a6e..80734c8adde98 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index 3fee2e63121b7..ca1fb4498cad3 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 6c439a1d6ffee..a6e65abf0f2b1 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index 7d50cbc4e3639..a88c4975937c0 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 6f663d80b8aaa..7dfef3b18b6a7 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-12-31 +date: 2024-01-01 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 e6dd1dbd18727..151955aab91e0 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-12-31 +date: 2024-01-01 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 ebff258a039a2..1b2e123ff2ced 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-12-31 +date: 2024-01-01 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 af5e441a81862..283e6c74ba398 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index aa944beea0a87..76f0c4370a70d 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index fa38506627b43..231318742b841 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index a4f2eb51086f0..40f637033d550 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index 74a8f2db1253f..d8827d1632430 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_log_explorer.mdx b/api_docs/observability_log_explorer.mdx index 8af2d2b922984..523a46f2ce2b2 100644 --- a/api_docs/observability_log_explorer.mdx +++ b/api_docs/observability_log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogExplorer title: "observabilityLogExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogExplorer plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogExplorer'] --- import observabilityLogExplorerObj from './observability_log_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index c47e6643985c3..720a231fcfc06 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index 8b3e406e4a14f..97b06513ee346 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-12-31 +date: 2024-01-01 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 426969efc0574..a17aac67fe6b2 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index 36f60ac394fc4..75399e23c209f 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index e95f18b2879d2..2b1345ebddfad 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 4624344da0606..5bc9888d38c88 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-12-31 +date: 2024-01-01 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 f9aabdf2452a8..0d3b31cbecaae 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index b7e6818fe05fa..9489999ccc376 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 6287749e951e3..1dfeb9676aaa0 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-12-31 +date: 2024-01-01 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 ede42289f64e7..240f53d604379 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-12-31 +date: 2024-01-01 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 f4ff7e1779844..07659171cfffc 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-12-31 +date: 2024-01-01 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 4927f473c6f5b..a0f33fdfaa35c 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-12-31 +date: 2024-01-01 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 054f2c31424c5..349f5372c9de6 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-12-31 +date: 2024-01-01 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 4db334cbf252f..e8913f9d3235e 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index 20a8551a89ab4..e4b2c16754518 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index c50e634560c65..70bf201b45ccb 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 27c29f7ecdcc0..1230986cdbe7a 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-12-31 +date: 2024-01-01 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 414068f5f040b..c72a45686069a 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-12-31 +date: 2024-01-01 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 9e85544697e2a..edd1a51288348 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-12-31 +date: 2024-01-01 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 ed82ce28ac95f..906bb382ea7b7 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-12-31 +date: 2024-01-01 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 007e7e4521654..aaf50282fa1ab 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 5ad843770b28f..e391f5e25865d 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index de3826500d44b..cbdf000bd9bf9 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index 6c3458713d809..7277d735a7163 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-12-31 +date: 2024-01-01 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 0bea74a412f12..352c5ced1de15 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-12-31 +date: 2024-01-01 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 8f8621e0f93e5..0790d325fb864 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-12-31 +date: 2024-01-01 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 6b1267730063a..1ca94faf135c3 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-12-31 +date: 2024-01-01 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 1e27b58b8bcbf..0d2c7733fe6f6 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-12-31 +date: 2024-01-01 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 c9aea59dbfaaa..0384de23c946f 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-12-31 +date: 2024-01-01 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 f9d65aa17da3b..7cf7a9867e5b7 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-12-31 +date: 2024-01-01 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 2a9a878b77366..9c253773f3161 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-12-31 +date: 2024-01-01 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 5e6526d0239f4..1300d51ba0f18 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-12-31 +date: 2024-01-01 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 915ebc51ca109..f98bb4a7d1039 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-12-31 +date: 2024-01-01 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 ab2a9de4d8fb7..a244c5d1680c5 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-12-31 +date: 2024-01-01 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 d8f84f4cad42d..6abd8bd8cca58 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-12-31 +date: 2024-01-01 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 000cbc54a2752..43bcbb79a95e4 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-12-31 +date: 2024-01-01 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 03308fd827333..1ca2685f6694f 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-12-31 +date: 2024-01-01 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 b20bf705241e9..add50e8aab38b 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-12-31 +date: 2024-01-01 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 a256bec7a1b82..83ada11544cf2 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-12-31 +date: 2024-01-01 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 163ef544336f8..a711ff90c5d9f 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-12-31 +date: 2024-01-01 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 40fe836bb547d..3946de9fef409 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-12-31 +date: 2024-01-01 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 aa9724c195d35..8d9af8ee52d09 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-12-31 +date: 2024-01-01 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 f67c8b57b1767..60784adb0cb72 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 7d5fab951038c..d8b4f3911c4c4 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index ff163fb7b1dcc..07fe409fc4150 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index b71dc32b73eaa..2ec68c19f2a64 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index f10671dac676b..90b1656f5213a 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2023-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index fdd3e1c10e047..2ac0e1c31f6c5 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-12-31 +date: 2024-01-01 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 ff45a9af4652e..e19c07bb183d5 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-12-31 +date: 2024-01-01 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 c76779c934b41..7d9d4a8f3f464 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-12-31 +date: 2024-01-01 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 d9d943e4cc91f..82233f9515117 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-12-31 +date: 2024-01-01 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 89d490871c1eb..414aff7aadd3f 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-12-31 +date: 2024-01-01 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 29a85c19a73fc..b622fc4225d5c 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-12-31 +date: 2024-01-01 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 5e3068f148319..cdd31753c3f0b 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-12-31 +date: 2024-01-01 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 baa56f8577bcf..1a416fc3109ee 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-12-31 +date: 2024-01-01 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 fc6252faa4cc4..1551915dd9324 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-12-31 +date: 2024-01-01 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 dfbaf3976ba62..e726345dbaf5a 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-12-31 +date: 2024-01-01 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 84c25340bc244..fd6cb5a1c44d4 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-12-31 +date: 2024-01-01 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 05832fa9087e9..eeddd3b362c49 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-12-31 +date: 2024-01-01 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 c9fde9ce64568..1e11f5decb098 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-12-31 +date: 2024-01-01 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 b85047716df44..6dc37b7c2927f 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-12-31 +date: 2024-01-01 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 00d0ea93a4aa6..aa2e08bae34b2 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-12-31 +date: 2024-01-01 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 04207fb4b0a54..d9a8ea6e0f1ee 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-12-31 +date: 2024-01-01 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 b979a8d267014..e6d691ea9dd6e 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-12-31 +date: 2024-01-01 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 9d0ae7429925f..b0e3c22aef17c 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-12-31 +date: 2024-01-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 4b115539429c2c4c3704adb41f972df7051777fc Mon Sep 17 00:00:00 2001 From: Marco Liberati Date: Tue, 2 Jan 2024 14:57:12 +0100 Subject: [PATCH 031/323] [ES|QL] Fix autocomplete on index clearing (#173849) ## Summary Fix #173746 ![esql_autocomplete_fix](https://github.com/elastic/kibana/assets/924948/9aad17e4-a01c-4bc9-8981-1c3906f2e151) --------- Co-authored-by: Stratoula Kalafateli Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../src/esql/lib/ast/autocomplete/autocomplete.test.ts | 1 + packages/kbn-monaco/src/esql/lib/ast/shared/context.ts | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts index bfb9ecaee8d80..c6bf698319228 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts @@ -291,6 +291,7 @@ describe('autocomplete', () => { testSuggestions('from a,', suggestedIndexes); testSuggestions('from a, b ', ['[metadata $0 ]', '|', ',']); testSuggestions('from *,', suggestedIndexes); + testSuggestions('from index', suggestedIndexes, 6 /* index index in from */); }); describe('where', () => { diff --git a/packages/kbn-monaco/src/esql/lib/ast/shared/context.ts b/packages/kbn-monaco/src/esql/lib/ast/shared/context.ts index 3a51038ec4e92..d175ae1b2f3af 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/shared/context.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/shared/context.ts @@ -20,6 +20,7 @@ import { isColumnItem, getLastCharFromTrimmed, getFunctionDefinition, + isSourceItem, } from './helpers'; function findNode(nodes: ESQLAstItem[], offset: number): ESQLSingleAstItem | undefined { @@ -69,7 +70,9 @@ function findOption(nodes: ESQLAstItem[], offset: number): ESQLCommandOption | u } function isMarkerNode(node: ESQLSingleAstItem | undefined): boolean { - return Boolean(node && isColumnItem(node) && node.name === EDITOR_MARKER); + return Boolean( + node && (isColumnItem(node) || isSourceItem(node)) && node.name.endsWith(EDITOR_MARKER) + ); } function cleanMarkerNode(node: ESQLSingleAstItem | undefined): ESQLSingleAstItem | undefined { From 99fc9099c508abf3a7cd29959644153970a985a4 Mon Sep 17 00:00:00 2001 From: Marco Liberati Date: Tue, 2 Jan 2024 15:02:46 +0100 Subject: [PATCH 032/323] [Lens] Move formula docs into separate package (#173770) ## Summary Fixes #103248 and #164952 --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Stratoula Kalafateli --- .github/CODEOWNERS | 1 + .i18nrc.json | 1 + package.json | 1 + packages/kbn-i18n/GUIDELINE.md | 6 +- packages/kbn-lens-formula-docs/README.md | 6 + packages/kbn-lens-formula-docs/index.ts | 92 +++ packages/kbn-lens-formula-docs/jest.config.js | 13 + packages/kbn-lens-formula-docs/kibana.jsonc | 5 + packages/kbn-lens-formula-docs/package.json | 7 + .../kbn-lens-formula-docs/src/math/index.ts | 640 ++++++++++++++++++ .../src/operations/average.ts | 20 + .../src/operations/cardinality.ts | 37 + .../src/operations/count.ts | 39 ++ .../src/operations/counter_rate.ts | 38 ++ .../src/operations/cumulative_sum.ts | 36 + .../src/operations/differences.ts | 37 + .../src/operations/helpers.ts | 87 +++ .../src/operations/interval.ts | 28 + .../src/operations/last_value.ts | 36 + .../src/operations/max.ts | 20 + .../src/operations/median.ts | 20 + .../src/operations/min.ts | 20 + .../src/operations/moving_average.ts | 43 ++ .../src/operations/normalize_by_unit.ts | 36 + .../src/operations/now.ts | 28 + .../src/operations/overall_average.ts | 37 + .../src/operations/overall_max.ts | 37 + .../src/operations/overall_min.ts | 37 + .../src/operations/overall_sum.ts | 37 + .../src/operations/percentile.ts | 34 + .../src/operations/percentile_ranks.ts | 34 + .../src/operations/std_deviation.ts | 31 + .../src/operations/sum.ts | 20 + .../src/operations/time_range.ts | 28 + .../src/operations/types.ts | 17 + .../src/sections/calculations.ts | 19 + .../src/sections/common.ts | 106 +++ .../src/sections/comparison.ts | 18 + .../src/sections/context.ts | 19 + .../src/sections/elasticsearch.ts | 19 + .../src/sections/how_to.ts | 46 ++ .../src/sections/index.ts | 25 + .../src/sections/math.ts | 19 + packages/kbn-lens-formula-docs/tsconfig.json | 12 + tsconfig.base.json | 2 + .../definitions/calculations/counter_rate.tsx | 27 +- .../calculations/cumulative_sum.tsx | 25 +- .../definitions/calculations/differences.tsx | 30 +- .../calculations/moving_average.tsx | 46 +- .../calculations/overall_metric.tsx | 109 +-- .../definitions/calculations/time_scale.tsx | 50 +- .../operations/definitions/cardinality.tsx | 29 +- .../operations/definitions/count.tsx | 32 +- .../__snapshots__/formula.test.tsx.snap | 12 +- .../definitions/formula/context_variables.tsx | 5 - .../formula/editor/formula_help.tsx | 234 +------ .../formula/editor/math_completion.test.ts | 32 +- .../formula/editor/math_completion.ts | 3 +- .../definitions/formula/formula.test.tsx | 4 +- .../operations/definitions/formula/util.ts | 631 +---------------- .../definitions/formula/validation.ts | 3 +- .../operations/definitions/index.ts | 5 - .../operations/definitions/last_value.tsx | 27 +- .../operations/definitions/metrics.tsx | 87 +-- .../operations/definitions/percentile.tsx | 27 +- .../definitions/percentile_ranks.tsx | 23 +- x-pack/plugins/lens/tsconfig.json | 1 + .../translations/translations/fr-FR.json | 210 +++--- .../translations/translations/ja-JP.json | 214 +++--- .../translations/translations/zh-CN.json | 201 +++--- yarn.lock | 4 + 71 files changed, 2386 insertions(+), 1579 deletions(-) create mode 100644 packages/kbn-lens-formula-docs/README.md create mode 100644 packages/kbn-lens-formula-docs/index.ts create mode 100644 packages/kbn-lens-formula-docs/jest.config.js create mode 100644 packages/kbn-lens-formula-docs/kibana.jsonc create mode 100644 packages/kbn-lens-formula-docs/package.json create mode 100644 packages/kbn-lens-formula-docs/src/math/index.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/average.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/cardinality.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/count.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/counter_rate.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/cumulative_sum.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/differences.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/helpers.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/interval.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/last_value.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/max.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/median.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/min.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/moving_average.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/normalize_by_unit.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/now.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/overall_average.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/overall_max.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/overall_min.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/overall_sum.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/percentile.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/percentile_ranks.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/std_deviation.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/sum.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/time_range.ts create mode 100644 packages/kbn-lens-formula-docs/src/operations/types.ts create mode 100644 packages/kbn-lens-formula-docs/src/sections/calculations.ts create mode 100644 packages/kbn-lens-formula-docs/src/sections/common.ts create mode 100644 packages/kbn-lens-formula-docs/src/sections/comparison.ts create mode 100644 packages/kbn-lens-formula-docs/src/sections/context.ts create mode 100644 packages/kbn-lens-formula-docs/src/sections/elasticsearch.ts create mode 100644 packages/kbn-lens-formula-docs/src/sections/how_to.ts create mode 100644 packages/kbn-lens-formula-docs/src/sections/index.ts create mode 100644 packages/kbn-lens-formula-docs/src/sections/math.ts create mode 100644 packages/kbn-lens-formula-docs/tsconfig.json diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 7d95257248bfc..b3d2e9cf82ad4 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -486,6 +486,7 @@ src/plugins/kibana_utils @elastic/appex-sharedux x-pack/plugins/kubernetes_security @elastic/kibana-cloud-security-posture packages/kbn-language-documentation-popover @elastic/kibana-visualizations packages/kbn-lens-embeddable-utils @elastic/obs-ux-infra_services-team @elastic/kibana-visualizations +packages/kbn-lens-formula-docs @elastic/kibana-visualizations x-pack/plugins/lens @elastic/kibana-visualizations x-pack/plugins/license_api_guard @elastic/platform-deployment-management x-pack/plugins/license_management @elastic/platform-deployment-management diff --git a/.i18nrc.json b/.i18nrc.json index 1af130820cd36..119c072688489 100644 --- a/.i18nrc.json +++ b/.i18nrc.json @@ -79,6 +79,7 @@ "kibana_utils": "src/plugins/kibana_utils", "kibana-react": "src/plugins/kibana_react", "kibanaOverview": "src/plugins/kibana_overview", + "lensFormulaDocs": "packages/kbn-lens-formula-docs", "lists": "packages/kbn-securitysolution-list-utils/src", "exceptionList-components": "packages/kbn-securitysolution-exception-list-components/src", "management": [ diff --git a/package.json b/package.json index 800d511122f2a..9f64d00d3ca57 100644 --- a/package.json +++ b/package.json @@ -508,6 +508,7 @@ "@kbn/kubernetes-security-plugin": "link:x-pack/plugins/kubernetes_security", "@kbn/language-documentation-popover": "link:packages/kbn-language-documentation-popover", "@kbn/lens-embeddable-utils": "link:packages/kbn-lens-embeddable-utils", + "@kbn/lens-formula-docs": "link:packages/kbn-lens-formula-docs", "@kbn/lens-plugin": "link:x-pack/plugins/lens", "@kbn/license-api-guard-plugin": "link:x-pack/plugins/license_api_guard", "@kbn/license-management-plugin": "link:x-pack/plugins/license_management", diff --git a/packages/kbn-i18n/GUIDELINE.md b/packages/kbn-i18n/GUIDELINE.md index 98f6f176d0be8..983515a16c737 100644 --- a/packages/kbn-i18n/GUIDELINE.md +++ b/packages/kbn-i18n/GUIDELINE.md @@ -128,7 +128,7 @@ Here's a rule of id naming: 'kbn.management.createIndexPattern.includeSystemIndicesToggleSwitch' 'kbn.management.editIndexPattern.wrongTypeErrorMessage' 'kbn.management.editIndexPattern.scripted.table.nameDescription' - 'xpack.lens.formulaDocumentation.filterRatioDescription.markdown' + 'lensFormulaDocs.documentation.filterRatioDescription.markdown' ``` - For complex messages, which are divided into several parts, use the following approach: @@ -183,7 +183,7 @@ Each message id should end with a type of the message. | tooltip | `kbn.management.editIndexPattern.removeTooltip` | | error message | `kbn.management.createIndexPattern.step.invalidCharactersErrorMessage` | | toggleSwitch | `kbn.management.createIndexPattern.includeSystemIndicesToggleSwitch` | -| markdown | `xpack.lens.formulaDocumentation.filterRatioDescription.markdown` | +| markdown | `lensFormulaDocs.documentation.filterRatioDescription.markdown` | For example: @@ -278,7 +278,7 @@ For example: = [ + average, + count, + cardinality, + counterRate, + cumulativeSum, + differences, + interval, + lastValue, + max, + median, + min, + movingAverage, + normalizeByUnit, + now, + overallAverge, + overallMax, + overallMin, + overallSum, + percentileRank, + percentile, + stdDeviation, + sum, + timeRange, +].reduce((memo: Record, op: OperationDocumentationType) => { + memo[op.id] = op; + return memo; +}, {}); + +export { tinymathFunctions, getTypeI18n } from './src/math'; +export { sections } from './src/sections'; diff --git a/packages/kbn-lens-formula-docs/jest.config.js b/packages/kbn-lens-formula-docs/jest.config.js new file mode 100644 index 0000000000000..65a09b087a8e7 --- /dev/null +++ b/packages/kbn-lens-formula-docs/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-lens-formula-docs'], +}; diff --git a/packages/kbn-lens-formula-docs/kibana.jsonc b/packages/kbn-lens-formula-docs/kibana.jsonc new file mode 100644 index 0000000000000..11135fcff7d7e --- /dev/null +++ b/packages/kbn-lens-formula-docs/kibana.jsonc @@ -0,0 +1,5 @@ +{ + "type": "shared-common", + "id": "@kbn/lens-formula-docs", + "owner": ["@elastic/kibana-visualizations"] +} diff --git a/packages/kbn-lens-formula-docs/package.json b/packages/kbn-lens-formula-docs/package.json new file mode 100644 index 0000000000000..c9494c6248a90 --- /dev/null +++ b/packages/kbn-lens-formula-docs/package.json @@ -0,0 +1,7 @@ +{ + "name": "@kbn/lens-formula-docs", + "private": true, + "version": "1.0.0", + "license": "SSPL-1.0 OR Elastic License 2.0", + "sideEffects": false + } \ No newline at end of file diff --git a/packages/kbn-lens-formula-docs/src/math/index.ts b/packages/kbn-lens-formula-docs/src/math/index.ts new file mode 100644 index 0000000000000..5ce1c12e0a5ba --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/math/index.ts @@ -0,0 +1,640 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; + +export function getTypeI18n(type: string) { + if (type === 'number') { + return i18n.translate('lensFormulaDocs.number', { defaultMessage: 'number' }); + } + if (type === 'string') { + return i18n.translate('lensFormulaDocs.string', { defaultMessage: 'string' }); + } + if (type === 'boolean') { + return i18n.translate('lensFormulaDocs.boolean', { defaultMessage: 'boolean' }); + } + return ''; +} + +export const tinymathFunctions: Record< + string, + { + section: 'math' | 'comparison'; + positionalArguments: Array<{ + name: string; + optional?: boolean; + defaultValue?: string | number; + type?: string; + alternativeWhenMissing?: string; + }>; + // Help is in Markdown format + help: string; + // When omitted defaults to "number". + // Used for comparison functions return type + outputType?: string; + } +> = { + add: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.left', { defaultMessage: 'left' }), + type: getTypeI18n('number'), + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.right', { defaultMessage: 'right' }), + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.addFunction.markdown', { + defaultMessage: ` +Adds up two numbers. +Also works with \`+\` symbol. + +Example: Calculate the sum of two fields + +\`sum(price) + sum(tax)\` + +Example: Offset count by a static value + +\`add(count(), 5)\` + `, + }), + }, + subtract: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.left', { defaultMessage: 'left' }), + type: getTypeI18n('number'), + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.right', { defaultMessage: 'right' }), + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.subtractFunction.markdown', { + defaultMessage: ` +Subtracts the first number from the second number. +Also works with \`-\` symbol. + +Example: Calculate the range of a field +\`subtract(max(bytes), min(bytes))\` + `, + }), + }, + multiply: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.left', { defaultMessage: 'left' }), + type: getTypeI18n('number'), + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.right', { defaultMessage: 'right' }), + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.multiplyFunction.markdown', { + defaultMessage: ` +Multiplies two numbers. +Also works with \`*\` symbol. + +Example: Calculate price after current tax rate +\`sum(bytes) * last_value(tax_rate)\` + +Example: Calculate price after constant tax rate +\`multiply(sum(price), 1.2)\` + `, + }), + }, + divide: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.left', { defaultMessage: 'left' }), + type: getTypeI18n('number'), + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.right', { defaultMessage: 'right' }), + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.divideFunction.markdown', { + defaultMessage: ` +Divides the first number by the second number. +Also works with \`/\` symbol + +Example: Calculate profit margin +\`sum(profit) / sum(revenue)\` + +Example: \`divide(sum(bytes), 2)\` + `, + }), + }, + abs: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.value', { defaultMessage: 'value' }), + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.absFunction.markdown', { + defaultMessage: ` +Calculates absolute value. A negative value is multiplied by -1, a positive value stays the same. + +Example: Calculate average distance to sea level \`abs(average(altitude))\` + `, + }), + }, + cbrt: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.value', { defaultMessage: 'value' }), + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.cbrtFunction.markdown', { + defaultMessage: ` +Cube root of value. + +Example: Calculate side length from volume +\`cbrt(last_value(volume))\` + `, + }), + }, + ceil: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.value', { defaultMessage: 'value' }), + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.ceilFunction.markdown', { + defaultMessage: ` +Ceiling of value, rounds up. + +Example: Round up price to the next dollar +\`ceil(sum(price))\` + `, + }), + }, + clamp: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.value', { defaultMessage: 'value' }), + type: getTypeI18n('number'), + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.min', { defaultMessage: 'min' }), + type: getTypeI18n('number'), + alternativeWhenMissing: 'pick_max', + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.max', { defaultMessage: 'max' }), + type: getTypeI18n('number'), + alternativeWhenMissing: 'pick_min', + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.clampFunction.markdown', { + defaultMessage: ` +Limits the value from a minimum to maximum. + +Example: Make sure to catch outliers +\`\`\` +clamp( + average(bytes), + percentile(bytes, percentile=5), + percentile(bytes, percentile=95) +) +\`\`\` +`, + }), + }, + cube: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.value', { defaultMessage: 'value' }), + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.cubeFunction.markdown', { + defaultMessage: ` +Calculates the cube of a number. + +Example: Calculate volume from side length +\`cube(last_value(length))\` + `, + }), + }, + exp: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.value', { defaultMessage: 'value' }), + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.expFunction.markdown', { + defaultMessage: ` +Raises *e* to the nth power. + +Example: Calculate the natural exponential function + +\`exp(last_value(duration))\` + `, + }), + }, + fix: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.value', { defaultMessage: 'value' }), + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.fixFunction.markdown', { + defaultMessage: ` +For positive values, takes the floor. For negative values, takes the ceiling. + +Example: Rounding towards zero +\`fix(sum(profit))\` + `, + }), + }, + floor: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.value', { defaultMessage: 'value' }), + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.floorFunction.markdown', { + defaultMessage: ` +Round down to nearest integer value + +Example: Round down a price +\`floor(sum(price))\` + `, + }), + }, + log: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.value', { defaultMessage: 'value' }), + type: getTypeI18n('number'), + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.base', { defaultMessage: 'base' }), + optional: true, + defaultValue: 'e', + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.logFunction.markdown', { + defaultMessage: ` +Logarithm with optional base. The natural base *e* is used as default. + +Example: Calculate number of bits required to store values +\`\`\` +log(sum(bytes)) +log(sum(bytes), 2) +\`\`\` + `, + }), + }, + mod: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.value', { defaultMessage: 'value' }), + type: getTypeI18n('number'), + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.base', { defaultMessage: 'base' }), + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.modFunction.markdown', { + defaultMessage: ` +Remainder after dividing the function by a number + +Example: Calculate last three digits of a value +\`mod(sum(price), 1000)\` + `, + }), + }, + pow: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.value', { defaultMessage: 'value' }), + type: getTypeI18n('number'), + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.base', { defaultMessage: 'base' }), + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.powFunction.markdown', { + defaultMessage: ` +Raises the value to a certain power. The second argument is required + +Example: Calculate volume based on side length +\`pow(last_value(length), 3)\` + `, + }), + }, + round: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.value', { defaultMessage: 'value' }), + type: getTypeI18n('number'), + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.decimals', { defaultMessage: 'decimals' }), + optional: true, + defaultValue: 0, + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.roundFunction.markdown', { + defaultMessage: ` +Rounds to a specific number of decimal places, default of 0 + +Examples: Round to the cent +\`\`\` +round(sum(bytes)) +round(sum(bytes), 2) +\`\`\` + `, + }), + }, + sqrt: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.value', { defaultMessage: 'value' }), + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.sqrtFunction.markdown', { + defaultMessage: ` +Square root of a positive value only + +Example: Calculate side length based on area +\`sqrt(last_value(area))\` + `, + }), + }, + square: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.value', { defaultMessage: 'value' }), + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.squareFunction.markdown', { + defaultMessage: ` +Raise the value to the 2nd power + +Example: Calculate area based on side length +\`square(last_value(length))\` + `, + }), + }, + pick_max: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.left', { defaultMessage: 'left' }), + type: getTypeI18n('number'), + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.right', { defaultMessage: 'right' }), + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.maxFunction.markdown', { + defaultMessage: ` +Finds the maximum value between two numbers. + +Example: Find the maximum between two fields averages +\`pick_max(average(bytes), average(memory))\` + `, + }), + }, + pick_min: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.left', { defaultMessage: 'left' }), + type: getTypeI18n('number'), + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.right', { defaultMessage: 'right' }), + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.minFunction.markdown', { + defaultMessage: ` +Finds the minimum value between two numbers. + +Example: Find the minimum between two fields averages +\`pick_min(average(bytes), average(memory))\` + `, + }), + }, + defaults: { + section: 'math', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.value', { defaultMessage: 'value' }), + type: getTypeI18n('number'), + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.defaultValue', { + defaultMessage: 'default', + }), + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.defaultFunction.markdown', { + defaultMessage: ` +Returns a default numeric value when value is null. + +Example: Return -1 when a field has no data +\`defaults(average(bytes), -1)\` +`, + }), + }, + lt: { + section: 'comparison', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.left', { defaultMessage: 'left' }), + type: getTypeI18n('number'), + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.right', { defaultMessage: 'right' }), + type: getTypeI18n('number'), + }, + ], + outputType: getTypeI18n('boolean'), + help: i18n.translate('lensFormulaDocs.tinymath.ltFunction.markdown', { + defaultMessage: ` +Performs a lower than comparison between two values. +To be used as condition for \`ifelse\` comparison function. +Also works with \`<\` symbol. + +Example: Returns true if the average of bytes is lower than the average amount of memory +\`average(bytes) <= average(memory)\` + +Example: \`lt(average(bytes), 1000)\` + `, + }), + }, + gt: { + section: 'comparison', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.left', { defaultMessage: 'left' }), + type: getTypeI18n('number'), + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.right', { defaultMessage: 'right' }), + type: getTypeI18n('number'), + }, + ], + outputType: getTypeI18n('boolean'), + help: i18n.translate('lensFormulaDocs.tinymath.gtFunction.markdown', { + defaultMessage: ` +Performs a greater than comparison between two values. +To be used as condition for \`ifelse\` comparison function. +Also works with \`>\` symbol. + +Example: Returns true if the average of bytes is greater than the average amount of memory +\`average(bytes) > average(memory)\` + +Example: \`gt(average(bytes), 1000)\` + `, + }), + }, + eq: { + section: 'comparison', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.left', { defaultMessage: 'left' }), + type: getTypeI18n('number'), + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.right', { defaultMessage: 'right' }), + type: getTypeI18n('number'), + }, + ], + outputType: getTypeI18n('boolean'), + help: i18n.translate('lensFormulaDocs.tinymath.eqFunction.markdown', { + defaultMessage: ` +Performs an equality comparison between two values. +To be used as condition for \`ifelse\` comparison function. +Also works with \`==\` symbol. + +Example: Returns true if the average of bytes is exactly the same amount of average memory +\`average(bytes) == average(memory)\` + +Example: \`eq(sum(bytes), 1000000)\` + `, + }), + }, + lte: { + section: 'comparison', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.left', { defaultMessage: 'left' }), + type: getTypeI18n('number'), + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.right', { defaultMessage: 'right' }), + type: getTypeI18n('number'), + }, + ], + outputType: getTypeI18n('boolean'), + help: i18n.translate('lensFormulaDocs.tinymath.lteFunction.markdown', { + defaultMessage: ` +Performs a lower than or equal comparison between two values. +To be used as condition for \`ifelse\` comparison function. +Also works with \`<=\` symbol. + +Example: Returns true if the average of bytes is lower than or equal to the average amount of memory +\`average(bytes) <= average(memory)\` + +Example: \`lte(average(bytes), 1000)\` + `, + }), + }, + gte: { + section: 'comparison', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.left', { defaultMessage: 'left' }), + type: getTypeI18n('number'), + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.right', { defaultMessage: 'right' }), + type: getTypeI18n('number'), + }, + ], + outputType: getTypeI18n('boolean'), + help: i18n.translate('lensFormulaDocs.tinymath.gteFunction.markdown', { + defaultMessage: ` +Performs a greater than comparison between two values. +To be used as condition for \`ifelse\` comparison function. +Also works with \`>=\` symbol. + +Example: Returns true if the average of bytes is greater than or equal to the average amount of memory +\`average(bytes) >= average(memory)\` + +Example: \`gte(average(bytes), 1000)\` + `, + }), + }, + ifelse: { + section: 'comparison', + positionalArguments: [ + { + name: i18n.translate('lensFormulaDocs.tinymath.condition', { defaultMessage: 'condition' }), + type: getTypeI18n('boolean'), + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.left', { defaultMessage: 'left' }), + type: getTypeI18n('number'), + }, + { + name: i18n.translate('lensFormulaDocs.tinymath.right', { defaultMessage: 'right' }), + type: getTypeI18n('number'), + }, + ], + help: i18n.translate('lensFormulaDocs.tinymath.ifElseFunction.markdown', { + defaultMessage: ` +Returns a value depending on whether the element of condition is true or false. + +Example: Average revenue per customer but in some cases customer id is not provided which counts as additional customer +\`sum(total)/(unique_count(customer_id) + ifelse( count() > count(kql='customer_id:*'), 1, 0))\` + `, + }), + }, +}; diff --git a/packages/kbn-lens-formula-docs/src/operations/average.ts b/packages/kbn-lens-formula-docs/src/operations/average.ts new file mode 100644 index 0000000000000..84e755be52782 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/average.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { buildMetricDocumentationDefinition } from './helpers'; + +export const AVG_ID = 'average'; +export const AVG_NAME = i18n.translate('lensFormulaDocs.avg', { + defaultMessage: 'Average', +}); + +export const average = buildMetricDocumentationDefinition({ + id: AVG_ID, + name: AVG_NAME, +}); diff --git a/packages/kbn-lens-formula-docs/src/operations/cardinality.ts b/packages/kbn-lens-formula-docs/src/operations/cardinality.ts new file mode 100644 index 0000000000000..6bb1ddb9e2889 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/cardinality.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { OperationDocumentationType } from './types'; + +export const CARDINALITY_ID = 'unique_count'; +export const CARDINALITY_NAME = i18n.translate('lensFormulaDocs.cardinality', { + defaultMessage: 'Unique Count', +}); + +export const cardinality: OperationDocumentationType = { + id: CARDINALITY_ID, + name: CARDINALITY_NAME, + documentation: { + section: 'elasticsearch', + signature: i18n.translate('lensFormulaDocs.cardinality.signature', { + defaultMessage: 'field: string', + }), + description: i18n.translate('lensFormulaDocs.cardinality.documentation.markdown', { + defaultMessage: ` +Calculates the number of unique values of a specified field. Works for number, string, date and boolean values. + +Example: Calculate the number of different products: +\`unique_count(product.name)\` + +Example: Calculate the number of different products from the "clothes" group: +\`unique_count(product.name, kql='product.group=clothes')\` + `, + }), + }, +}; diff --git a/packages/kbn-lens-formula-docs/src/operations/count.ts b/packages/kbn-lens-formula-docs/src/operations/count.ts new file mode 100644 index 0000000000000..db5fdf37df5e1 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/count.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { OperationDocumentationType } from './types'; + +export const COUNT_ID = 'count'; +export const COUNT_NAME = i18n.translate('lensFormulaDocs.count', { + defaultMessage: 'Count', +}); + +export const count: OperationDocumentationType = { + id: COUNT_ID, + name: COUNT_NAME, + documentation: { + section: 'elasticsearch', + signature: i18n.translate('lensFormulaDocs.count.signature', { + defaultMessage: '[field: string]', + }), + description: i18n.translate('lensFormulaDocs.count.documentation.markdown', { + defaultMessage: ` +The total number of documents. When you provide a field, the total number of field values is counted. When you use the Count function for fields that have multiple values in a single document, all values are counted. + +#### Examples + +To calculate the total number of documents, use \`count()\`. + +To calculate the number of products in all orders, use \`count(products.id)\`. + +To calculate the number of documents that match a specific filter, use \`count(kql='price > 500')\`. +`, + }), + }, +}; diff --git a/packages/kbn-lens-formula-docs/src/operations/counter_rate.ts b/packages/kbn-lens-formula-docs/src/operations/counter_rate.ts new file mode 100644 index 0000000000000..7321fb30e354b --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/counter_rate.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { OperationDocumentationType } from './types'; + +export const COUNTER_RATE_ID = 'counter_rate'; +export const COUNTER_RATE_NAME = i18n.translate('lensFormulaDocs.counterRate', { + defaultMessage: 'Counter rate', +}); + +export const counterRate: OperationDocumentationType = { + id: COUNTER_RATE_ID, + name: COUNTER_RATE_NAME, + documentation: { + section: 'calculation', + signature: i18n.translate('lensFormulaDocs.counterRate.signature', { + defaultMessage: 'metric: number', + }), + description: i18n.translate('lensFormulaDocs.counterRate.documentation.markdown', { + defaultMessage: ` +Calculates the rate of an ever increasing counter. This function will only yield helpful results on counter metric fields which contain a measurement of some kind monotonically growing over time. +If the value does get smaller, it will interpret this as a counter reset. To get most precise results, \`counter_rate\` should be calculated on the \`max\` of a field. + +This calculation will be done separately for separate series defined by filters or top values dimensions. +It uses the current interval when used in Formula. + +Example: Visualize the rate of bytes received over time by a memcached server: +\`counter_rate(max(memcached.stats.read.bytes))\` + `, + }), + }, +}; diff --git a/packages/kbn-lens-formula-docs/src/operations/cumulative_sum.ts b/packages/kbn-lens-formula-docs/src/operations/cumulative_sum.ts new file mode 100644 index 0000000000000..d25b76f3cb5b8 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/cumulative_sum.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { OperationDocumentationType } from './types'; + +export const CUMULATIVE_SUM_ID = 'cumulative_sum'; +export const CUMULATIVE_SUM_NAME = i18n.translate('lensFormulaDocs.cumulativeSum', { + defaultMessage: 'Cumulative sum', +}); + +export const cumulativeSum: OperationDocumentationType = { + id: CUMULATIVE_SUM_ID, + name: CUMULATIVE_SUM_NAME, + documentation: { + section: 'calculation', + signature: i18n.translate('lensFormulaDocs.cumulative_sum.signature', { + defaultMessage: 'metric: number', + }), + description: i18n.translate('lensFormulaDocs.cumulativeSum.documentation.markdown', { + defaultMessage: ` +Calculates the cumulative sum of a metric over time, adding all previous values of a series to each value. To use this function, you need to configure a date histogram dimension as well. + +This calculation will be done separately for separate series defined by filters or top values dimensions. + +Example: Visualize the received bytes accumulated over time: +\`cumulative_sum(sum(bytes))\` +`, + }), + }, +}; diff --git a/packages/kbn-lens-formula-docs/src/operations/differences.ts b/packages/kbn-lens-formula-docs/src/operations/differences.ts new file mode 100644 index 0000000000000..ccbf4e091083a --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/differences.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { OperationDocumentationType } from './types'; + +export const DIFFERENCES_ID = 'differences'; +export const DIFFERENCES_NAME = i18n.translate('lensFormulaDocs.derivative', { + defaultMessage: 'Differences', +}); + +export const differences: OperationDocumentationType = { + id: DIFFERENCES_ID, + name: DIFFERENCES_NAME, + documentation: { + section: 'calculation', + signature: i18n.translate('lensFormulaDocs.differences.signature', { + defaultMessage: 'metric: number', + }), + description: i18n.translate('lensFormulaDocs.differences.documentation.markdown', { + defaultMessage: ` +Calculates the difference to the last value of a metric over time. To use this function, you need to configure a date histogram dimension as well. +Differences requires the data to be sequential. If your data is empty when using differences, try increasing the date histogram interval. + +This calculation will be done separately for separate series defined by filters or top values dimensions. + +Example: Visualize the change in bytes received over time: +\`differences(sum(bytes))\` +`, + }), + }, +}; diff --git a/packages/kbn-lens-formula-docs/src/operations/helpers.ts b/packages/kbn-lens-formula-docs/src/operations/helpers.ts new file mode 100644 index 0000000000000..0749dcab277b4 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/helpers.ts @@ -0,0 +1,87 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { OperationDocumentationType } from './types'; + +function buildDocumentationDefinition({ + id, + name, + documentation, + signature, + section, +}: { + id: string; + name: string; + documentation: string; + signature: string; + section: 'elasticsearch' | 'calculation' | 'constants'; +}): OperationDocumentationType { + return { + id, + name, + documentation: { + section, + signature, + description: documentation, + }, + }; +} + +export function buildMetricDocumentationDefinition({ + id, + name, + documentation, +}: { + id: string; + name: string; + documentation?: string; +}): OperationDocumentationType { + return buildDocumentationDefinition({ + id, + name, + documentation: + documentation || + i18n.translate('lensFormulaDocs.metric.documentation.markdown', { + defaultMessage: ` +Returns the {metric} of a field. This function only works for number fields. + +Example: Get the {metric} of price: +\`{metric}(price)\` + +Example: Get the {metric} of price for orders from the UK: +\`{metric}(price, kql='location:UK')\` + `, + values: { + metric: id, + }, + }), + section: 'elasticsearch', + signature: i18n.translate('lensFormulaDocs.metric.signature', { + defaultMessage: 'field: string', + }), + }); +} + +export function buildContextVariableDocumentationDefinition({ + id, + name, + documentation, +}: { + id: string; + name: string; + documentation: string; +}): OperationDocumentationType { + return buildDocumentationDefinition({ + id, + name, + documentation, + section: 'constants', + signature: '', + }); +} diff --git a/packages/kbn-lens-formula-docs/src/operations/interval.ts b/packages/kbn-lens-formula-docs/src/operations/interval.ts new file mode 100644 index 0000000000000..b36f9a34914fc --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/interval.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { buildContextVariableDocumentationDefinition } from './helpers'; + +export const INTERVAL_ID = 'interval'; +export const INTERVAL_NAME = i18n.translate('lensFormulaDocs.interval', { + defaultMessage: 'Date histogram interval', +}); + +export const interval = buildContextVariableDocumentationDefinition({ + id: INTERVAL_ID, + name: INTERVAL_NAME, + documentation: i18n.translate('lensFormulaDocs.interval.help', { + defaultMessage: ` +The specified minimum interval for the date histogram, in milliseconds (ms). + +Example: Dynamically normalize the metric based on bucket interval size: +\`sum(bytes) / interval()\` +`, + }), +}); diff --git a/packages/kbn-lens-formula-docs/src/operations/last_value.ts b/packages/kbn-lens-formula-docs/src/operations/last_value.ts new file mode 100644 index 0000000000000..5705aad8ef090 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/last_value.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { OperationDocumentationType } from './types'; + +export const LAST_VALUE_ID = 'last_value'; +export const LAST_VALUE_NAME = i18n.translate('lensFormulaDocs.lastValue', { + defaultMessage: 'Last value', +}); + +export const lastValue: OperationDocumentationType = { + id: LAST_VALUE_ID, + name: LAST_VALUE_NAME, + documentation: { + section: 'elasticsearch', + signature: i18n.translate('lensFormulaDocs.lastValue.signature', { + defaultMessage: 'field: string', + }), + description: i18n.translate('lensFormulaDocs.lastValue.documentation.markdown', { + defaultMessage: ` +Returns the value of a field from the last document, ordered by the default time field of the data view. + +This function is usefull the retrieve the latest state of an entity. + +Example: Get the current status of server A: +\`last_value(server.status, kql=\'server.name="A"\')\` +`, + }), + }, +}; diff --git a/packages/kbn-lens-formula-docs/src/operations/max.ts b/packages/kbn-lens-formula-docs/src/operations/max.ts new file mode 100644 index 0000000000000..1068d796f1028 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/max.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { buildMetricDocumentationDefinition } from './helpers'; + +export const MAX_ID = 'max'; +export const MAX_NAME = i18n.translate('lensFormulaDocs.max', { + defaultMessage: 'Maximum', +}); + +export const max = buildMetricDocumentationDefinition({ + id: MAX_ID, + name: MAX_NAME, +}); diff --git a/packages/kbn-lens-formula-docs/src/operations/median.ts b/packages/kbn-lens-formula-docs/src/operations/median.ts new file mode 100644 index 0000000000000..7dfdaefa9b86c --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/median.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { buildMetricDocumentationDefinition } from './helpers'; + +export const MEDIAN_ID = 'median'; +export const MEDIAN_NAME = i18n.translate('lensFormulaDocs.median', { + defaultMessage: 'Median', +}); + +export const median = buildMetricDocumentationDefinition({ + id: MEDIAN_ID, + name: MEDIAN_NAME, +}); diff --git a/packages/kbn-lens-formula-docs/src/operations/min.ts b/packages/kbn-lens-formula-docs/src/operations/min.ts new file mode 100644 index 0000000000000..b2f8650d30081 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/min.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { buildMetricDocumentationDefinition } from './helpers'; + +export const MIN_ID = 'min'; +export const MIN_NAME = i18n.translate('lensFormulaDocs.min', { + defaultMessage: 'Minimum', +}); + +export const min = buildMetricDocumentationDefinition({ + id: MIN_ID, + name: MIN_NAME, +}); diff --git a/packages/kbn-lens-formula-docs/src/operations/moving_average.ts b/packages/kbn-lens-formula-docs/src/operations/moving_average.ts new file mode 100644 index 0000000000000..4c3177db93b11 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/moving_average.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { OperationDocumentationType } from './types'; + +export const MOVING_AVERAGE_ID = 'moving_average'; +export const MOVING_AVERAGE_NAME = i18n.translate('lensFormulaDocs.movingAverage', { + defaultMessage: 'Moving average', +}); +export const MOVING_AVERAGE_WINDOW_DEFAULT_VALUE = 5; + +export const movingAverage: OperationDocumentationType = { + id: MOVING_AVERAGE_ID, + name: MOVING_AVERAGE_NAME, + documentation: { + section: 'calculation', + signature: i18n.translate('lensFormulaDocs.moving_average.signature', { + defaultMessage: 'metric: number, [window]: number', + }), + description: i18n.translate('lensFormulaDocs.movingAverage.documentation.markdown', { + defaultMessage: ` +Calculates the moving average of a metric over time, averaging the last n-th values to calculate the current value. To use this function, you need to configure a date histogram dimension as well. +The default window value is {defaultValue}. + +This calculation will be done separately for separate series defined by filters or top values dimensions. + +Takes a named parameter \`window\` which specifies how many last values to include in the average calculation for the current value. + +Example: Smooth a line of measurements: +\`moving_average(sum(bytes), window=5)\` +`, + values: { + defaultValue: MOVING_AVERAGE_WINDOW_DEFAULT_VALUE, + }, + }), + }, +}; diff --git a/packages/kbn-lens-formula-docs/src/operations/normalize_by_unit.ts b/packages/kbn-lens-formula-docs/src/operations/normalize_by_unit.ts new file mode 100644 index 0000000000000..f66768f13a2b5 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/normalize_by_unit.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { OperationDocumentationType } from './types'; + +export const NORMALIZE_BY_UNIT_ID = 'normalize_by_unit'; +export const NORMALIZE_BY_UNIT_NAME = i18n.translate('lensFormulaDocs.timeScale', { + defaultMessage: 'Normalize by unit', +}); + +export const normalizeByUnit: OperationDocumentationType = { + id: NORMALIZE_BY_UNIT_ID, + name: NORMALIZE_BY_UNIT_NAME, + documentation: { + section: 'calculation', + signature: i18n.translate('lensFormulaDocs.time_scale', { + defaultMessage: 'metric: number, unit: s|m|h|d|w|M|y', + }), + description: i18n.translate('lensFormulaDocs.time_scale.documentation.markdown', { + defaultMessage: ` +This advanced function is useful for normalizing counts and sums to a specific time interval. It allows for integration with metrics that are stored already normalized to a specific time interval. + +This function can only be used if there's a date histogram function used in the current chart. + +Example: A ratio comparing an already normalized metric to another metric that needs to be normalized. +\`normalize_by_unit(counter_rate(max(system.diskio.write.bytes)), unit='s') / last_value(apache.status.bytes_per_second)\` +`, + }), + }, +}; diff --git a/packages/kbn-lens-formula-docs/src/operations/now.ts b/packages/kbn-lens-formula-docs/src/operations/now.ts new file mode 100644 index 0000000000000..cb5f1a6686d25 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/now.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { buildContextVariableDocumentationDefinition } from './helpers'; + +export const NOW_ID = 'now'; +export const NOW_NAME = i18n.translate('lensFormulaDocs.now', { + defaultMessage: 'Current now', +}); + +export const now = buildContextVariableDocumentationDefinition({ + id: NOW_ID, + name: NOW_NAME, + documentation: i18n.translate('lensFormulaDocs.now.help', { + defaultMessage: ` +The current now moment used in Kibana expressed in milliseconds (ms). + +Example: How long (in ms) has been the server running since the last restart? +\`now() - last_value(start_time)\` +`, + }), +}); diff --git a/packages/kbn-lens-formula-docs/src/operations/overall_average.ts b/packages/kbn-lens-formula-docs/src/operations/overall_average.ts new file mode 100644 index 0000000000000..328c97fde47d6 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/overall_average.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { OperationDocumentationType } from './types'; + +export const OVERALL_AVERAGE_ID = 'overall_average'; +export const OVERALL_AVERAGE_NAME = i18n.translate('lensFormulaDocs.overallAverage', { + defaultMessage: 'Overall average', +}); + +export const overallAverge: OperationDocumentationType = { + id: OVERALL_AVERAGE_ID, + name: OVERALL_AVERAGE_NAME, + documentation: { + section: 'calculation', + signature: i18n.translate('lensFormulaDocs.overall_metric', { + defaultMessage: 'metric: number', + }), + description: i18n.translate('lensFormulaDocs.overall_average.documentation.markdown', { + defaultMessage: ` +Calculates the average of a metric for all data points of a series in the current chart. A series is defined by a dimension using a date histogram or interval function. +Other dimensions breaking down the data like top values or filter are treated as separate series. + +If no date histograms or interval functions are used in the current chart, \`overall_average\` is calculating the average over all dimensions no matter the used function + +Example: Divergence from the mean: +\`sum(bytes) - overall_average(sum(bytes))\` +`, + }), + }, +}; diff --git a/packages/kbn-lens-formula-docs/src/operations/overall_max.ts b/packages/kbn-lens-formula-docs/src/operations/overall_max.ts new file mode 100644 index 0000000000000..4da02a7f1265f --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/overall_max.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { OperationDocumentationType } from './types'; + +export const OVERALL_MAX_ID = 'overall_max'; +export const OVERALL_MAX_NAME = i18n.translate('lensFormulaDocs.overallMax', { + defaultMessage: 'Overall max', +}); + +export const overallMax: OperationDocumentationType = { + id: OVERALL_MAX_ID, + name: OVERALL_MAX_NAME, + documentation: { + section: 'calculation', + signature: i18n.translate('lensFormulaDocs.overall_metric', { + defaultMessage: 'metric: number', + }), + description: i18n.translate('lensFormulaDocs.overall_max.documentation.markdown', { + defaultMessage: ` +Calculates the maximum of a metric for all data points of a series in the current chart. A series is defined by a dimension using a date histogram or interval function. +Other dimensions breaking down the data like top values or filter are treated as separate series. + +If no date histograms or interval functions are used in the current chart, \`overall_max\` is calculating the maximum over all dimensions no matter the used function + +Example: Percentage of range: +\`(sum(bytes) - overall_min(sum(bytes))) / (overall_max(sum(bytes)) - overall_min(sum(bytes)))\` +`, + }), + }, +}; diff --git a/packages/kbn-lens-formula-docs/src/operations/overall_min.ts b/packages/kbn-lens-formula-docs/src/operations/overall_min.ts new file mode 100644 index 0000000000000..f775f8d8448fa --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/overall_min.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { OperationDocumentationType } from './types'; + +export const OVERALL_MIN_ID = 'overall_min'; +export const OVERALL_MIN_NAME = i18n.translate('lensFormulaDocs.overallMin', { + defaultMessage: 'Overall min', +}); + +export const overallMin: OperationDocumentationType = { + id: OVERALL_MIN_ID, + name: OVERALL_MIN_NAME, + documentation: { + section: 'calculation', + signature: i18n.translate('lensFormulaDocs.overall_metric', { + defaultMessage: 'metric: number', + }), + description: i18n.translate('lensFormulaDocs.overall_min.documentation.markdown', { + defaultMessage: ` +Calculates the minimum of a metric for all data points of a series in the current chart. A series is defined by a dimension using a date histogram or interval function. +Other dimensions breaking down the data like top values or filter are treated as separate series. + +If no date histograms or interval functions are used in the current chart, \`overall_min\` is calculating the minimum over all dimensions no matter the used function + +Example: Percentage of range: +\`(sum(bytes) - overall_min(sum(bytes)) / (overall_max(sum(bytes)) - overall_min(sum(bytes)))\` +`, + }), + }, +}; diff --git a/packages/kbn-lens-formula-docs/src/operations/overall_sum.ts b/packages/kbn-lens-formula-docs/src/operations/overall_sum.ts new file mode 100644 index 0000000000000..b786cda98e4c8 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/overall_sum.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { OperationDocumentationType } from './types'; + +export const OVERALL_SUM_ID = 'overall_sum'; +export const OVERALL_SUM_NAME = i18n.translate('lensFormulaDocs.overallSum', { + defaultMessage: 'Overall sum', +}); + +export const overallSum: OperationDocumentationType = { + id: OVERALL_SUM_ID, + name: OVERALL_SUM_NAME, + documentation: { + section: 'calculation', + signature: i18n.translate('lensFormulaDocs.overall_metric', { + defaultMessage: 'metric: number', + }), + description: i18n.translate('lensFormulaDocs.overall_sum.documentation.markdown', { + defaultMessage: ` +Calculates the sum of a metric of all data points of a series in the current chart. A series is defined by a dimension using a date histogram or interval function. +Other dimensions breaking down the data like top values or filter are treated as separate series. + +If no date histograms or interval functions are used in the current chart, \`overall_sum\` is calculating the sum over all dimensions no matter the used function. + +Example: Percentage of total: +\`sum(bytes) / overall_sum(sum(bytes))\` +`, + }), + }, +}; diff --git a/packages/kbn-lens-formula-docs/src/operations/percentile.ts b/packages/kbn-lens-formula-docs/src/operations/percentile.ts new file mode 100644 index 0000000000000..35c94a0c3d2be --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/percentile.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { OperationDocumentationType } from './types'; + +export const PERCENTILE_ID = 'percentile'; +export const PERCENTILE_NAME = i18n.translate('lensFormulaDocs.percentile', { + defaultMessage: 'Percentile', +}); + +export const percentile: OperationDocumentationType = { + id: PERCENTILE_ID, + name: PERCENTILE_NAME, + documentation: { + section: 'elasticsearch', + signature: i18n.translate('lensFormulaDocs.percentile.signature', { + defaultMessage: 'field: string, [percentile]: number', + }), + description: i18n.translate('lensFormulaDocs.percentile.documentation.markdown', { + defaultMessage: ` +Returns the specified percentile of the values of a field. This is the value n percent of the values occuring in documents are smaller. + +Example: Get the number of bytes larger than 95 % of values: +\`percentile(bytes, percentile=95)\` +`, + }), + }, +}; diff --git a/packages/kbn-lens-formula-docs/src/operations/percentile_ranks.ts b/packages/kbn-lens-formula-docs/src/operations/percentile_ranks.ts new file mode 100644 index 0000000000000..2131131a2bf00 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/percentile_ranks.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { OperationDocumentationType } from './types'; + +export const PERCENTILE_RANK_ID = 'percentile_rank'; +export const PERCENTILE_RANK_NAME = i18n.translate('lensFormulaDocs.percentileRank', { + defaultMessage: 'Percentile rank', +}); + +export const percentileRank: OperationDocumentationType = { + id: PERCENTILE_RANK_ID, + name: PERCENTILE_RANK_NAME, + documentation: { + section: 'elasticsearch', + signature: i18n.translate('lensFormulaDocs.percentileRanks.signature', { + defaultMessage: 'field: string, [value]: number', + }), + description: i18n.translate('lensFormulaDocs.percentileRanks.documentation.markdown', { + defaultMessage: ` +Returns the percentage of values which are below a certain value. For example, if a value is greater than or equal to 95% of the observed values it is said to be at the 95th percentile rank + +Example: Get the percentage of values which are below of 100: +\`percentile_rank(bytes, value=100)\` +`, + }), + }, +}; diff --git a/packages/kbn-lens-formula-docs/src/operations/std_deviation.ts b/packages/kbn-lens-formula-docs/src/operations/std_deviation.ts new file mode 100644 index 0000000000000..6c0b0d1604b5b --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/std_deviation.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { buildMetricDocumentationDefinition } from './helpers'; + +export const STD_DEVIATION_ID = 'standard_deviation'; +export const STD_DEVIATION_NAME = i18n.translate('lensFormulaDocs.standardDeviation', { + defaultMessage: 'Standard deviation', +}); + +export const stdDeviation = buildMetricDocumentationDefinition({ + id: STD_DEVIATION_ID, + name: STD_DEVIATION_NAME, + documentation: i18n.translate('lensFormulaDocs.standardDeviation.documentation.markdown', { + defaultMessage: ` +Returns the amount of variation or dispersion of the field. The function works only for number fields. + +#### Examples + +To get the standard deviation of price, use \`standard_deviation(price)\`. + +To get the variance of price for orders from the UK, use \`square(standard_deviation(price, kql='location:UK'))\`. +`, + }), +}); diff --git a/packages/kbn-lens-formula-docs/src/operations/sum.ts b/packages/kbn-lens-formula-docs/src/operations/sum.ts new file mode 100644 index 0000000000000..8c7882b213a09 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/sum.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { buildMetricDocumentationDefinition } from './helpers'; + +export const SUM_ID = 'sum'; +export const SUM_NAME = i18n.translate('lensFormulaDocs.sum', { + defaultMessage: 'Sum', +}); + +export const sum = buildMetricDocumentationDefinition({ + id: SUM_ID, + name: SUM_NAME, +}); diff --git a/packages/kbn-lens-formula-docs/src/operations/time_range.ts b/packages/kbn-lens-formula-docs/src/operations/time_range.ts new file mode 100644 index 0000000000000..58107cbee1587 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/time_range.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import { buildContextVariableDocumentationDefinition } from './helpers'; + +export const TIME_RANGE_ID = 'time_range'; +export const TIME_RANGE_NAME = i18n.translate('lensFormulaDocs.time_range', { + defaultMessage: 'Time range', +}); + +export const timeRange = buildContextVariableDocumentationDefinition({ + id: TIME_RANGE_ID, + name: TIME_RANGE_NAME, + documentation: i18n.translate('lensFormulaDocs.timeRange.help', { + defaultMessage: ` +The specified time range, in milliseconds (ms). + +Example: How long is the current time range? +\`time_range()\` +`, + }), +}); diff --git a/packages/kbn-lens-formula-docs/src/operations/types.ts b/packages/kbn-lens-formula-docs/src/operations/types.ts new file mode 100644 index 0000000000000..1351a9e9db28b --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/operations/types.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export interface OperationDocumentationType { + id: string; + name: string; + documentation: { + signature: string; + description: string; + section: 'elasticsearch' | 'calculation' | 'constants'; + }; +} diff --git a/packages/kbn-lens-formula-docs/src/sections/calculations.ts b/packages/kbn-lens-formula-docs/src/sections/calculations.ts new file mode 100644 index 0000000000000..824e171087ff3 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/sections/calculations.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; + +export const calculationsSection = { + label: i18n.translate('lensFormulaDocs.documentation.columnCalculationSection', { + defaultMessage: 'Column calculations', + }), + description: i18n.translate('lensFormulaDocs.documentation.columnCalculationSectionDescription', { + defaultMessage: + 'These functions are executed for each row, but are provided with the whole column as context. This is also known as a window function.', + }), +}; diff --git a/packages/kbn-lens-formula-docs/src/sections/common.ts b/packages/kbn-lens-formula-docs/src/sections/common.ts new file mode 100644 index 0000000000000..050b3edc810b9 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/sections/common.ts @@ -0,0 +1,106 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; + +export const commonFormulas = { + label: i18n.translate('lensFormulaDocs.frequentlyUsedHeading', { + defaultMessage: 'Common formulas', + }), + description: i18n.translate('lensFormulaDocs.CommonFormulaDocumentation', { + defaultMessage: `The most common formulas are dividing two values to produce a percent. To display accurately, set "value format" to "percent".`, + }), + items: [ + { + label: i18n.translate('lensFormulaDocs.documentation.filterRatio', { + defaultMessage: 'Filter ratio', + }), + description: i18n.translate('lensFormulaDocs.documentation.filterRatioDescription.markdown', { + defaultMessage: `### Filter ratio: + +Use \`kql=''\` to filter one set of documents and compare it to other documents within the same grouping. +For example, to see how the error rate changes over time: + +\`\`\` +count(kql='response.status_code > 400') / count() +\`\`\` + `, + + description: + 'Text is in markdown. Do not translate function names, special characters, or field names like sum(bytes)', + }), + }, + { + label: i18n.translate('lensFormulaDocs.documentation.weekOverWeek', { + defaultMessage: 'Week over week', + }), + description: i18n.translate( + 'lensFormulaDocs.documentation.weekOverWeekDescription.markdown', + { + defaultMessage: `### Week over week: + +Use \`shift='1w'\` to get the value of each grouping from +the previous week. Time shift should not be used with the *Top values* function. + +\`\`\` +percentile(system.network.in.bytes, percentile=99) / +percentile(system.network.in.bytes, percentile=99, shift='1w') +\`\`\` + `, + + description: + 'Text is in markdown. Do not translate function names, special characters, or field names like sum(bytes)', + } + ), + }, + { + label: i18n.translate('lensFormulaDocs.documentation.percentOfTotal', { + defaultMessage: 'Percent of total', + }), + description: i18n.translate( + 'lensFormulaDocs.documentation.percentOfTotalDescription.markdown', + { + defaultMessage: `### Percent of total + +Formulas can calculate \`overall_sum\` for all the groupings, +which lets you convert each grouping into a percent of total: + +\`\`\` +sum(products.base_price) / overall_sum(sum(products.base_price)) +\`\`\` + `, + + description: + 'Text is in markdown. Do not translate function names, special characters, or field names like sum(bytes)', + } + ), + }, + { + label: i18n.translate('lensFormulaDocs.documentation.recentChange', { + defaultMessage: 'Recent change', + }), + description: i18n.translate( + 'lensFormulaDocs.documentation.recentChangeDescription.markdown', + { + defaultMessage: `### Recent change + +Use \`reducedTimeRange='30m'\` to add an additional filter on the time range of a metric aligned with the end of the global time range. This can be used to calculate how much a value changed recently. + +\`\`\` +max(system.network.in.bytes, reducedTimeRange="30m") +- min(system.network.in.bytes, reducedTimeRange="30m") +\`\`\` + `, + + description: + 'Text is in markdown. Do not translate function names, special characters, or field names like sum(bytes)', + } + ), + }, + ], +}; diff --git a/packages/kbn-lens-formula-docs/src/sections/comparison.ts b/packages/kbn-lens-formula-docs/src/sections/comparison.ts new file mode 100644 index 0000000000000..152b521301832 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/sections/comparison.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; + +export const comparisonSection = { + label: i18n.translate('lensFormulaDocs.documentation.comparisonSection', { + defaultMessage: 'Comparison', + }), + description: i18n.translate('lensFormulaDocs.documentation.comparisonSectionDescription', { + defaultMessage: 'These functions are used to perform value comparison.', + }), +}; diff --git a/packages/kbn-lens-formula-docs/src/sections/context.ts b/packages/kbn-lens-formula-docs/src/sections/context.ts new file mode 100644 index 0000000000000..c4bb989d6b5e7 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/sections/context.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; + +export const contextSection = { + label: i18n.translate('lensFormulaDocs.documentation.constantsSection', { + defaultMessage: 'Kibana context', + }), + description: i18n.translate('lensFormulaDocs.documentation.constantsSectionDescription', { + defaultMessage: + 'These functions are used to retrieve Kibana context variables, which are the date histogram `interval`, the current `now` and the selected `time_range` and help you to compute date math operations.', + }), +}; diff --git a/packages/kbn-lens-formula-docs/src/sections/elasticsearch.ts b/packages/kbn-lens-formula-docs/src/sections/elasticsearch.ts new file mode 100644 index 0000000000000..2570c96f08f70 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/sections/elasticsearch.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; + +export const elasticsearchSection = { + label: i18n.translate('lensFormulaDocs.documentation.elasticsearchSection', { + defaultMessage: 'Elasticsearch', + }), + description: i18n.translate('lensFormulaDocs.documentation.elasticsearchSectionDescription', { + defaultMessage: + 'These functions will be executed on the raw documents for each row of the resulting table, aggregating all documents matching the break down dimensions into a single value.', + }), +}; diff --git a/packages/kbn-lens-formula-docs/src/sections/how_to.ts b/packages/kbn-lens-formula-docs/src/sections/how_to.ts new file mode 100644 index 0000000000000..76eb91023013e --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/sections/how_to.ts @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; + +export const howToSection = i18n.translate('lensFormulaDocs.documentation.markdown', { + defaultMessage: `## How it works + +Lens formulas let you do math using a combination of Elasticsearch aggregations and +math functions. There are three main types of functions: + +* Elasticsearch metrics, like \`sum(bytes)\` +* Time series functions use Elasticsearch metrics as input, like \`cumulative_sum()\` +* Math functions like \`round()\` + +An example formula that uses all of these: + +\`\`\` +round(100 * moving_average( +average(cpu.load.pct), +window=10, +kql='datacenter.name: east*' +)) +\`\`\` + +Elasticsearch functions take a field name, which can be in quotes. \`sum(bytes)\` is the same +as \`sum('bytes')\`. + +Some functions take named arguments, like \`moving_average(count(), window=5)\`. + +Elasticsearch metrics can be filtered using KQL or Lucene syntax. To add a filter, use the named +parameter \`kql='field: value'\` or \`lucene=''\`. Always use single quotes when writing KQL or Lucene +queries. If your search has a single quote in it, use a backslash to escape, like: \`kql='Women's'\' + +Math functions can take positional arguments, like pow(count(), 3) is the same as count() * count() * count() + +Use the symbols +, -, /, and * to perform basic math. +`, + description: + 'Text is in markdown. Do not translate function names, special characters, or field names like sum(bytes)', +}); diff --git a/packages/kbn-lens-formula-docs/src/sections/index.ts b/packages/kbn-lens-formula-docs/src/sections/index.ts new file mode 100644 index 0000000000000..dafa94b8269f0 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/sections/index.ts @@ -0,0 +1,25 @@ +/* + * Copyright 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 { elasticsearchSection } from './elasticsearch'; +import { commonFormulas } from './common'; +import { comparisonSection } from './comparison'; +import { mathSection } from './math'; +import { calculationsSection } from './calculations'; +import { contextSection } from './context'; +import { howToSection } from './how_to'; + +export const sections = { + howTo: howToSection, + elasticsearch: elasticsearchSection, + common: commonFormulas, + comparison: comparisonSection, + math: mathSection, + calculations: calculationsSection, + context: contextSection, +}; diff --git a/packages/kbn-lens-formula-docs/src/sections/math.ts b/packages/kbn-lens-formula-docs/src/sections/math.ts new file mode 100644 index 0000000000000..d3fcaf6a15b93 --- /dev/null +++ b/packages/kbn-lens-formula-docs/src/sections/math.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; + +export const mathSection = { + label: i18n.translate('lensFormulaDocs.documentation.mathSection', { + defaultMessage: 'Math', + }), + description: i18n.translate('lensFormulaDocs.documentation.mathSectionDescription', { + defaultMessage: + 'These functions will be executed for reach row of the resulting table using single values from the same row calculated using other functions.', + }), +}; diff --git a/packages/kbn-lens-formula-docs/tsconfig.json b/packages/kbn-lens-formula-docs/tsconfig.json new file mode 100644 index 0000000000000..d28d082af4d18 --- /dev/null +++ b/packages/kbn-lens-formula-docs/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": ["jest", "node"] + }, + "include": ["**/*.ts"], + "exclude": ["target/**/*"], + "kbn_references": [ + "@kbn/i18n", + ] +} diff --git a/tsconfig.base.json b/tsconfig.base.json index 178f70c927e28..d241aace37840 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -966,6 +966,8 @@ "@kbn/language-documentation-popover/*": ["packages/kbn-language-documentation-popover/*"], "@kbn/lens-embeddable-utils": ["packages/kbn-lens-embeddable-utils"], "@kbn/lens-embeddable-utils/*": ["packages/kbn-lens-embeddable-utils/*"], + "@kbn/lens-formula-docs": ["packages/kbn-lens-formula-docs"], + "@kbn/lens-formula-docs/*": ["packages/kbn-lens-formula-docs/*"], "@kbn/lens-plugin": ["x-pack/plugins/lens"], "@kbn/lens-plugin/*": ["x-pack/plugins/lens/*"], "@kbn/license-api-guard-plugin": ["x-pack/plugins/license_api_guard"], diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/counter_rate.tsx b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/counter_rate.tsx index a35669c01ca33..93ab93de22f66 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/counter_rate.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/counter_rate.tsx @@ -6,6 +6,7 @@ */ import { i18n } from '@kbn/i18n'; +import { COUNTER_RATE_ID, COUNTER_RATE_NAME } from '@kbn/lens-formula-docs'; import { FormattedIndexPatternColumn, ReferenceBasedIndexPatternColumn } from '../column_types'; import { FormBasedLayer } from '../../../types'; import { @@ -35,18 +36,16 @@ const ofName = buildLabelFunction((name?: string) => { export type CounterRateIndexPatternColumn = FormattedIndexPatternColumn & ReferenceBasedIndexPatternColumn & { - operationType: 'counter_rate'; + operationType: typeof COUNTER_RATE_ID; }; export const counterRateOperation: OperationDefinition< CounterRateIndexPatternColumn, 'fullReference' > = { - type: 'counter_rate', + type: COUNTER_RATE_ID, priority: 1, - displayName: i18n.translate('xpack.lens.indexPattern.counterRate', { - defaultMessage: 'Counter rate', - }), + displayName: COUNTER_RATE_NAME, input: 'fullReference', selectionStyle: 'field', requiredReferences: [ @@ -134,24 +133,6 @@ export const counterRateOperation: OperationDefinition< }, timeScalingMode: 'mandatory', filterable: true, - documentation: { - section: 'calculation', - signature: i18n.translate('xpack.lens.indexPattern.counterRate.signature', { - defaultMessage: 'metric: number', - }), - description: i18n.translate('xpack.lens.indexPattern.counterRate.documentation.markdown', { - defaultMessage: ` -Calculates the rate of an ever increasing counter. This function will only yield helpful results on counter metric fields which contain a measurement of some kind monotonically growing over time. -If the value does get smaller, it will interpret this as a counter reset. To get most precise results, \`counter_rate\` should be calculated on the \`max\` of a field. - -This calculation will be done separately for separate series defined by filters or top values dimensions. -It uses the current interval when used in Formula. - -Example: Visualize the rate of bytes received over time by a memcached server: -\`counter_rate(max(memcached.stats.read.bytes))\` - `, - }), - }, quickFunctionDocumentation: i18n.translate( 'xpack.lens.indexPattern.counterRate.documentation.quick', { diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/cumulative_sum.tsx b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/cumulative_sum.tsx index 916ecd6f965e6..d7c13d43ba163 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/cumulative_sum.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/cumulative_sum.tsx @@ -6,6 +6,7 @@ */ import { i18n } from '@kbn/i18n'; +import { CUMULATIVE_SUM_ID, CUMULATIVE_SUM_NAME } from '@kbn/lens-formula-docs'; import { FormattedIndexPatternColumn, ReferenceBasedIndexPatternColumn } from '../column_types'; import { FormBasedLayer } from '../../../types'; import { @@ -35,18 +36,16 @@ const ofName = buildLabelFunction((name?: string) => { export type CumulativeSumIndexPatternColumn = FormattedIndexPatternColumn & ReferenceBasedIndexPatternColumn & { - operationType: 'cumulative_sum'; + operationType: typeof CUMULATIVE_SUM_ID; }; export const cumulativeSumOperation: OperationDefinition< CumulativeSumIndexPatternColumn, 'fullReference' > = { - type: 'cumulative_sum', + type: CUMULATIVE_SUM_ID, priority: 1, - displayName: i18n.translate('xpack.lens.indexPattern.cumulativeSum', { - defaultMessage: 'Cumulative sum', - }), + displayName: CUMULATIVE_SUM_NAME, input: 'fullReference', selectionStyle: 'field', requiredReferences: [ @@ -127,22 +126,6 @@ export const cumulativeSumOperation: OperationDefinition< return checkForDateHistogram(layer, opName)?.join(', '); }, filterable: true, - documentation: { - section: 'calculation', - signature: i18n.translate('xpack.lens.indexPattern.cumulative_sum.signature', { - defaultMessage: 'metric: number', - }), - description: i18n.translate('xpack.lens.indexPattern.cumulativeSum.documentation.markdown', { - defaultMessage: ` -Calculates the cumulative sum of a metric over time, adding all previous values of a series to each value. To use this function, you need to configure a date histogram dimension as well. - -This calculation will be done separately for separate series defined by filters or top values dimensions. - -Example: Visualize the received bytes accumulated over time: -\`cumulative_sum(sum(bytes))\` - `, - }), - }, quickFunctionDocumentation: i18n.translate( 'xpack.lens.indexPattern.cumulativeSum.documentation.quick', { diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/differences.tsx b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/differences.tsx index 9f592be860d77..59943a23ece5e 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/differences.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/differences.tsx @@ -6,6 +6,7 @@ */ import { i18n } from '@kbn/i18n'; +import { DIFFERENCES_ID, DIFFERENCES_NAME } from '@kbn/lens-formula-docs'; import { FormattedIndexPatternColumn, ReferenceBasedIndexPatternColumn } from '../column_types'; import { FormBasedLayer } from '../../../types'; import { @@ -19,8 +20,6 @@ import { import { OperationDefinition } from '..'; import { getFormatFromPreviousColumn, getFilter } from '../helpers'; -const OPERATION_NAME = 'differences'; - const ofName = buildLabelFunction((name?: string) => { return i18n.translate('xpack.lens.indexPattern.derivativeOf', { defaultMessage: 'Differences of {name}', @@ -36,18 +35,16 @@ const ofName = buildLabelFunction((name?: string) => { export type DerivativeIndexPatternColumn = FormattedIndexPatternColumn & ReferenceBasedIndexPatternColumn & { - operationType: typeof OPERATION_NAME; + operationType: typeof DIFFERENCES_ID; }; export const derivativeOperation: OperationDefinition< DerivativeIndexPatternColumn, 'fullReference' > = { - type: OPERATION_NAME, + type: DIFFERENCES_ID, priority: 1, - displayName: i18n.translate('xpack.lens.indexPattern.derivative', { - defaultMessage: 'Differences', - }), + displayName: DIFFERENCES_NAME, input: 'fullReference', selectionStyle: 'full', requiredReferences: [ @@ -78,7 +75,7 @@ export const derivativeOperation: OperationDefinition< return { label: ofName(ref?.label, previousColumn?.timeScale, previousColumn?.timeShift), dataType: 'number', - operationType: OPERATION_NAME, + operationType: DIFFERENCES_ID, isBucketed: false, scale: 'ratio', references: referenceIds, @@ -114,23 +111,6 @@ export const derivativeOperation: OperationDefinition< }, timeScalingMode: 'optional', filterable: true, - documentation: { - section: 'calculation', - signature: i18n.translate('xpack.lens.indexPattern.differences.signature', { - defaultMessage: 'metric: number', - }), - description: i18n.translate('xpack.lens.indexPattern.differences.documentation.markdown', { - defaultMessage: ` -Calculates the difference to the last value of a metric over time. To use this function, you need to configure a date histogram dimension as well. -Differences requires the data to be sequential. If your data is empty when using differences, try increasing the date histogram interval. - -This calculation will be done separately for separate series defined by filters or top values dimensions. - -Example: Visualize the change in bytes received over time: -\`differences(sum(bytes))\` - `, - }), - }, quickFunctionDocumentation: i18n.translate( 'xpack.lens.indexPattern.differences.documentation.quick', { diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/moving_average.tsx b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/moving_average.tsx index 2594cc558f026..a2689e7d2209c 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/moving_average.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/moving_average.tsx @@ -9,6 +9,11 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import React, { useState } from 'react'; import { EuiFieldNumber, EuiFormRow } from '@elastic/eui'; +import { + MOVING_AVERAGE_NAME, + MOVING_AVERAGE_ID, + MOVING_AVERAGE_WINDOW_DEFAULT_VALUE, +} from '@kbn/lens-formula-docs'; import { useDebounceWithOptions } from '../../../../../shared_components'; import { FormattedIndexPatternColumn, ReferenceBasedIndexPatternColumn } from '../column_types'; import { FormBasedLayer } from '../../../types'; @@ -37,11 +42,9 @@ const ofName = buildLabelFunction((name?: string) => { }); }); -const WINDOW_DEFAULT_VALUE = 5; - export type MovingAverageIndexPatternColumn = FormattedIndexPatternColumn & ReferenceBasedIndexPatternColumn & { - operationType: 'moving_average'; + operationType: typeof MOVING_AVERAGE_ID; params: { window: number; }; @@ -51,11 +54,9 @@ export const movingAverageOperation: OperationDefinition< MovingAverageIndexPatternColumn, 'fullReference' > = { - type: 'moving_average', + type: MOVING_AVERAGE_ID, priority: 1, - displayName: i18n.translate('xpack.lens.indexPattern.movingAverage', { - defaultMessage: 'Moving average', - }), + displayName: MOVING_AVERAGE_NAME, input: 'fullReference', selectionStyle: 'full', requiredReferences: [ @@ -65,7 +66,12 @@ export const movingAverageOperation: OperationDefinition< }, ], operationParams: [ - { name: 'window', type: 'number', required: false, defaultValue: WINDOW_DEFAULT_VALUE }, + { + name: 'window', + type: 'number', + required: false, + defaultValue: MOVING_AVERAGE_WINDOW_DEFAULT_VALUE, + }, ], getPossibleOperation: (indexPattern) => { if (hasDateField(indexPattern)) { @@ -86,7 +92,7 @@ export const movingAverageOperation: OperationDefinition< }, buildColumn: ({ referenceIds, previousColumn, layer }, columnParams) => { const metric = layer.columns[referenceIds[0]]; - const window = columnParams?.window ?? WINDOW_DEFAULT_VALUE; + const window = columnParams?.window ?? MOVING_AVERAGE_WINDOW_DEFAULT_VALUE; return { label: ofName(metric?.label, previousColumn?.timeScale, previousColumn?.timeShift), @@ -135,28 +141,6 @@ export const movingAverageOperation: OperationDefinition< }, timeScalingMode: 'optional', filterable: true, - documentation: { - section: 'calculation', - signature: i18n.translate('xpack.lens.indexPattern.moving_average.signature', { - defaultMessage: 'metric: number, [window]: number', - }), - description: i18n.translate('xpack.lens.indexPattern.movingAverage.documentation.markdown', { - defaultMessage: ` -Calculates the moving average of a metric over time, averaging the last n-th values to calculate the current value. To use this function, you need to configure a date histogram dimension as well. -The default window value is {defaultValue}. - -This calculation will be done separately for separate series defined by filters or top values dimensions. - -Takes a named parameter \`window\` which specifies how many last values to include in the average calculation for the current value. - -Example: Smooth a line of measurements: -\`moving_average(sum(bytes), window=5)\` - `, - values: { - defaultValue: WINDOW_DEFAULT_VALUE, - }, - }), - }, quickFunctionDocumentation: i18n.translate( 'xpack.lens.indexPattern.movingAverage.documentation.quick', { diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/overall_metric.tsx b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/overall_metric.tsx index f2314dbdc3d58..68c7f18483d12 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/overall_metric.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/overall_metric.tsx @@ -6,6 +6,20 @@ */ import { i18n } from '@kbn/i18n'; +import { + AVG_ID, + MAX_ID, + MIN_ID, + OVERALL_AVERAGE_ID, + OVERALL_AVERAGE_NAME, + OVERALL_MAX_ID, + OVERALL_MAX_NAME, + OVERALL_MIN_ID, + OVERALL_MIN_NAME, + OVERALL_SUM_ID, + OVERALL_SUM_NAME, + SUM_ID, +} from '@kbn/lens-formula-docs'; import type { FormattedIndexPatternColumn, ReferenceBasedIndexPatternColumn, @@ -19,22 +33,22 @@ type OverallMetricIndexPatternColumn = FormattedIndexPatternCo operationType: T; }; -export type OverallSumIndexPatternColumn = OverallMetricIndexPatternColumn<'overall_sum'>; -export type OverallMinIndexPatternColumn = OverallMetricIndexPatternColumn<'overall_min'>; -export type OverallMaxIndexPatternColumn = OverallMetricIndexPatternColumn<'overall_max'>; -export type OverallAverageIndexPatternColumn = OverallMetricIndexPatternColumn<'overall_average'>; +export type OverallSumIndexPatternColumn = OverallMetricIndexPatternColumn; +export type OverallMinIndexPatternColumn = OverallMetricIndexPatternColumn; +export type OverallMaxIndexPatternColumn = OverallMetricIndexPatternColumn; +export type OverallAverageIndexPatternColumn = OverallMetricIndexPatternColumn< + typeof OVERALL_AVERAGE_ID +>; function buildOverallMetricOperation>({ type, displayName, ofName, - description, metric, }: { type: T['operationType']; displayName: string; ofName: (name?: string) => string; - description: string; metric: string; }): OperationDefinition { return { @@ -90,21 +104,12 @@ function buildOverallMetricOperation({ - type: 'overall_sum', - displayName: i18n.translate('xpack.lens.indexPattern.overallSum', { - defaultMessage: 'Overall sum', - }), + type: OVERALL_SUM_ID, + displayName: OVERALL_SUM_NAME, ofName: (name?: string) => { return i18n.translate('xpack.lens.indexPattern.overallSumOf', { defaultMessage: 'Overall sum of {name}', @@ -117,25 +122,12 @@ export const overallSumOperation = buildOverallMetricOperation({ - type: 'overall_min', - displayName: i18n.translate('xpack.lens.indexPattern.overallMin', { - defaultMessage: 'Overall min', - }), + type: OVERALL_MIN_ID, + displayName: OVERALL_MIN_NAME, ofName: (name?: string) => { return i18n.translate('xpack.lens.indexPattern.overallMinOf', { defaultMessage: 'Overall min of {name}', @@ -148,25 +140,12 @@ export const overallMinOperation = buildOverallMetricOperation({ - type: 'overall_max', - displayName: i18n.translate('xpack.lens.indexPattern.overallMax', { - defaultMessage: 'Overall max', - }), + type: OVERALL_MAX_ID, + displayName: OVERALL_MAX_NAME, ofName: (name?: string) => { return i18n.translate('xpack.lens.indexPattern.overallMaxOf', { defaultMessage: 'Overall max of {name}', @@ -179,26 +158,13 @@ export const overallMaxOperation = buildOverallMetricOperation({ - type: 'overall_average', - displayName: i18n.translate('xpack.lens.indexPattern.overallMax', { - defaultMessage: 'Overall max', - }), + type: OVERALL_AVERAGE_ID, + displayName: OVERALL_AVERAGE_NAME, ofName: (name?: string) => { return i18n.translate('xpack.lens.indexPattern.overallAverageOf', { defaultMessage: 'Overall average of {name}', @@ -211,16 +177,5 @@ export const overallAverageOperation = }, }); }, - metric: 'average', - description: i18n.translate('xpack.lens.indexPattern.overall_average.documentation.markdown', { - defaultMessage: ` -Calculates the average of a metric for all data points of a series in the current chart. A series is defined by a dimension using a date histogram or interval function. -Other dimensions breaking down the data like top values or filter are treated as separate series. - -If no date histograms or interval functions are used in the current chart, \`overall_average\` is calculating the average over all dimensions no matter the used function - -Example: Divergence from the mean: -\`sum(bytes) - overall_average(sum(bytes))\` - `, - }), + metric: AVG_ID, }); diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/time_scale.tsx b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/time_scale.tsx index 5915941938737..3ccb3e0808129 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/time_scale.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/calculations/time_scale.tsx @@ -6,6 +6,7 @@ */ import { i18n } from '@kbn/i18n'; +import { NORMALIZE_BY_UNIT_ID, NORMALIZE_BY_UNIT_NAME } from '@kbn/lens-formula-docs'; import type { FormattedIndexPatternColumn, ReferenceBasedIndexPatternColumn, @@ -15,19 +16,9 @@ import type { OperationDefinition } from '..'; import { combineErrorMessages, getFormatFromPreviousColumn } from '../helpers'; import { FormBasedLayer } from '../../../types'; -type OverallMetricIndexPatternColumn = FormattedIndexPatternColumn & - ReferenceBasedIndexPatternColumn & { - operationType: T; - }; - -export type OverallSumIndexPatternColumn = OverallMetricIndexPatternColumn<'overall_sum'>; -export type OverallMinIndexPatternColumn = OverallMetricIndexPatternColumn<'overall_min'>; -export type OverallMaxIndexPatternColumn = OverallMetricIndexPatternColumn<'overall_max'>; -export type OverallAverageIndexPatternColumn = OverallMetricIndexPatternColumn<'overall_average'>; - export type TimeScaleIndexPatternColumn = FormattedIndexPatternColumn & ReferenceBasedIndexPatternColumn & { - operationType: 'normalize_by_unit'; + operationType: typeof NORMALIZE_BY_UNIT_ID; params: { unit?: string; }; @@ -35,11 +26,9 @@ export type TimeScaleIndexPatternColumn = FormattedIndexPatternColumn & export const timeScaleOperation: OperationDefinition = { - type: 'normalize_by_unit', + type: NORMALIZE_BY_UNIT_ID, priority: 1, - displayName: i18n.translate('xpack.lens.indexPattern.timeScale', { - defaultMessage: 'Normalize by unit', - }), + displayName: NORMALIZE_BY_UNIT_NAME, input: 'fullReference', selectionStyle: 'hidden', requiredReferences: [ @@ -57,7 +46,7 @@ export const timeScaleOperation: OperationDefinition { - return 'normalize_by_unit'; + return NORMALIZE_BY_UNIT_ID; }, toExpression: (layer, columnId) => { const currentColumn = layer.columns[columnId] as unknown as TimeScaleIndexPatternColumn; @@ -85,9 +74,9 @@ export const timeScaleOperation: OperationDefinition { return { - label: 'Normalize by unit', + label: NORMALIZE_BY_UNIT_NAME, dataType: 'number', - operationType: 'normalize_by_unit', + operationType: NORMALIZE_BY_UNIT_ID, isBucketed: false, scale: 'ratio', references: referenceIds, @@ -102,13 +91,7 @@ export const timeScaleOperation: OperationDefinition { return combineErrorMessages([ - getErrorsForDateReference( - layer, - columnId, - i18n.translate('xpack.lens.indexPattern.timeScale', { - defaultMessage: 'Normalize by unit', - }) - ), + getErrorsForDateReference(layer, columnId, NORMALIZE_BY_UNIT_NAME), !(layer.columns[columnId] as TimeScaleIndexPatternColumn).params.unit ? [ i18n.translate('xpack.lens.indexPattern.timeScale.missingUnit', { @@ -129,21 +112,4 @@ export const timeScaleOperation: OperationDefinition = { - type: OPERATION_TYPE, - displayName: i18n.translate('xpack.lens.indexPattern.cardinality', { - defaultMessage: 'Unique count', - }), + type: CARDINALITY_ID, + displayName: CARDINALITY_NAME, allowAsReference: true, input: 'field', getPossibleOperationForField: ({ @@ -123,7 +121,7 @@ export const cardinalityOperation: OperationDefinition< return { label: ofName(field.displayName, previousColumn?.timeShift, previousColumn?.reducedTimeRange), dataType: 'number', - operationType: OPERATION_TYPE, + operationType: CARDINALITY_ID, scale: SCALE, sourceField: field.name, isBucketed: IS_BUCKETED, @@ -205,23 +203,6 @@ export const cardinalityOperation: OperationDefinition< sourceField: field.name, }; }, - documentation: { - section: 'elasticsearch', - signature: i18n.translate('xpack.lens.indexPattern.cardinality.signature', { - defaultMessage: 'field: string', - }), - description: i18n.translate('xpack.lens.indexPattern.cardinality.documentation.markdown', { - defaultMessage: ` -Calculates the number of unique values of a specified field. Works for number, string, date and boolean values. - -Example: Calculate the number of different products: -\`unique_count(product.name)\` - -Example: Calculate the number of different products from the "clothes" group: -\`unique_count(product.name, kql='product.group=clothes')\` - `, - }), - }, quickFunctionDocumentation: i18n.translate( 'xpack.lens.indexPattern.cardinality.documentation.quick', { diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/count.tsx b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/count.tsx index 142e38a144dbb..94b1b36193aed 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/count.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/count.tsx @@ -11,6 +11,7 @@ import { euiThemeVars } from '@kbn/ui-theme'; import { EuiSwitch, EuiText } from '@elastic/eui'; import { AggFunctionsMapping } from '@kbn/data-plugin/public'; import { buildExpressionFunction } from '@kbn/expressions-plugin/public'; +import { COUNT_ID, COUNT_NAME } from '@kbn/lens-formula-docs'; import { TimeScaleUnit } from '../../../../../common/expressions'; import { OperationDefinition, ParamEditorProps } from '.'; import { FieldBasedIndexPatternColumn, ValueFormatConfig } from './column_types'; @@ -72,7 +73,7 @@ function ofName( } export type CountIndexPatternColumn = FieldBasedIndexPatternColumn & { - operationType: 'count'; + operationType: typeof COUNT_ID; params?: { emptyAsNull?: boolean; format?: ValueFormatConfig; @@ -83,10 +84,8 @@ const SCALE = 'ratio'; const IS_BUCKETED = false; export const countOperation: OperationDefinition = { - type: 'count', - displayName: i18n.translate('xpack.lens.indexPattern.count', { - defaultMessage: 'Count', - }), + type: COUNT_ID, + displayName: COUNT_NAME, input: 'field', getErrorMessage: (layer, columnId, indexPattern) => combineErrorMessages([ @@ -130,7 +129,7 @@ export const countOperation: OperationDefinition('count', previousColumn) + previousColumn && isColumnOfType(COUNT_ID, previousColumn) ? previousColumn.params?.emptyAsNull : !columnParams?.usedInMath, }, @@ -232,25 +231,6 @@ export const countOperation: OperationDefinition { - const fnDescription = getFunctionDescriptionAndExamples(key, operationDefinitionMap); + const fnDescription = getFunctionDescriptionAndExamples(key); return { label: key, description: ( @@ -47,15 +51,12 @@ function createNewSection( }; } -function getFunctionDescriptionAndExamples( - label: string, - operationDefinitionMap: Record -) { +function getFunctionDescriptionAndExamples(label: string) { if (tinymathFunctions[label]) { const [description, examples] = tinymathFunctions[label].help.split(`\`\`\``); return `${description.replace(/\n/g, '\n\n')}${examples ? `\`\`\`${examples}\`\`\`` : ''}`; } - return operationDefinitionMap[label].documentation?.description; + return documentationMap[label].documentation?.description; } export function getDocumentationSections({ @@ -79,120 +80,14 @@ export function getDocumentationSections({ }); helpGroups.push({ - label: i18n.translate('xpack.lens.formulaFrequentlyUsedHeading', { - defaultMessage: 'Common formulas', - }), - description: i18n.translate('xpack.lens.formulaCommonFormulaDocumentation', { - defaultMessage: `The most common formulas are dividing two values to produce a percent. To display accurately, set "value format" to "percent".`, - }), - - items: [ - { - label: i18n.translate('xpack.lens.formulaDocumentation.filterRatio', { - defaultMessage: 'Filter ratio', - }), - description: ( - - ), - }, - { - label: i18n.translate('xpack.lens.formulaDocumentation.weekOverWeek', { - defaultMessage: 'Week over week', - }), - description: ( - - ), - }, - { - label: i18n.translate('xpack.lens.formulaDocumentation.percentOfTotal', { - defaultMessage: 'Percent of total', - }), - description: ( - - ), - }, - { - label: i18n.translate('xpack.lens.formulaDocumentation.recentChange', { - defaultMessage: 'Recent change', - }), - description: ( - - ), - }, - ], + label: formulasSections.common.label, + description: formulasSections.common.description, + items: formulasSections.common.items.map( + ({ label, description }: { label: string; description: string }) => ({ + label, + description: , + }) + ), }); const { @@ -203,7 +98,7 @@ max(system.network.in.bytes, reducedTimeRange="30m") constants: constantsOperations, } = groupBy(getPossibleFunctions(indexPattern), (key) => { if (key in operationDefinitionMap) { - return operationDefinitionMap[key].documentation?.section; + return documentationMap[key].documentation?.section; } if (key in tinymathFunctions) { return tinymathFunctions[key].section; @@ -213,14 +108,8 @@ max(system.network.in.bytes, reducedTimeRange="30m") // Es aggs helpGroups.push( createNewSection( - i18n.translate('xpack.lens.formulaDocumentation.elasticsearchSection', { - defaultMessage: 'Elasticsearch', - }), - i18n.translate('xpack.lens.formulaDocumentation.elasticsearchSectionDescription', { - defaultMessage: - 'These functions will be executed on the raw documents for each row of the resulting table, aggregating all documents matching the break down dimensions into a single value.', - }), - + formulasSections.elasticsearch.label, + formulasSections.elasticsearch.description, esFunctions, operationDefinitionMap ) @@ -229,14 +118,8 @@ max(system.network.in.bytes, reducedTimeRange="30m") // Calculations aggs helpGroups.push( createNewSection( - i18n.translate('xpack.lens.formulaDocumentation.columnCalculationSection', { - defaultMessage: 'Column calculations', - }), - i18n.translate('xpack.lens.formulaDocumentation.columnCalculationSectionDescription', { - defaultMessage: - 'These functions are executed for each row, but are provided with the whole column as context. This is also known as a window function.', - }), - + formulasSections.calculations.label, + formulasSections.calculations.description, calculationFunctions, operationDefinitionMap ) @@ -244,14 +127,8 @@ max(system.network.in.bytes, reducedTimeRange="30m") helpGroups.push( createNewSection( - i18n.translate('xpack.lens.formulaDocumentation.mathSection', { - defaultMessage: 'Math', - }), - i18n.translate('xpack.lens.formulaDocumentation.mathSectionDescription', { - defaultMessage: - 'These functions will be executed for reach row of the resulting table using single values from the same row calculated using other functions.', - }), - + formulasSections.math.label, + formulasSections.math.description, mathOperations, operationDefinitionMap ) @@ -259,13 +136,8 @@ max(system.network.in.bytes, reducedTimeRange="30m") helpGroups.push( createNewSection( - i18n.translate('xpack.lens.formulaDocumentation.comparisonSection', { - defaultMessage: 'Comparison', - }), - i18n.translate('xpack.lens.formulaDocumentation.comparisonSectionDescription', { - defaultMessage: 'These functions are used to perform value comparison.', - }), - + formulasSections.comparison.label, + formulasSections.comparison.description, comparisonOperations, operationDefinitionMap ) @@ -273,13 +145,8 @@ max(system.network.in.bytes, reducedTimeRange="30m") helpGroups.push( createNewSection( - i18n.translate('xpack.lens.formulaDocumentation.constantsSection', { - defaultMessage: 'Kibana context', - }), - i18n.translate('xpack.lens.formulaDocumentation.constantsSectionDescription', { - defaultMessage: - 'These functions are used to retrieve Kibana context variables, which are the date histogram `interval`, the current `now` and the selected `time_range` and help you to compute date math operations.', - }), + formulasSections.context.label, + formulasSections.context.description, constantsOperations, operationDefinitionMap ) @@ -287,46 +154,7 @@ max(system.network.in.bytes, reducedTimeRange="30m") const sections = { groups: helpGroups, - initialSection: ( - - ), + initialSection: , }; return sections; @@ -369,7 +197,9 @@ export function getFunctionSignatureLabel( } } const extraComma = extraArgs.length ? ', ' : ''; - return `${name}(${def.documentation?.signature}${extraComma}${extraArgs.join(', ')})`; + return `${name}(${documentationMap[name].documentation?.signature}${extraComma}${extraArgs.join( + ', ' + )})`; } return ''; } @@ -396,7 +226,7 @@ export function getHelpTextContent( operationDefinitionMap: ParamEditorProps['operationDefinitionMap'] ): { description: string; examples: string[] } { const definition = operationDefinitionMap[type]; - const description = definition.documentation?.description ?? ''; + const description = documentationMap[type].documentation?.description ?? ''; // as for the time being just add examples text. // Later will enrich with more information taken from the operation definitions. diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/editor/math_completion.test.ts b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/editor/math_completion.test.ts index 419208ec48d80..270aa5f2c1bb7 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/editor/math_completion.test.ts +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/editor/math_completion.test.ts @@ -9,10 +9,10 @@ import { parse } from '@kbn/tinymath'; import { monaco } from '@kbn/monaco'; import { unifiedSearchPluginMock } from '@kbn/unified-search-plugin/public/mocks'; import { dataViewPluginMocks } from '@kbn/data-views-plugin/public/mocks'; +import { tinymathFunctions } from '@kbn/lens-formula-docs'; import { createMockedIndexPattern } from '../../../../mocks'; import { GenericOperationDefinition } from '../..'; import type { OperationMetadata, IndexPatternField } from '../../../../../../types'; -import { tinymathFunctions } from '../util'; import { getSignatureHelp, getHover, @@ -48,11 +48,6 @@ const operationDefinitionMap: Record = { getPossibleOperationForField: jest.fn((field: IndexPatternField) => field.type === 'number' ? numericOperation() : undefined ), - documentation: { - section: 'elasticsearch', - signature: 'field: string', - description: 'description', - }, }), count: createOperationDefinitionMock('count', { getPossibleOperationForField: (field: IndexPatternField) => @@ -93,7 +88,7 @@ const operationDefinitionMap: Record = { ), }; -describe('math completion', () => { +describe('[Lens formula] math completion', () => { describe('signature help', () => { function unwrapSignatures(signatureResult: monaco.languages.SignatureHelpResult) { return signatureResult.value.signatures[0]; @@ -106,15 +101,21 @@ describe('math completion', () => { it('should return a signature for a field-based ES function', () => { expect(unwrapSignatures(getSignatureHelp('sum()', 4, operationDefinitionMap))).toEqual({ label: 'sum(field: string)', - documentation: { value: 'description' }, + documentation: { + value: ` +Returns the sum of a field. This function only works for number fields.`, + }, parameters: [{ label: 'field' }], }); }); it('should return a signature for count', () => { expect(unwrapSignatures(getSignatureHelp('count()', 6, operationDefinitionMap))).toEqual({ - label: 'count(undefined)', - documentation: { value: '' }, + label: 'count([field: string])', + documentation: { + value: ` +The total number of documents. When you provide a field, the total number of field values is counted. When you use the Count function for fields that have multiple values in a single document, all values are counted.`, + }, parameters: [], }); }); @@ -126,7 +127,11 @@ describe('math completion', () => { ) ).toEqual({ label: expect.stringContaining('moving_average('), - documentation: { value: '' }, + documentation: { + value: ` +Calculates the moving average of a metric over time, averaging the last n-th values to calculate the current value. To use this function, you need to configure a date histogram dimension as well. +The default window value is 5.`, + }, parameters: [ { label: 'function' }, { @@ -145,7 +150,10 @@ describe('math completion', () => { ).toEqual({ label: expect.stringContaining('count('), parameters: [], - documentation: { value: '' }, + documentation: { + value: ` +The total number of documents. When you provide a field, the total number of field values is counted. When you use the Count function for fields that have multiple values in a single document, all values are counted.`, + }, }); }); diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/editor/math_completion.ts b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/editor/math_completion.ts index 2213391235847..eac9f66c77107 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/editor/math_completion.ts +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/editor/math_completion.ts @@ -22,12 +22,13 @@ import type { } from '@kbn/unified-search-plugin/public'; import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; import { parseTimeShift } from '@kbn/data-plugin/common'; +import { tinymathFunctions } from '@kbn/lens-formula-docs'; import moment from 'moment'; import { nonNullable } from '../../../../../../utils'; import { DateRange } from '../../../../../../../common/types'; import type { IndexPattern } from '../../../../../../types'; import { memoizedGetAvailableOperationsByMetadata } from '../../../operations'; -import { tinymathFunctions, groupArgsByType, unquotedStringRegex } from '../util'; +import { groupArgsByType, unquotedStringRegex } from '../util'; import type { GenericOperationDefinition } from '../..'; import { getFunctionSignatureLabel, getHelpTextContent } from './formula_help'; import { hasFunctionFieldArgument } from '../validation'; diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/formula.test.tsx b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/formula.test.tsx index ea77bc3e429ab..382fd2fa6a9ca 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/formula.test.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/formula.test.tsx @@ -5,6 +5,7 @@ * 2.0. */ +import { tinymathFunctions } from '@kbn/lens-formula-docs'; import { createMockedIndexPattern } from '../../../mocks'; import { formulaOperation, @@ -15,7 +16,6 @@ import type { FormulaIndexPatternColumn } from './formula'; import { insertOrReplaceFormulaColumn } from './parse'; import type { FormBasedLayer } from '../../../types'; import { IndexPattern } from '../../../../../types'; -import { tinymathFunctions } from './util'; import { TermsIndexPatternColumn } from '../terms'; import { MovingAverageIndexPatternColumn } from '../calculations'; import { StaticValueIndexPatternColumn } from '../static_value'; @@ -82,7 +82,7 @@ const operationDefinitionMap: Record = { }), }; -describe('formula', () => { +describe('[Lens] formula', () => { let layer: FormBasedLayer; beforeEach(() => { diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/util.ts b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/util.ts index 6dcc727ec0e70..87cdde46843e2 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/util.ts +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/util.ts @@ -6,7 +6,6 @@ */ import { groupBy, isObject } from 'lodash'; -import { i18n } from '@kbn/i18n'; import type { TinymathAST, TinymathFunction, @@ -14,6 +13,7 @@ import type { TinymathVariable, } from '@kbn/tinymath'; import type { Query } from '@kbn/es-query'; +import { tinymathFunctions } from '@kbn/lens-formula-docs'; import { nonNullable } from '../../../../../utils'; import type { OperationDefinition, @@ -108,635 +108,6 @@ export function getOperationParams( }, {}); } -export function getTypeI18n(type: string) { - if (type === 'number') { - return i18n.translate('xpack.lens.formula.number', { defaultMessage: 'number' }); - } - if (type === 'string') { - return i18n.translate('xpack.lens.formula.string', { defaultMessage: 'string' }); - } - if (type === 'boolean') { - return i18n.translate('xpack.lens.formula.boolean', { defaultMessage: 'boolean' }); - } - return ''; -} - -export const tinymathFunctions: Record< - string, - { - section: 'math' | 'comparison'; - positionalArguments: Array<{ - name: string; - optional?: boolean; - defaultValue?: string | number; - type?: string; - alternativeWhenMissing?: string; - }>; - // Help is in Markdown format - help: string; - // When omitted defaults to "number". - // Used for comparison functions return type - outputType?: string; - } -> = { - add: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.left', { defaultMessage: 'left' }), - type: getTypeI18n('number'), - }, - { - name: i18n.translate('xpack.lens.formula.right', { defaultMessage: 'right' }), - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.addFunction.markdown', { - defaultMessage: ` -Adds up two numbers. -Also works with \`+\` symbol. - -Example: Calculate the sum of two fields - -\`sum(price) + sum(tax)\` - -Example: Offset count by a static value - -\`add(count(), 5)\` - `, - }), - }, - subtract: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.left', { defaultMessage: 'left' }), - type: getTypeI18n('number'), - }, - { - name: i18n.translate('xpack.lens.formula.right', { defaultMessage: 'right' }), - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.subtractFunction.markdown', { - defaultMessage: ` -Subtracts the first number from the second number. -Also works with \`-\` symbol. - -Example: Calculate the range of a field -\`subtract(max(bytes), min(bytes))\` - `, - }), - }, - multiply: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.left', { defaultMessage: 'left' }), - type: getTypeI18n('number'), - }, - { - name: i18n.translate('xpack.lens.formula.right', { defaultMessage: 'right' }), - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.multiplyFunction.markdown', { - defaultMessage: ` -Multiplies two numbers. -Also works with \`*\` symbol. - -Example: Calculate price after current tax rate -\`sum(bytes) * last_value(tax_rate)\` - -Example: Calculate price after constant tax rate -\`multiply(sum(price), 1.2)\` - `, - }), - }, - divide: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.left', { defaultMessage: 'left' }), - type: getTypeI18n('number'), - }, - { - name: i18n.translate('xpack.lens.formula.right', { defaultMessage: 'right' }), - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.divideFunction.markdown', { - defaultMessage: ` -Divides the first number by the second number. -Also works with \`/\` symbol - -Example: Calculate profit margin -\`sum(profit) / sum(revenue)\` - -Example: \`divide(sum(bytes), 2)\` - `, - }), - }, - abs: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.value', { defaultMessage: 'value' }), - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.absFunction.markdown', { - defaultMessage: ` -Calculates absolute value. A negative value is multiplied by -1, a positive value stays the same. - -Example: Calculate average distance to sea level \`abs(average(altitude))\` - `, - }), - }, - cbrt: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.value', { defaultMessage: 'value' }), - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.cbrtFunction.markdown', { - defaultMessage: ` -Cube root of value. - -Example: Calculate side length from volume -\`cbrt(last_value(volume))\` - `, - }), - }, - ceil: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.value', { defaultMessage: 'value' }), - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.ceilFunction.markdown', { - defaultMessage: ` -Ceiling of value, rounds up. - -Example: Round up price to the next dollar -\`ceil(sum(price))\` - `, - }), - }, - clamp: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.value', { defaultMessage: 'value' }), - type: getTypeI18n('number'), - }, - { - name: i18n.translate('xpack.lens.formula.min', { defaultMessage: 'min' }), - type: getTypeI18n('number'), - alternativeWhenMissing: 'pick_max', - }, - { - name: i18n.translate('xpack.lens.formula.max', { defaultMessage: 'max' }), - type: getTypeI18n('number'), - alternativeWhenMissing: 'pick_min', - }, - ], - help: i18n.translate('xpack.lens.formula.clampFunction.markdown', { - defaultMessage: ` -Limits the value from a minimum to maximum. - -Example: Make sure to catch outliers -\`\`\` -clamp( - average(bytes), - percentile(bytes, percentile=5), - percentile(bytes, percentile=95) -) -\`\`\` -`, - }), - }, - cube: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.value', { defaultMessage: 'value' }), - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.cubeFunction.markdown', { - defaultMessage: ` -Calculates the cube of a number. - -Example: Calculate volume from side length -\`cube(last_value(length))\` - `, - }), - }, - exp: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.value', { defaultMessage: 'value' }), - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.expFunction.markdown', { - defaultMessage: ` -Raises *e* to the nth power. - -Example: Calculate the natural exponential function - -\`exp(last_value(duration))\` - `, - }), - }, - fix: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.value', { defaultMessage: 'value' }), - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.fixFunction.markdown', { - defaultMessage: ` -For positive values, takes the floor. For negative values, takes the ceiling. - -Example: Rounding towards zero -\`fix(sum(profit))\` - `, - }), - }, - floor: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.value', { defaultMessage: 'value' }), - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.floorFunction.markdown', { - defaultMessage: ` -Round down to nearest integer value - -Example: Round down a price -\`floor(sum(price))\` - `, - }), - }, - log: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.value', { defaultMessage: 'value' }), - type: getTypeI18n('number'), - }, - { - name: i18n.translate('xpack.lens.formula.base', { defaultMessage: 'base' }), - optional: true, - defaultValue: 'e', - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.logFunction.markdown', { - defaultMessage: ` -Logarithm with optional base. The natural base *e* is used as default. - -Example: Calculate number of bits required to store values -\`\`\` -log(sum(bytes)) -log(sum(bytes), 2) -\`\`\` - `, - }), - }, - mod: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.value', { defaultMessage: 'value' }), - type: getTypeI18n('number'), - }, - { - name: i18n.translate('xpack.lens.formula.base', { defaultMessage: 'base' }), - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.modFunction.markdown', { - defaultMessage: ` -Remainder after dividing the function by a number - -Example: Calculate last three digits of a value -\`mod(sum(price), 1000)\` - `, - }), - }, - pow: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.value', { defaultMessage: 'value' }), - type: getTypeI18n('number'), - }, - { - name: i18n.translate('xpack.lens.formula.base', { defaultMessage: 'base' }), - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.powFunction.markdown', { - defaultMessage: ` -Raises the value to a certain power. The second argument is required - -Example: Calculate volume based on side length -\`pow(last_value(length), 3)\` - `, - }), - }, - round: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.value', { defaultMessage: 'value' }), - type: getTypeI18n('number'), - }, - { - name: i18n.translate('xpack.lens.formula.decimals', { defaultMessage: 'decimals' }), - optional: true, - defaultValue: 0, - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.roundFunction.markdown', { - defaultMessage: ` -Rounds to a specific number of decimal places, default of 0 - -Examples: Round to the cent -\`\`\` -round(sum(bytes)) -round(sum(bytes), 2) -\`\`\` - `, - }), - }, - sqrt: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.value', { defaultMessage: 'value' }), - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.sqrtFunction.markdown', { - defaultMessage: ` -Square root of a positive value only - -Example: Calculate side length based on area -\`sqrt(last_value(area))\` - `, - }), - }, - square: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.value', { defaultMessage: 'value' }), - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.squareFunction.markdown', { - defaultMessage: ` -Raise the value to the 2nd power - -Example: Calculate area based on side length -\`square(last_value(length))\` - `, - }), - }, - pick_max: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.left', { defaultMessage: 'left' }), - type: getTypeI18n('number'), - }, - { - name: i18n.translate('xpack.lens.formula.right', { defaultMessage: 'right' }), - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.maxFunction.markdown', { - defaultMessage: ` -Finds the maximum value between two numbers. - -Example: Find the maximum between two fields averages -\`pick_max(average(bytes), average(memory))\` - `, - }), - }, - pick_min: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.left', { defaultMessage: 'left' }), - type: getTypeI18n('number'), - }, - { - name: i18n.translate('xpack.lens.formula.right', { defaultMessage: 'right' }), - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.minFunction.markdown', { - defaultMessage: ` -Finds the minimum value between two numbers. - -Example: Find the minimum between two fields averages -\`pick_min(average(bytes), average(memory))\` - `, - }), - }, - defaults: { - section: 'math', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.value', { defaultMessage: 'value' }), - type: getTypeI18n('number'), - }, - { - name: i18n.translate('xpack.lens.formula.defaultValue', { defaultMessage: 'default' }), - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.defaultFunction.markdown', { - defaultMessage: ` -Returns a default numeric value when value is null. - -Example: Return -1 when a field has no data -\`defaults(average(bytes), -1)\` -`, - }), - }, - lt: { - section: 'comparison', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.left', { defaultMessage: 'left' }), - type: getTypeI18n('number'), - }, - { - name: i18n.translate('xpack.lens.formula.right', { defaultMessage: 'right' }), - type: getTypeI18n('number'), - }, - ], - outputType: getTypeI18n('boolean'), - help: i18n.translate('xpack.lens.formula.ltFunction.markdown', { - defaultMessage: ` -Performs a lower than comparison between two values. -To be used as condition for \`ifelse\` comparison function. -Also works with \`<\` symbol. - -Example: Returns true if the average of bytes is lower than the average amount of memory -\`average(bytes) <= average(memory)\` - -Example: \`lt(average(bytes), 1000)\` - `, - }), - }, - gt: { - section: 'comparison', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.left', { defaultMessage: 'left' }), - type: getTypeI18n('number'), - }, - { - name: i18n.translate('xpack.lens.formula.right', { defaultMessage: 'right' }), - type: getTypeI18n('number'), - }, - ], - outputType: getTypeI18n('boolean'), - help: i18n.translate('xpack.lens.formula.gtFunction.markdown', { - defaultMessage: ` -Performs a greater than comparison between two values. -To be used as condition for \`ifelse\` comparison function. -Also works with \`>\` symbol. - -Example: Returns true if the average of bytes is greater than the average amount of memory -\`average(bytes) > average(memory)\` - -Example: \`gt(average(bytes), 1000)\` - `, - }), - }, - eq: { - section: 'comparison', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.left', { defaultMessage: 'left' }), - type: getTypeI18n('number'), - }, - { - name: i18n.translate('xpack.lens.formula.right', { defaultMessage: 'right' }), - type: getTypeI18n('number'), - }, - ], - outputType: getTypeI18n('boolean'), - help: i18n.translate('xpack.lens.formula.eqFunction.markdown', { - defaultMessage: ` -Performs an equality comparison between two values. -To be used as condition for \`ifelse\` comparison function. -Also works with \`==\` symbol. - -Example: Returns true if the average of bytes is exactly the same amount of average memory -\`average(bytes) == average(memory)\` - -Example: \`eq(sum(bytes), 1000000)\` - `, - }), - }, - lte: { - section: 'comparison', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.left', { defaultMessage: 'left' }), - type: getTypeI18n('number'), - }, - { - name: i18n.translate('xpack.lens.formula.right', { defaultMessage: 'right' }), - type: getTypeI18n('number'), - }, - ], - outputType: getTypeI18n('boolean'), - help: i18n.translate('xpack.lens.formula.lteFunction.markdown', { - defaultMessage: ` -Performs a lower than or equal comparison between two values. -To be used as condition for \`ifelse\` comparison function. -Also works with \`<=\` symbol. - -Example: Returns true if the average of bytes is lower than or equal to the average amount of memory -\`average(bytes) <= average(memory)\` - -Example: \`lte(average(bytes), 1000)\` - `, - }), - }, - gte: { - section: 'comparison', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.left', { defaultMessage: 'left' }), - type: getTypeI18n('number'), - }, - { - name: i18n.translate('xpack.lens.formula.right', { defaultMessage: 'right' }), - type: getTypeI18n('number'), - }, - ], - outputType: getTypeI18n('boolean'), - help: i18n.translate('xpack.lens.formula.gteFunction.markdown', { - defaultMessage: ` -Performs a greater than comparison between two values. -To be used as condition for \`ifelse\` comparison function. -Also works with \`>=\` symbol. - -Example: Returns true if the average of bytes is greater than or equal to the average amount of memory -\`average(bytes) >= average(memory)\` - -Example: \`gte(average(bytes), 1000)\` - `, - }), - }, - ifelse: { - section: 'comparison', - positionalArguments: [ - { - name: i18n.translate('xpack.lens.formula.condition', { defaultMessage: 'condition' }), - type: getTypeI18n('boolean'), - }, - { - name: i18n.translate('xpack.lens.formula.left', { defaultMessage: 'left' }), - type: getTypeI18n('number'), - }, - { - name: i18n.translate('xpack.lens.formula.right', { defaultMessage: 'right' }), - type: getTypeI18n('number'), - }, - ], - help: i18n.translate('xpack.lens.formula.ifElseFunction.markdown', { - defaultMessage: ` -Returns a value depending on whether the element of condition is true or false. - -Example: Average revenue per customer but in some cases customer id is not provided which counts as additional customer -\`sum(total)/(unique_count(customer_id) + ifelse( count() > count(kql='customer_id:*'), 1, 0))\` - `, - }), - }, -}; - export function isMathNode(node: TinymathAST | string) { return isObject(node) && node.type === 'function' && tinymathFunctions[node.name]; } diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/validation.ts b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/validation.ts index 95eb8a84e6849..5d6085c377829 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/validation.ts +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/validation.ts @@ -10,6 +10,7 @@ import { i18n } from '@kbn/i18n'; import { parse, TinymathLocation, TinymathVariable } from '@kbn/tinymath'; import type { TinymathAST, TinymathFunction, TinymathNamedArgument } from '@kbn/tinymath'; import { luceneStringToDsl, toElasticsearchQuery, fromKueryExpression } from '@kbn/es-query'; +import { tinymathFunctions, getTypeI18n } from '@kbn/lens-formula-docs'; import type { Query } from '@kbn/es-query'; import { isAbsoluteTimeShift, @@ -24,11 +25,9 @@ import { findMathNodes, findVariables, getOperationParams, - getTypeI18n, getValueOrName, groupArgsByType, isMathNode, - tinymathFunctions, } from './util'; import type { diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/index.ts b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/index.ts index 3c62f34cbc1f2..fd6b68c2bf65d 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/index.ts +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/index.ts @@ -350,11 +350,6 @@ interface BaseOperationDefinitionProps< * Operations can be used as middleware for other operations, hence not shown in the panel UI */ hidden?: boolean; - documentation?: { - signature: string; - description: string; - section: 'elasticsearch' | 'calculation' | 'constants'; - }; quickFunctionDocumentation?: string; /** * React component for operation field specific behaviour diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/last_value.tsx b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/last_value.tsx index 6432577173af2..0861148aacc3d 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/last_value.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/last_value.tsx @@ -18,6 +18,7 @@ import { import { AggFunctionsMapping } from '@kbn/data-plugin/public'; import { buildExpressionFunction } from '@kbn/expressions-plugin/public'; import { FormattedMessage } from '@kbn/i18n-react'; +import { LAST_VALUE_ID, LAST_VALUE_NAME } from '@kbn/lens-formula-docs'; import type { FieldBasedOperationErrorMessage, OperationDefinition } from '.'; import { FieldBasedIndexPatternColumn, ValueFormatConfig } from './column_types'; import type { IndexPatternField, IndexPattern } from '../../../../types'; @@ -136,7 +137,7 @@ function setDefaultShowArrayValues( } export interface LastValueIndexPatternColumn extends FieldBasedIndexPatternColumn { - operationType: 'last_value'; + operationType: typeof LAST_VALUE_ID; params: { sortField: string; showArrayValues: boolean; @@ -161,10 +162,8 @@ export const lastValueOperation: OperationDefinition< Partial, true > = { - type: 'last_value', - displayName: i18n.translate('xpack.lens.indexPattern.lastValue', { - defaultMessage: 'Last value', - }), + type: LAST_VALUE_ID, + displayName: LAST_VALUE_NAME, getDefaultLabel: (column, columns, indexPattern) => ofName( getSafeName(column.sourceField, indexPattern), @@ -250,7 +249,7 @@ export const lastValueOperation: OperationDefinition< return { label: ofName(field.displayName, previousColumn?.timeShift, previousColumn?.reducedTimeRange), dataType: field.type as DataType, - operationType: 'last_value', + operationType: LAST_VALUE_ID, isBucketed: false, scale: getScale(field.type), sourceField: field.name, @@ -450,22 +449,6 @@ export const lastValueOperation: OperationDefinition< ); }, - documentation: { - section: 'elasticsearch', - signature: i18n.translate('xpack.lens.indexPattern.lastValue.signature', { - defaultMessage: 'field: string', - }), - description: i18n.translate('xpack.lens.indexPattern.lastValue.documentation.markdown', { - defaultMessage: ` -Returns the value of a field from the last document, ordered by the default time field of the data view. - -This function is usefull the retrieve the latest state of an entity. - -Example: Get the current status of server A: -\`last_value(server.status, kql=\'server.name="A"\')\` - `, - }), - }, quickFunctionDocumentation: i18n.translate( 'xpack.lens.indexPattern.lastValue.documentation.quick', { diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/metrics.tsx b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/metrics.tsx index 589b840c29f22..87e3432d54e2f 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/metrics.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/metrics.tsx @@ -10,6 +10,20 @@ import React from 'react'; import { EuiSwitch, EuiText } from '@elastic/eui'; import { euiThemeVars } from '@kbn/ui-theme'; import { buildExpressionFunction } from '@kbn/expressions-plugin/public'; +import { + AVG_ID, + AVG_NAME, + MAX_ID, + MAX_NAME, + MEDIAN_ID, + MEDIAN_NAME, + MIN_ID, + MIN_NAME, + STD_DEVIATION_ID, + STD_DEVIATION_NAME, + SUM_ID, + SUM_NAME, +} from '@kbn/lens-formula-docs'; import { LayerSettingsFeatures, OperationDefinition, ParamEditorProps } from '.'; import { getFormatFromPreviousColumn, @@ -62,7 +76,6 @@ function buildMetricOperation>({ supportsDate, hideZeroOption, aggConfigParams, - documentationDescription, quickFunctionDocumentation, unsupportedSettings, }: { @@ -228,28 +241,6 @@ function buildMetricOperation>({ ]), filterable: true, canReduceTimeRange: true, - documentation: { - section: 'elasticsearch', - signature: i18n.translate('xpack.lens.indexPattern.metric.signature', { - defaultMessage: 'field: string', - }), - description: - documentationDescription || - i18n.translate('xpack.lens.indexPattern.metric.documentation.markdown', { - defaultMessage: ` -Returns the {metric} of a field. This function only works for number fields. - -Example: Get the {metric} of price: -\`{metric}(price)\` - -Example: Get the {metric} of price for orders from the UK: -\`{metric}(price, kql='location:UK')\` - `, - values: { - metric: type, - }, - }), - }, quickFunctionDocumentation, shiftable: true, } as OperationDefinition; @@ -263,10 +254,8 @@ export type MaxIndexPatternColumn = MetricColumn<'max'>; export type MedianIndexPatternColumn = MetricColumn<'median'>; export const minOperation = buildMetricOperation({ - type: 'min', - displayName: i18n.translate('xpack.lens.indexPattern.min', { - defaultMessage: 'Minimum', - }), + type: MIN_ID, + displayName: MIN_NAME, ofName: (name) => i18n.translate('xpack.lens.indexPattern.minOf', { defaultMessage: 'Minimum of {name}', @@ -287,10 +276,8 @@ export const minOperation = buildMetricOperation({ }); export const maxOperation = buildMetricOperation({ - type: 'max', - displayName: i18n.translate('xpack.lens.indexPattern.max', { - defaultMessage: 'Maximum', - }), + type: MAX_ID, + displayName: MAX_NAME, ofName: (name) => i18n.translate('xpack.lens.indexPattern.maxOf', { defaultMessage: 'Maximum of {name}', @@ -311,11 +298,9 @@ export const maxOperation = buildMetricOperation({ }); export const averageOperation = buildMetricOperation({ - type: 'average', + type: AVG_ID, priority: 2, - displayName: i18n.translate('xpack.lens.indexPattern.avg', { - defaultMessage: 'Average', - }), + displayName: AVG_NAME, ofName: (name) => i18n.translate('xpack.lens.indexPattern.avgOf', { defaultMessage: 'Average of {name}', @@ -335,10 +320,8 @@ export const averageOperation = buildMetricOperation({ export const standardDeviationOperation = buildMetricOperation( { - type: 'standard_deviation', - displayName: i18n.translate('xpack.lens.indexPattern.standardDeviation', { - defaultMessage: 'Standard deviation', - }), + type: STD_DEVIATION_ID, + displayName: STD_DEVIATION_NAME, ofName: (name) => i18n.translate('xpack.lens.indexPattern.standardDeviationOf', { defaultMessage: 'Standard deviation of {name}', @@ -351,20 +334,6 @@ export const standardDeviationOperation = buildMetricOperation({ - type: 'sum', + type: SUM_ID, priority: 1, - displayName: i18n.translate('xpack.lens.indexPattern.sum', { - defaultMessage: 'Sum', - }), + displayName: SUM_NAME, ofName: (name) => i18n.translate('xpack.lens.indexPattern.sumOf', { defaultMessage: 'Sum of {name}', @@ -401,11 +368,9 @@ export const sumOperation = buildMetricOperation({ }); export const medianOperation = buildMetricOperation({ - type: 'median', + type: MEDIAN_ID, priority: 3, - displayName: i18n.translate('xpack.lens.indexPattern.median', { - defaultMessage: 'Median', - }), + displayName: MEDIAN_NAME, ofName: (name) => i18n.translate('xpack.lens.indexPattern.medianOf', { defaultMessage: 'Median of {name}', diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/percentile.tsx b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/percentile.tsx index 3b9ecf0417313..be40f31c770aa 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/percentile.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/percentile.tsx @@ -16,6 +16,7 @@ import { ExpressionAstFunctionBuilder, } from '@kbn/expressions-plugin/public'; import { useDebouncedValue } from '@kbn/visualization-ui-components'; +import { PERCENTILE_ID, PERCENTILE_NAME } from '@kbn/lens-formula-docs'; import { OperationDefinition } from '.'; import { getFormatFromPreviousColumn, @@ -33,7 +34,7 @@ import { getColumnReducedTimeRangeError } from '../../reduced_time_range_utils'; import { getGroupByKey, groupByKey } from './get_group_by_key'; export interface PercentileIndexPatternColumn extends FieldBasedIndexPatternColumn { - operationType: 'percentile'; + operationType: typeof PERCENTILE_ID; params: { percentile: number; format?: { @@ -110,11 +111,9 @@ export const percentileOperation: OperationDefinition< { percentile: number }, true > = { - type: 'percentile', + type: PERCENTILE_ID, allowAsReference: true, - displayName: i18n.translate('xpack.lens.indexPattern.percentile', { - defaultMessage: 'Percentile', - }), + displayName: PERCENTILE_NAME, input: 'field', operationParams: [ { name: 'percentile', type: 'number', required: false, defaultValue: DEFAULT_PERCENTILE_VALUE }, @@ -161,7 +160,7 @@ export const percentileOperation: OperationDefinition< buildColumn: ({ field, previousColumn, indexPattern }, columnParams) => { const existingPercentileParam = previousColumn && - isColumnOfType('percentile', previousColumn) && + isColumnOfType(PERCENTILE_ID, previousColumn) && previousColumn.params.percentile; const newPercentileParam = columnParams?.percentile ?? (existingPercentileParam || DEFAULT_PERCENTILE_VALUE); @@ -173,7 +172,7 @@ export const percentileOperation: OperationDefinition< previousColumn?.reducedTimeRange ), dataType: 'number', - operationType: 'percentile', + operationType: PERCENTILE_ID, sourceField: field.name, isBucketed: false, scale: 'ratio', @@ -431,20 +430,6 @@ export const percentileOperation: OperationDefinition< ); }, - documentation: { - section: 'elasticsearch', - signature: i18n.translate('xpack.lens.indexPattern.percentile.signature', { - defaultMessage: 'field: string, [percentile]: number', - }), - description: i18n.translate('xpack.lens.indexPattern.percentile.documentation.markdown', { - defaultMessage: ` -Returns the specified percentile of the values of a field. This is the value n percent of the values occuring in documents are smaller. - -Example: Get the number of bytes larger than 95 % of values: -\`percentile(bytes, percentile=95)\` - `, - }), - }, quickFunctionDocumentation: i18n.translate( 'xpack.lens.indexPattern.percentile.documentation.quick', { diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/percentile_ranks.tsx b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/percentile_ranks.tsx index 54d6f379d9e5f..3eb867442ef17 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/percentile_ranks.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/percentile_ranks.tsx @@ -11,6 +11,7 @@ import { i18n } from '@kbn/i18n'; import { AggFunctionsMapping } from '@kbn/data-plugin/public'; import { buildExpressionFunction } from '@kbn/expressions-plugin/public'; import { useDebouncedValue } from '@kbn/visualization-ui-components'; +import { PERCENTILE_RANK_ID, PERCENTILE_RANK_NAME } from '@kbn/lens-formula-docs'; import { OperationDefinition } from '.'; import { getFormatFromPreviousColumn, @@ -27,7 +28,7 @@ import { FormRow } from './shared_components'; import { getColumnReducedTimeRangeError } from '../../reduced_time_range_utils'; export interface PercentileRanksIndexPatternColumn extends FieldBasedIndexPatternColumn { - operationType: 'percentile_rank'; + operationType: typeof PERCENTILE_RANK_ID; params: { value: number; }; @@ -63,11 +64,9 @@ export const percentileRanksOperation: OperationDefinition< { value: number }, true > = { - type: 'percentile_rank', + type: PERCENTILE_RANK_ID, allowAsReference: true, - displayName: i18n.translate('xpack.lens.indexPattern.percentileRank', { - defaultMessage: 'Percentile rank', - }), + displayName: PERCENTILE_RANK_NAME, input: 'field', operationParams: [ { @@ -256,20 +255,6 @@ export const percentileRanksOperation: OperationDefinition< ); }, - documentation: { - section: 'elasticsearch', - signature: i18n.translate('xpack.lens.indexPattern.percentileRanks.signature', { - defaultMessage: 'field: string, [value]: number', - }), - description: i18n.translate('xpack.lens.indexPattern.percentileRanks.documentation.markdown', { - defaultMessage: ` -Returns the percentage of values which are below a certain value. For example, if a value is greater than or equal to 95% of the observed values it is said to be at the 95th percentile rank - -Example: Get the percentage of values which are below of 100: -\`percentile_rank(bytes, value=100)\` - `, - }), - }, quickFunctionDocumentation: i18n.translate( 'xpack.lens.indexPattern.percentileRanks.documentation.quick', { diff --git a/x-pack/plugins/lens/tsconfig.json b/x-pack/plugins/lens/tsconfig.json index 6052ae05d37cf..8fc8eafc53f11 100644 --- a/x-pack/plugins/lens/tsconfig.json +++ b/x-pack/plugins/lens/tsconfig.json @@ -98,6 +98,7 @@ "@kbn/cell-actions", "@kbn/calculate-width-from-char-count", "@kbn/discover-utils", + "@kbn/lens-formula-docs", "@kbn/visualization-utils" ], "exclude": [ diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 7c828eaee3afa..08dc60171e63e 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -21925,53 +21925,53 @@ "xpack.lens.xyVisualization.dataTypeFailureXShort": "Type de données incorrect pour {axis}.", "xpack.lens.xyVisualization.dataTypeFailureYLong": "La dimension {label} fournie pour {axis} possède un type de données incorrect. Un nombre est attendu, mais {dataType} trouvé", "xpack.lens.xyVisualization.dataTypeFailureYShort": "Type de données incorrect pour {axis}.", - "xpack.lens.formula.absFunction.markdown": "\nCalcule une valeur absolue. Une valeur négative est multipliée par -1, une valeur positive reste identique.\n\nExemple : calculer la distance moyenne par rapport au niveau de la mer \"abs(average(altitude))\"\n ", - "xpack.lens.formula.addFunction.markdown": "\nAjoute jusqu'à deux nombres.\nFonctionne également avec le symbole \"+\".\n\nExemple : calculer la somme de deux champs\n\n\"sum(price) + sum(tax)\"\n\nExemple : compenser le compte par une valeur statique\n\n\"add(count(), 5)\"\n ", - "xpack.lens.formula.cbrtFunction.markdown": "\nÉtablit la racine carrée de la valeur.\n\nExemple : calculer la longueur du côté à partir du volume\n`cbrt(last_value(volume))`\n ", - "xpack.lens.formula.ceilFunction.markdown": "\nArrondit le plafond de la valeur au chiffre supérieur.\n\nExemple : arrondir le prix au dollar supérieur\n`ceil(sum(price))`\n ", - "xpack.lens.formula.clampFunction.markdown": "\nÉtablit une limite minimale et maximale pour la valeur.\n\nExemple : s'assurer de repérer les valeurs aberrantes\n```\nclamp(\n average(bytes),\n percentile(bytes, percentile=5),\n percentile(bytes, percentile=95)\n)\n```\n", - "xpack.lens.formula.cubeFunction.markdown": "\nCalcule le cube d'un nombre.\n\nExemple : calculer le volume à partir de la longueur du côté\n`cube(last_value(length))`\n ", - "xpack.lens.formula.defaultFunction.markdown": "\nRetourne une valeur numérique par défaut lorsque la valeur est nulle.\n\nExemple : Retourne -1 lorsqu'un champ ne contient aucune donnée.\n\"defaults(average(bytes), -1)\"\n", - "xpack.lens.formula.divideFunction.markdown": "\nDivise le premier nombre par le deuxième.\nFonctionne également avec le symbole \"/\".\n\nExemple : calculer la marge bénéficiaire\n\"sum(profit) / sum(revenue)\"\n\nExemple : \"divide(sum(bytes), 2)\"\n ", - "xpack.lens.formula.eqFunction.markdown": "\nEffectue une comparaison d'égalité entre deux valeurs.\nÀ utiliser en tant que condition pour la fonction de comparaison \"ifelse\".\nFonctionne également avec le symbole \"==\".\n\nExemple : Retourne \"true\" si la moyenne d'octets est égale à la quantité de mémoire moyenne.\n\"average(bytes) == average(memory)\"\n\nExemple : \"eq(sum(bytes), 1000000)\"\n ", - "xpack.lens.formula.expFunction.markdown": "\nÉlève *e* à la puissance n.\n\nExemple : calculer la fonction exponentielle naturelle\n\n`exp(last_value(duration))`\n ", - "xpack.lens.formula.fixFunction.markdown": "\nPour les valeurs positives, part du bas. Pour les valeurs négatives, part du haut.\n\nExemple : arrondir à zéro\n\"fix(sum(profit))\"\n ", - "xpack.lens.formula.floorFunction.markdown": "\nArrondit à la valeur entière inférieure la plus proche.\n\nExemple : arrondir un prix au chiffre inférieur\n\"floor(sum(price))\"\n ", - "xpack.lens.formula.gteFunction.markdown": "\nEffectue une comparaison de supériorité entre deux valeurs.\nÀ utiliser en tant que condition pour la fonction de comparaison \"ifelse\".\nFonctionne également avec le symbole \">=\".\n\nExemple : Retourne \"true\" si la moyenne d'octets est supérieure ou égale à la quantité moyenne de mémoire.\n\"average(bytes) >= average(memory)\"\n\nExemple : \"gte(average(bytes), 1000)\"\n ", - "xpack.lens.formula.gtFunction.markdown": "\nEffectue une comparaison de supériorité entre deux valeurs.\nÀ utiliser en tant que condition pour la fonction de comparaison \"ifelse\".\nFonctionne également avec le symbole \">\".\n\nExemple : Retourne \"true\" si la moyenne d'octets est supérieure à la quantité moyenne de mémoire.\n\"average(bytes) > average(memory)\"\n\nExemple : \"gt(average(bytes), 1000)\"\n ", - "xpack.lens.formula.ifElseFunction.markdown": "\nRetourne une valeur selon si l'élément de condition est \"true\" ou \"false\".\n\nExemple : Revenus moyens par client, mais dans certains cas, l'ID du client n'est pas fourni, et le client est alors compté comme client supplémentaire.\n`sum(total)/(unique_count(customer_id) + ifelse( count() > count(kql='customer_id:*'), 1, 0))`\n ", - "xpack.lens.formula.logFunction.markdown": "\nÉtablit un logarithme avec base optionnelle. La base naturelle *e* est utilisée par défaut.\n\nExemple : calculer le nombre de bits nécessaire au stockage de valeurs\n```\nlog(sum(bytes))\nlog(sum(bytes), 2)\n```\n ", - "xpack.lens.formula.lteFunction.markdown": "\nEffectue une comparaison d'infériorité ou de supériorité entre deux valeurs.\nÀ utiliser en tant que condition pour la fonction de comparaison \"ifelse\".\nFonctionne également avec le symbole \"<=\".\n\nExemple : Retourne \"true\" si la moyenne d'octets est inférieure ou égale à la quantité moyenne de mémoire.\n\"average(bytes) <= average(memory)\"\n\nExemple : \"lte(average(bytes), 1000)\"\n ", - "xpack.lens.formula.ltFunction.markdown": "\nEffectue une comparaison d'infériorité entre deux valeurs.\nÀ utiliser en tant que condition pour la fonction de comparaison \"ifelse\".\nFonctionne également avec le symbole \"<\".\n\nExemple : Retourne \"true\" si la moyenne d'octets est inférieure à la quantité moyenne de mémoire.\n\"average(bytes) <= average(memory)\"\n\nExemple : \"lt(average(bytes), 1000)\"\n ", - "xpack.lens.formula.maxFunction.markdown": "\nTrouve la valeur maximale entre deux nombres.\n\nExemple : Trouver le maximum entre deux moyennes de champs\n\"pick_max(average(bytes), average(memory))\"\n ", - "xpack.lens.formula.minFunction.markdown": "\nTrouve la valeur minimale entre deux nombres.\n\nExemple : Trouver le minimum entre deux moyennes de champs\n`pick_min(average(bytes), average(memory))`\n ", - "xpack.lens.formula.modFunction.markdown": "\nÉtablit le reste après division de la fonction par un nombre.\n\nExemple : calculer les trois derniers chiffres d'une valeur\n\"mod(sum(price), 1000)\"\n ", - "xpack.lens.formula.multiplyFunction.markdown": "\nMultiplie deux nombres.\nFonctionne également avec le symbole \"*\".\n\nExemple : calculer le prix après application du taux d'imposition courant\n`sum(bytes) * last_value(tax_rate)`\n\nExemple : calculer le prix après application du taux d'imposition constant\n\"multiply(sum(price), 1.2)\"\n ", - "xpack.lens.formula.powFunction.markdown": "\nÉlève la valeur à une puissance spécifique. Le deuxième argument est obligatoire.\n\nExemple : calculer le volume en fonction de la longueur du côté\n\"pow(last_value(length), 3)\"\n ", - "xpack.lens.formula.roundFunction.markdown": "\nArrondit à un nombre donné de décimales, 0 étant la valeur par défaut.\n\nExemples : arrondir au centième\n```\nround(sum(bytes))\nround(sum(bytes), 2)\n```\n ", - "xpack.lens.formula.sqrtFunction.markdown": "\nÉtablit la racine carrée d'une valeur positive uniquement.\n\nExemple : calculer la longueur du côté en fonction de la surface\n`sqrt(last_value(area))`\n ", - "xpack.lens.formula.squareFunction.markdown": "\nÉlève la valeur à la puissance 2.\n\nExemple : calculer l’aire en fonction de la longueur du côté\n`square(last_value(length))`\n ", - "xpack.lens.formula.subtractFunction.markdown": "\nSoustrait le premier nombre du deuxième.\nFonctionne également avec le symbole \"-\".\n\nExemple : calculer la plage d'un champ\n\"subtract(max(bytes), min(bytes))\"\n ", - "xpack.lens.formulaDocumentation.filterRatioDescription.markdown": "### Rapport de filtre :\n\nUtilisez \"kql=''\" pour filtrer un ensemble de documents et le comparer à d'autres documents du même regroupement.\nPar exemple, pour consulter l'évolution du taux d'erreur au fil du temps :\n\n```\ncount(kql='response.status_code > 400') / count()\n```\n ", - "xpack.lens.formulaDocumentation.percentOfTotalDescription.markdown": "### Pourcentage du total\n\nLes formules peuvent calculer \"overall_sum\" pour tous les regroupements,\nce qui permet de convertir chaque regroupement en un pourcentage du total :\n\n```\nsum(products.base_price) / overall_sum(sum(products.base_price))\n```\n ", - "xpack.lens.formulaDocumentation.recentChangeDescription.markdown": "### Modification récente\n\nUtilisez \"reducedTimeRange='30m'\" pour ajouter un filtre supplémentaire sur la plage temporelle d'un indicateur aligné avec la fin d'une plage temporelle globale. Vous pouvez l'utiliser pour calculer le degré de modification récente d'une valeur.\n\n```\nmax(system.network.in.bytes, reducedTimeRange=\"30m\")\n - min(system.network.in.bytes, reducedTimeRange=\"30m\")\n```\n ", - "xpack.lens.formulaDocumentation.weekOverWeekDescription.markdown": "### Semaine après semaine :\n\nUtilisez \"shift='1w'\" pour obtenir la valeur de chaque regroupement\nde la semaine précédente. Le décalage ne doit pas être utilisé avec la fonction *Valeurs les plus élevées*.\n\n```\npercentile(system.network.in.bytes, percentile=99) /\npercentile(system.network.in.bytes, percentile=99, shift='1w')\n```\n ", - "xpack.lens.indexPattern.cardinality.documentation.markdown": "\nCalcule le nombre de valeurs uniques d'un champ donné. Fonctionne pour les nombres, les chaînes, les dates et les valeurs booléennes.\n\nExemple : calculer le nombre de produits différents :\n`unique_count(product.name)`\n\nExemple : calculer le nombre de produits différents du groupe \"clothes\" :\n\"unique_count(product.name, kql='product.group=clothes')\"\n ", - "xpack.lens.indexPattern.count.documentation.markdown": "\nNombre total de documents. Lorsque vous fournissez un champ, le nombre total de valeurs de champ est compté. Lorsque vous utilisez la fonction de décompte pour les champs qui comportent plusieurs valeurs dans un même document, toutes les valeurs sont comptées.\n\n#### Exemples\n\nPour calculer le nombre total de documents, utilisez `count()`.\n\nPour calculer le nombre de produits, utilisez `count(products.id)`.\n\nPour calculer le nombre de documents qui correspondent à un filtre donné, utilisez `count(kql='price > 500')`.\n ", - "xpack.lens.indexPattern.counterRate.documentation.markdown": "\nCalcule le taux d'un compteur toujours croissant. Cette fonction renvoie uniquement des résultats utiles inhérents aux champs d'indicateurs de compteur qui contiennent une mesure quelconque à croissance régulière.\nSi la valeur diminue, elle est interprétée comme une mesure de réinitialisation de compteur. Pour obtenir des résultats plus précis, \"counter_rate\" doit être calculé d’après la valeur \"max\" du champ.\n\nCe calcul est réalisé séparément pour des séries distinctes définies par des filtres ou des dimensions de valeurs supérieures.\nIl utilise l'intervalle en cours utilisé dans la formule.\n\nExemple : visualiser le taux d'octets reçus au fil du temps par un serveur Memcached :\n`counter_rate(max(memcached.stats.read.bytes))`\n ", - "xpack.lens.indexPattern.cumulativeSum.documentation.markdown": "\nCalcule la somme cumulée d'un indicateur au fil du temps, en ajoutant toutes les valeurs précédentes d'une série à chaque valeur. Pour utiliser cette fonction, vous devez également configurer une dimension de l'histogramme de dates.\n\nCe calcul est réalisé séparément pour des séries distinctes définies par des filtres ou des dimensions de valeurs supérieures.\n\nExemple : visualiser les octets reçus cumulés au fil du temps :\n`cumulative_sum(sum(bytes))`\n ", - "xpack.lens.indexPattern.differences.documentation.markdown": "\nCalcule la différence par rapport à la dernière valeur d'un indicateur au fil du temps. Pour utiliser cette fonction, vous devez également configurer une dimension de l'histogramme de dates.\nLes données doivent être séquentielles pour les différences. Si vos données sont vides lorsque vous utilisez des différences, essayez d'augmenter l'intervalle de l'histogramme de dates.\n\nCe calcul est réalisé séparément pour des séries distinctes définies par des filtres ou des dimensions de valeurs supérieures.\n\nExemple : visualiser la modification des octets reçus au fil du temps :\n`differences(sum(bytes))`\n ", - "xpack.lens.indexPattern.lastValue.documentation.markdown": "\nRenvoie la valeur d'un champ du dernier document, triée par le champ d'heure par défaut de la vue de données.\n\nCette fonction permet de récupérer le dernier état d'une entité.\n\nExemple : obtenir le statut actuel du serveur A :\n`last_value(server.status, kql='server.name=\"A\"')`\n ", - "xpack.lens.indexPattern.metric.documentation.markdown": "\nRenvoie l'indicateur {metric} d'un champ. Cette fonction fonctionne uniquement pour les champs numériques.\n\nExemple : obtenir l'indicateur {metric} d'un prix :\n\"{metric}(price)\"\n\nExemple : obtenir l'indicateur {metric} d'un prix pour des commandes du Royaume-Uni :\n\"{metric}(price, kql='location:UK')\"\n ", - "xpack.lens.indexPattern.movingAverage.documentation.markdown": "\nCalcule la moyenne mobile d'un indicateur au fil du temps, en prenant la moyenne des n dernières valeurs pour calculer la valeur actuelle. Pour utiliser cette fonction, vous devez également configurer une dimension de l'histogramme de dates.\nLa valeur de fenêtre par défaut est {defaultValue}.\n\nCe calcul est réalisé séparément pour des séries distinctes définies par des filtres ou des dimensions de valeurs supérieures.\n\nPrend un paramètre nommé \"window\" qui spécifie le nombre de dernières valeurs à inclure dans le calcul de la moyenne de la valeur actuelle.\n\nExemple : lisser une ligne de mesures :\n`moving_average(sum(bytes), window=5)`\n ", - "xpack.lens.indexPattern.overall_average.documentation.markdown": "\nCalcule la moyenne d'un indicateur pour tous les points de données d'une série dans le graphique actuel. Une série est définie par une dimension à l'aide d'un histogramme de dates ou d'une fonction d'intervalle.\nD'autres dimensions permettant de répartir les données telles que les valeurs supérieures ou les filtres sont traitées en tant que séries distinctes.\n\nSi le graphique actuel n'utilise aucun histogramme de dates ou aucune fonction d'intervalle, \"overall_average\" calcule la moyenne pour toutes les dimensions, quelle que soit la fonction utilisée.\n\nExemple : écart par rapport à la moyenne :\n\"sum(bytes) - overall_average(sum(bytes))\"\n ", - "xpack.lens.indexPattern.overall_max.documentation.markdown": "\nCalcule la valeur maximale d'un indicateur pour tous les points de données d'une série dans le graphique actuel. Une série est définie par une dimension à l'aide d'un histogramme de dates ou d'une fonction d'intervalle.\nD'autres dimensions permettant de répartir les données telles que les valeurs supérieures ou les filtres sont traitées en tant que séries distinctes.\n\nSi le graphique actuel n'utilise aucun histogramme de dates ou aucune fonction d'intervalle, \"overall_max\" calcule la valeur maximale pour toutes les dimensions, quelle que soit la fonction utilisée.\n\nExemple : pourcentage de plage\n\"(sum(bytes) - overall_min(sum(bytes))) / (overall_max(sum(bytes)) - overall_min(sum(bytes)))\"\n ", - "xpack.lens.indexPattern.overall_min.documentation.markdown": "\nCalcule la valeur minimale d'un indicateur pour tous les points de données d'une série dans le graphique actuel. Une série est définie par une dimension à l'aide d'un histogramme de dates ou d'une fonction d'intervalle.\nD'autres dimensions permettant de répartir les données telles que les valeurs supérieures ou les filtres sont traitées en tant que séries distinctes.\n\nSi le graphique actuel n'utilise aucun histogramme de dates ou aucune fonction d'intervalle, \"overall_min\" calcule la valeur minimale pour toutes les dimensions, quelle que soit la fonction utilisée.\n\nExemple : pourcentage de plage\n\"(sum(bytes) - overall_min(sum(bytes)) / (overall_max(sum(bytes)) - overall_min(sum(bytes)))\"\n ", - "xpack.lens.indexPattern.overall_sum.documentation.markdown": "\nCalcule la somme d'un indicateur pour tous les points de données d'une série dans le graphique actuel. Une série est définie par une dimension à l'aide d'un histogramme de dates ou d'une fonction d'intervalle.\nD'autres dimensions permettant de répartir les données telles que les valeurs supérieures ou les filtres sont traitées en tant que séries distinctes.\n\nSi le graphique actuel n'utilise aucun histogramme de dates ou aucune fonction d'intervalle, \"overall_sum\" calcule la somme pour toutes les dimensions, quelle que soit la fonction utilisée.\n\nExemple : pourcentage de total\n\"sum(bytes) / overall_sum(sum(bytes))\"\n ", - "xpack.lens.indexPattern.percentile.documentation.markdown": "\nRenvoie le centile spécifié des valeurs d'un champ. Il s'agit de la valeur de n pour cent des valeurs présentes dans les documents.\n\nExemple : obtenir le nombre d'octets supérieurs à 95 % des valeurs :\n`percentile(bytes, percentile=95)`\n ", - "xpack.lens.indexPattern.percentileRanks.documentation.markdown": "\nRetourne le pourcentage de valeurs qui sont en dessous d'une certaine valeur. Par exemple, si une valeur est supérieure à 95 % des valeurs observées, elle est placée au 95e rang centile.\n\nExemple : Obtenir le pourcentage de valeurs qui sont en dessous de 100 :\n\"percentile_rank(bytes, value=100)\"\n ", - "xpack.lens.indexPattern.standardDeviation.documentation.markdown": "\nRetourne la taille de la variation ou de la dispersion du champ. Cette fonction ne s’applique qu’aux champs numériques.\n\n#### Exemples\n\nPour obtenir l'écart type d'un prix, utilisez standard_deviation(price).\n\nPour obtenir la variance du prix des commandes passées au Royaume-Uni, utilisez `square(standard_deviation(price, kql='location:UK'))`.\n ", - "xpack.lens.indexPattern.time_scale.documentation.markdown": "\n\nCette fonction avancée est utile pour normaliser les comptes et les sommes sur un intervalle de temps spécifique. Elle permet l'intégration avec les indicateurs qui sont stockés déjà normalisés sur un intervalle de temps spécifique.\n\nVous pouvez faire appel à cette fonction uniquement si une fonction d'histogramme des dates est utilisée dans le graphique actuel.\n\nExemple : Un rapport comparant un indicateur déjà normalisé à un autre indicateur devant être normalisé.\n\"normalize_by_unit(counter_rate(max(system.diskio.write.bytes)), unit='s') / last_value(apache.status.bytes_per_second)\"\n ", + "lensFormulaDocs.tinymath.absFunction.markdown": "\nCalcule une valeur absolue. Une valeur négative est multipliée par -1, une valeur positive reste identique.\n\nExemple : calculer la distance moyenne par rapport au niveau de la mer \"abs(average(altitude))\"\n ", + "lensFormulaDocs.tinymath.addFunction.markdown": "\nAjoute jusqu'à deux nombres.\nFonctionne également avec le symbole \"+\".\n\nExemple : calculer la somme de deux champs\n\n\"sum(price) + sum(tax)\"\n\nExemple : compenser le compte par une valeur statique\n\n\"add(count(), 5)\"\n ", + "lensFormulaDocs.tinymath.cbrtFunction.markdown": "\nÉtablit la racine carrée de la valeur.\n\nExemple : calculer la longueur du côté à partir du volume\n`cbrt(last_value(volume))`\n ", + "lensFormulaDocs.tinymath.ceilFunction.markdown": "\nArrondit le plafond de la valeur au chiffre supérieur.\n\nExemple : arrondir le prix au dollar supérieur\n`ceil(sum(price))`\n ", + "lensFormulaDocs.tinymath.clampFunction.markdown": "\nÉtablit une limite minimale et maximale pour la valeur.\n\nExemple : s'assurer de repérer les valeurs aberrantes\n```\nclamp(\n average(bytes),\n percentile(bytes, percentile=5),\n percentile(bytes, percentile=95)\n)\n```\n", + "lensFormulaDocs.tinymath.cubeFunction.markdown": "\nCalcule le cube d'un nombre.\n\nExemple : calculer le volume à partir de la longueur du côté\n`cube(last_value(length))`\n ", + "lensFormulaDocs.tinymath.defaultFunction.markdown": "\nRetourne une valeur numérique par défaut lorsque la valeur est nulle.\n\nExemple : Retourne -1 lorsqu'un champ ne contient aucune donnée.\n\"defaults(average(bytes), -1)\"\n", + "lensFormulaDocs.tinymath.divideFunction.markdown": "\nDivise le premier nombre par le deuxième.\nFonctionne également avec le symbole \"/\".\n\nExemple : calculer la marge bénéficiaire\n\"sum(profit) / sum(revenue)\"\n\nExemple : \"divide(sum(bytes), 2)\"\n ", + "lensFormulaDocs.tinymath.eqFunction.markdown": "\nEffectue une comparaison d'égalité entre deux valeurs.\nÀ utiliser en tant que condition pour la fonction de comparaison \"ifelse\".\nFonctionne également avec le symbole \"==\".\n\nExemple : Retourne \"true\" si la moyenne d'octets est égale à la quantité de mémoire moyenne.\n\"average(bytes) == average(memory)\"\n\nExemple : \"eq(sum(bytes), 1000000)\"\n ", + "lensFormulaDocs.tinymath.expFunction.markdown": "\nÉlève *e* à la puissance n.\n\nExemple : calculer la fonction exponentielle naturelle\n\n`exp(last_value(duration))`\n ", + "lensFormulaDocs.tinymath.fixFunction.markdown": "\nPour les valeurs positives, part du bas. Pour les valeurs négatives, part du haut.\n\nExemple : arrondir à zéro\n\"fix(sum(profit))\"\n ", + "lensFormulaDocs.tinymath.floorFunction.markdown": "\nArrondit à la valeur entière inférieure la plus proche.\n\nExemple : arrondir un prix au chiffre inférieur\n\"floor(sum(price))\"\n ", + "lensFormulaDocs.tinymath.gteFunction.markdown": "\nEffectue une comparaison de supériorité entre deux valeurs.\nÀ utiliser en tant que condition pour la fonction de comparaison \"ifelse\".\nFonctionne également avec le symbole \">=\".\n\nExemple : Retourne \"true\" si la moyenne d'octets est supérieure ou égale à la quantité moyenne de mémoire.\n\"average(bytes) >= average(memory)\"\n\nExemple : \"gte(average(bytes), 1000)\"\n ", + "lensFormulaDocs.tinymath.gtFunction.markdown": "\nEffectue une comparaison de supériorité entre deux valeurs.\nÀ utiliser en tant que condition pour la fonction de comparaison \"ifelse\".\nFonctionne également avec le symbole \">\".\n\nExemple : Retourne \"true\" si la moyenne d'octets est supérieure à la quantité moyenne de mémoire.\n\"average(bytes) > average(memory)\"\n\nExemple : \"gt(average(bytes), 1000)\"\n ", + "lensFormulaDocs.tinymath.ifElseFunction.markdown": "\nRetourne une valeur selon si l'élément de condition est \"true\" ou \"false\".\n\nExemple : Revenus moyens par client, mais dans certains cas, l'ID du client n'est pas fourni, et le client est alors compté comme client supplémentaire.\n`sum(total)/(unique_count(customer_id) + ifelse( count() > count(kql='customer_id:*'), 1, 0))`\n ", + "lensFormulaDocs.tinymath.logFunction.markdown": "\nÉtablit un logarithme avec base optionnelle. La base naturelle *e* est utilisée par défaut.\n\nExemple : calculer le nombre de bits nécessaire au stockage de valeurs\n```\nlog(sum(bytes))\nlog(sum(bytes), 2)\n```\n ", + "lensFormulaDocs.tinymath.lteFunction.markdown": "\nEffectue une comparaison d'infériorité ou de supériorité entre deux valeurs.\nÀ utiliser en tant que condition pour la fonction de comparaison \"ifelse\".\nFonctionne également avec le symbole \"<=\".\n\nExemple : Retourne \"true\" si la moyenne d'octets est inférieure ou égale à la quantité moyenne de mémoire.\n\"average(bytes) <= average(memory)\"\n\nExemple : \"lte(average(bytes), 1000)\"\n ", + "lensFormulaDocs.tinymath.ltFunction.markdown": "\nEffectue une comparaison d'infériorité entre deux valeurs.\nÀ utiliser en tant que condition pour la fonction de comparaison \"ifelse\".\nFonctionne également avec le symbole \"<\".\n\nExemple : Retourne \"true\" si la moyenne d'octets est inférieure à la quantité moyenne de mémoire.\n\"average(bytes) <= average(memory)\"\n\nExemple : \"lt(average(bytes), 1000)\"\n ", + "lensFormulaDocs.tinymath.maxFunction.markdown": "\nTrouve la valeur maximale entre deux nombres.\n\nExemple : Trouver le maximum entre deux moyennes de champs\n\"pick_max(average(bytes), average(memory))\"\n ", + "lensFormulaDocs.tinymath.minFunction.markdown": "\nTrouve la valeur minimale entre deux nombres.\n\nExemple : Trouver le minimum entre deux moyennes de champs\n`pick_min(average(bytes), average(memory))`\n ", + "lensFormulaDocs.tinymath.modFunction.markdown": "\nÉtablit le reste après division de la fonction par un nombre.\n\nExemple : calculer les trois derniers chiffres d'une valeur\n\"mod(sum(price), 1000)\"\n ", + "lensFormulaDocs.tinymath.multiplyFunction.markdown": "\nMultiplie deux nombres.\nFonctionne également avec le symbole \"*\".\n\nExemple : calculer le prix après application du taux d'imposition courant\n`sum(bytes) * last_value(tax_rate)`\n\nExemple : calculer le prix après application du taux d'imposition constant\n\"multiply(sum(price), 1.2)\"\n ", + "lensFormulaDocs.tinymath.powFunction.markdown": "\nÉlève la valeur à une puissance spécifique. Le deuxième argument est obligatoire.\n\nExemple : calculer le volume en fonction de la longueur du côté\n\"pow(last_value(length), 3)\"\n ", + "lensFormulaDocs.tinymath.roundFunction.markdown": "\nArrondit à un nombre donné de décimales, 0 étant la valeur par défaut.\n\nExemples : arrondir au centième\n```\nround(sum(bytes))\nround(sum(bytes), 2)\n```\n ", + "lensFormulaDocs.tinymath.sqrtFunction.markdown": "\nÉtablit la racine carrée d'une valeur positive uniquement.\n\nExemple : calculer la longueur du côté en fonction de la surface\n`sqrt(last_value(area))`\n ", + "lensFormulaDocs.tinymath.squareFunction.markdown": "\nÉlève la valeur à la puissance 2.\n\nExemple : calculer l’aire en fonction de la longueur du côté\n`square(last_value(length))`\n ", + "lensFormulaDocs.tinymath.subtractFunction.markdown": "\nSoustrait le premier nombre du deuxième.\nFonctionne également avec le symbole \"-\".\n\nExemple : calculer la plage d'un champ\n\"subtract(max(bytes), min(bytes))\"\n ", + "lensFormulaDocs.documentation.filterRatioDescription.markdown": "### Rapport de filtre :\n\nUtilisez \"kql=''\" pour filtrer un ensemble de documents et le comparer à d'autres documents du même regroupement.\nPar exemple, pour consulter l'évolution du taux d'erreur au fil du temps :\n\n```\ncount(kql='response.status_code > 400') / count()\n```\n ", + "lensFormulaDocs.documentation.percentOfTotalDescription.markdown": "### Pourcentage du total\n\nLes formules peuvent calculer \"overall_sum\" pour tous les regroupements,\nce qui permet de convertir chaque regroupement en un pourcentage du total :\n\n```\nsum(products.base_price) / overall_sum(sum(products.base_price))\n```\n ", + "lensFormulaDocs.documentation.recentChangeDescription.markdown": "### Modification récente\n\nUtilisez \"reducedTimeRange='30m'\" pour ajouter un filtre supplémentaire sur la plage temporelle d'un indicateur aligné avec la fin d'une plage temporelle globale. Vous pouvez l'utiliser pour calculer le degré de modification récente d'une valeur.\n\n```\nmax(system.network.in.bytes, reducedTimeRange=\"30m\")\n - min(system.network.in.bytes, reducedTimeRange=\"30m\")\n```\n ", + "lensFormulaDocs.documentation.weekOverWeekDescription.markdown": "### Semaine après semaine :\n\nUtilisez \"shift='1w'\" pour obtenir la valeur de chaque regroupement\nde la semaine précédente. Le décalage ne doit pas être utilisé avec la fonction *Valeurs les plus élevées*.\n\n```\npercentile(system.network.in.bytes, percentile=99) /\npercentile(system.network.in.bytes, percentile=99, shift='1w')\n```\n ", + "lensFormulaDocs.cardinality.documentation.markdown": "\nCalcule le nombre de valeurs uniques d'un champ donné. Fonctionne pour les nombres, les chaînes, les dates et les valeurs booléennes.\n\nExemple : calculer le nombre de produits différents :\n`unique_count(product.name)`\n\nExemple : calculer le nombre de produits différents du groupe \"clothes\" :\n\"unique_count(product.name, kql='product.group=clothes')\"\n ", + "lensFormulaDocs.count.documentation.markdown": "\nNombre total de documents. Lorsque vous fournissez un champ, le nombre total de valeurs de champ est compté. Lorsque vous utilisez la fonction de décompte pour les champs qui comportent plusieurs valeurs dans un même document, toutes les valeurs sont comptées.\n\n#### Exemples\n\nPour calculer le nombre total de documents, utilisez `count()`.\n\nPour calculer le nombre de produits, utilisez `count(products.id)`.\n\nPour calculer le nombre de documents qui correspondent à un filtre donné, utilisez `count(kql='price > 500')`.\n ", + "lensFormulaDocs.counterRate.documentation.markdown": "\nCalcule le taux d'un compteur toujours croissant. Cette fonction renvoie uniquement des résultats utiles inhérents aux champs d'indicateurs de compteur qui contiennent une mesure quelconque à croissance régulière.\nSi la valeur diminue, elle est interprétée comme une mesure de réinitialisation de compteur. Pour obtenir des résultats plus précis, \"counter_rate\" doit être calculé d’après la valeur \"max\" du champ.\n\nCe calcul est réalisé séparément pour des séries distinctes définies par des filtres ou des dimensions de valeurs supérieures.\nIl utilise l'intervalle en cours utilisé dans la formule.\n\nExemple : visualiser le taux d'octets reçus au fil du temps par un serveur Memcached :\n`counter_rate(max(memcached.stats.read.bytes))`\n ", + "lensFormulaDocs.cumulativeSum.documentation.markdown": "\nCalcule la somme cumulée d'un indicateur au fil du temps, en ajoutant toutes les valeurs précédentes d'une série à chaque valeur. Pour utiliser cette fonction, vous devez également configurer une dimension de l'histogramme de dates.\n\nCe calcul est réalisé séparément pour des séries distinctes définies par des filtres ou des dimensions de valeurs supérieures.\n\nExemple : visualiser les octets reçus cumulés au fil du temps :\n`cumulative_sum(sum(bytes))`\n ", + "lensFormulaDocs.differences.documentation.markdown": "\nCalcule la différence par rapport à la dernière valeur d'un indicateur au fil du temps. Pour utiliser cette fonction, vous devez également configurer une dimension de l'histogramme de dates.\nLes données doivent être séquentielles pour les différences. Si vos données sont vides lorsque vous utilisez des différences, essayez d'augmenter l'intervalle de l'histogramme de dates.\n\nCe calcul est réalisé séparément pour des séries distinctes définies par des filtres ou des dimensions de valeurs supérieures.\n\nExemple : visualiser la modification des octets reçus au fil du temps :\n`differences(sum(bytes))`\n ", + "lensFormulaDocs.lastValue.documentation.markdown": "\nRenvoie la valeur d'un champ du dernier document, triée par le champ d'heure par défaut de la vue de données.\n\nCette fonction permet de récupérer le dernier état d'une entité.\n\nExemple : obtenir le statut actuel du serveur A :\n`last_value(server.status, kql='server.name=\"A\"')`\n ", + "lensFormulaDocs.metric.documentation.markdown": "\nRenvoie l'indicateur {metric} d'un champ. Cette fonction fonctionne uniquement pour les champs numériques.\n\nExemple : obtenir l'indicateur {metric} d'un prix :\n\"{metric}(price)\"\n\nExemple : obtenir l'indicateur {metric} d'un prix pour des commandes du Royaume-Uni :\n\"{metric}(price, kql='location:UK')\"\n ", + "lensFormulaDocs.movingAverage.documentation.markdown": "\nCalcule la moyenne mobile d'un indicateur au fil du temps, en prenant la moyenne des n dernières valeurs pour calculer la valeur actuelle. Pour utiliser cette fonction, vous devez également configurer une dimension de l'histogramme de dates.\nLa valeur de fenêtre par défaut est {defaultValue}.\n\nCe calcul est réalisé séparément pour des séries distinctes définies par des filtres ou des dimensions de valeurs supérieures.\n\nPrend un paramètre nommé \"window\" qui spécifie le nombre de dernières valeurs à inclure dans le calcul de la moyenne de la valeur actuelle.\n\nExemple : lisser une ligne de mesures :\n`moving_average(sum(bytes), window=5)`\n ", + "lensFormulaDocs.overall_average.documentation.markdown": "\nCalcule la moyenne d'un indicateur pour tous les points de données d'une série dans le graphique actuel. Une série est définie par une dimension à l'aide d'un histogramme de dates ou d'une fonction d'intervalle.\nD'autres dimensions permettant de répartir les données telles que les valeurs supérieures ou les filtres sont traitées en tant que séries distinctes.\n\nSi le graphique actuel n'utilise aucun histogramme de dates ou aucune fonction d'intervalle, \"overall_average\" calcule la moyenne pour toutes les dimensions, quelle que soit la fonction utilisée.\n\nExemple : écart par rapport à la moyenne :\n\"sum(bytes) - overall_average(sum(bytes))\"\n ", + "lensFormulaDocs.overall_max.documentation.markdown": "\nCalcule la valeur maximale d'un indicateur pour tous les points de données d'une série dans le graphique actuel. Une série est définie par une dimension à l'aide d'un histogramme de dates ou d'une fonction d'intervalle.\nD'autres dimensions permettant de répartir les données telles que les valeurs supérieures ou les filtres sont traitées en tant que séries distinctes.\n\nSi le graphique actuel n'utilise aucun histogramme de dates ou aucune fonction d'intervalle, \"overall_max\" calcule la valeur maximale pour toutes les dimensions, quelle que soit la fonction utilisée.\n\nExemple : pourcentage de plage\n\"(sum(bytes) - overall_min(sum(bytes))) / (overall_max(sum(bytes)) - overall_min(sum(bytes)))\"\n ", + "lensFormulaDocs.overall_min.documentation.markdown": "\nCalcule la valeur minimale d'un indicateur pour tous les points de données d'une série dans le graphique actuel. Une série est définie par une dimension à l'aide d'un histogramme de dates ou d'une fonction d'intervalle.\nD'autres dimensions permettant de répartir les données telles que les valeurs supérieures ou les filtres sont traitées en tant que séries distinctes.\n\nSi le graphique actuel n'utilise aucun histogramme de dates ou aucune fonction d'intervalle, \"overall_min\" calcule la valeur minimale pour toutes les dimensions, quelle que soit la fonction utilisée.\n\nExemple : pourcentage de plage\n\"(sum(bytes) - overall_min(sum(bytes)) / (overall_max(sum(bytes)) - overall_min(sum(bytes)))\"\n ", + "lensFormulaDocs.overall_sum.documentation.markdown": "\nCalcule la somme d'un indicateur pour tous les points de données d'une série dans le graphique actuel. Une série est définie par une dimension à l'aide d'un histogramme de dates ou d'une fonction d'intervalle.\nD'autres dimensions permettant de répartir les données telles que les valeurs supérieures ou les filtres sont traitées en tant que séries distinctes.\n\nSi le graphique actuel n'utilise aucun histogramme de dates ou aucune fonction d'intervalle, \"overall_sum\" calcule la somme pour toutes les dimensions, quelle que soit la fonction utilisée.\n\nExemple : pourcentage de total\n\"sum(bytes) / overall_sum(sum(bytes))\"\n ", + "lensFormulaDocs.percentile.documentation.markdown": "\nRenvoie le centile spécifié des valeurs d'un champ. Il s'agit de la valeur de n pour cent des valeurs présentes dans les documents.\n\nExemple : obtenir le nombre d'octets supérieurs à 95 % des valeurs :\n`percentile(bytes, percentile=95)`\n ", + "lensFormulaDocs.percentileRanks.documentation.markdown": "\nRetourne le pourcentage de valeurs qui sont en dessous d'une certaine valeur. Par exemple, si une valeur est supérieure à 95 % des valeurs observées, elle est placée au 95e rang centile.\n\nExemple : Obtenir le pourcentage de valeurs qui sont en dessous de 100 :\n\"percentile_rank(bytes, value=100)\"\n ", + "lensFormulaDocs.standardDeviation.documentation.markdown": "\nRetourne la taille de la variation ou de la dispersion du champ. Cette fonction ne s’applique qu’aux champs numériques.\n\n#### Exemples\n\nPour obtenir l'écart type d'un prix, utilisez standard_deviation(price).\n\nPour obtenir la variance du prix des commandes passées au Royaume-Uni, utilisez `square(standard_deviation(price, kql='location:UK'))`.\n ", + "lensFormulaDocs.time_scale.documentation.markdown": "\n\nCette fonction avancée est utile pour normaliser les comptes et les sommes sur un intervalle de temps spécifique. Elle permet l'intégration avec les indicateurs qui sont stockés déjà normalisés sur un intervalle de temps spécifique.\n\nVous pouvez faire appel à cette fonction uniquement si une fonction d'histogramme des dates est utilisée dans le graphique actuel.\n\nExemple : Un rapport comparant un indicateur déjà normalisé à un autre indicateur devant être normalisé.\n\"normalize_by_unit(counter_rate(max(system.diskio.write.bytes)), unit='s') / last_value(apache.status.bytes_per_second)\"\n ", "xpack.lens.AggBasedLabel": "visualisation basée sur l'agrégation", "xpack.lens.app.addToLibrary": "Enregistrer dans la bibliothèque", "xpack.lens.app.cancel": "Annuler", @@ -22149,11 +22149,11 @@ "xpack.lens.fittingFunctionsTitle.lookahead": "Suivant", "xpack.lens.fittingFunctionsTitle.none": "Masquer", "xpack.lens.fittingFunctionsTitle.zero": "Zéro", - "xpack.lens.formula.base": "base", - "xpack.lens.formula.boolean": "booléen", - "xpack.lens.formula.condition": "condition", - "xpack.lens.formula.decimals": "décimales", - "xpack.lens.formula.defaultValue": "par défaut", + "lensFormulaDocs.tinymath.base": "base", + "lensFormulaDocs.boolean": "booléen", + "lensFormulaDocs.tinymath.condition": "condition", + "lensFormulaDocs.tinymath.decimals": "décimales", + "lensFormulaDocs.tinymath.defaultValue": "par défaut", "xpack.lens.formula.disableWordWrapLabel": "Désactiver le renvoi à la ligne des mots", "xpack.lens.formula.editorHelpInlineHideLabel": "Masquer la référence des fonctions", "xpack.lens.formula.editorHelpInlineHideToolTip": "Masquer la référence des fonctions", @@ -22161,35 +22161,35 @@ "xpack.lens.formula.fullScreenEnterLabel": "Développer", "xpack.lens.formula.fullScreenExitLabel": "Réduire", "xpack.lens.formula.kqlExtraArguments": "[kql]?: string, [lucene]?: string", - "xpack.lens.formula.left": "gauche", - "xpack.lens.formula.max": "max", - "xpack.lens.formula.min": "min", - "xpack.lens.formula.number": "numéro", + "lensFormulaDocs.tinymath.left": "gauche", + "lensFormulaDocs.tinymath.max": "max", + "lensFormulaDocs.tinymath.min": "min", + "lensFormulaDocs.number": "numéro", "xpack.lens.formula.reducedTimeRangeExtraArguments": "[reducedTimeRange]?: string", "xpack.lens.formula.requiredArgument": "Obligatoire", - "xpack.lens.formula.right": "droite", + "lensFormulaDocs.tinymath.right": "droite", "xpack.lens.formula.shiftExtraArguments": "[shift]?: string", - "xpack.lens.formula.string": "chaîne", - "xpack.lens.formula.value": "valeur", - "xpack.lens.formulaCommonFormulaDocumentation": "Les formules les plus courantes divisent deux valeurs pour produire un pourcentage. Pour obtenir un affichage correct, définissez \"Format de valeur\" sur \"pourcent\".", - "xpack.lens.formulaDocumentation.columnCalculationSection": "Calculs de colonnes", - "xpack.lens.formulaDocumentation.columnCalculationSectionDescription": "Ces fonctions sont exécutées pour chaque ligne, mais elles sont fournies avec la colonne entière comme contexte. Elles sont également appelées fonctions de fenêtre.", - "xpack.lens.formulaDocumentation.comparisonSection": "Comparaison", - "xpack.lens.formulaDocumentation.comparisonSectionDescription": "Ces fonctions sont utilisées pour effectuer une comparaison de valeurs.", - "xpack.lens.formulaDocumentation.constantsSection": "Contexte Kibana", - "xpack.lens.formulaDocumentation.constantsSectionDescription": "Ces fonctions sont utilisées pour récupérer des variables de contexte Kibana, c’est-à-dire l’histogramme de date \"interval\", le \"now\" actuel et le \"time_range\" sélectionné, et pour vous aider à faire des opérations mathématiques de dates.", - "xpack.lens.formulaDocumentation.elasticsearchSection": "Elasticsearch", - "xpack.lens.formulaDocumentation.elasticsearchSectionDescription": "Ces fonctions seront exécutées sur les documents bruts pour chaque ligne du tableau résultant, en agrégeant tous les documents correspondant aux dimensions de répartition en une seule valeur.", - "xpack.lens.formulaDocumentation.filterRatio": "Rapport de filtre", - "xpack.lens.formulaDocumentation.mathSection": "Mathématique", - "xpack.lens.formulaDocumentation.mathSectionDescription": "Ces fonctions seront exécutées pour chaque ligne du tableau résultant en utilisant des valeurs uniques de la même ligne calculées à l'aide d'autres fonctions.", - "xpack.lens.formulaDocumentation.percentOfTotal": "Pourcentage du total", - "xpack.lens.formulaDocumentation.recentChange": "Modification récente", - "xpack.lens.formulaDocumentation.weekOverWeek": "Semaine après semaine", + "lensFormulaDocs.string": "chaîne", + "lensFormulaDocs.tinymath.value": "valeur", + "lensFormulaDocs.CommonFormulaDocumentation": "Les formules les plus courantes divisent deux valeurs pour produire un pourcentage. Pour obtenir un affichage correct, définissez \"Format de valeur\" sur \"pourcent\".", + "lensFormulaDocs.documentation.columnCalculationSection": "Calculs de colonnes", + "lensFormulaDocs.documentation.columnCalculationSectionDescription": "Ces fonctions sont exécutées pour chaque ligne, mais elles sont fournies avec la colonne entière comme contexte. Elles sont également appelées fonctions de fenêtre.", + "lensFormulaDocs.documentation.comparisonSection": "Comparaison", + "lensFormulaDocs.documentation.comparisonSectionDescription": "Ces fonctions sont utilisées pour effectuer une comparaison de valeurs.", + "lensFormulaDocs.documentation.constantsSection": "Contexte Kibana", + "lensFormulaDocs.documentation.constantsSectionDescription": "Ces fonctions sont utilisées pour récupérer des variables de contexte Kibana, c’est-à-dire l’histogramme de date \"interval\", le \"now\" actuel et le \"time_range\" sélectionné, et pour vous aider à faire des opérations mathématiques de dates.", + "lensFormulaDocs.documentation.elasticsearchSection": "Elasticsearch", + "lensFormulaDocs.documentation.elasticsearchSectionDescription": "Ces fonctions seront exécutées sur les documents bruts pour chaque ligne du tableau résultant, en agrégeant tous les documents correspondant aux dimensions de répartition en une seule valeur.", + "lensFormulaDocs.documentation.filterRatio": "Rapport de filtre", + "lensFormulaDocs.documentation.mathSection": "Mathématique", + "lensFormulaDocs.documentation.mathSectionDescription": "Ces fonctions seront exécutées pour chaque ligne du tableau résultant en utilisant des valeurs uniques de la même ligne calculées à l'aide d'autres fonctions.", + "lensFormulaDocs.documentation.percentOfTotal": "Pourcentage du total", + "lensFormulaDocs.documentation.recentChange": "Modification récente", + "lensFormulaDocs.documentation.weekOverWeek": "Semaine après semaine", "xpack.lens.formulaDocumentationHeading": "Fonctionnement", "xpack.lens.formulaEnableWordWrapLabel": "Activer le renvoi à la ligne des mots", "xpack.lens.formulaExampleMarkdown": "Exemples", - "xpack.lens.formulaFrequentlyUsedHeading": "Formules courantes", + "lensFormulaDocs.frequentlyUsedHeading": "Formules courantes", "xpack.lens.formulaPlaceholderText": "Saisissez une formule en combinant des fonctions avec la fonction mathématique, telle que :", "xpack.lens.fullExtent.niceValues": "Arrondir aux valeurs de \"gentillesse\"", "xpack.lens.functions.collapse.args.byHelpText": "Colonnes selon lesquelles effectuer le regroupement - ces colonnes sont conservées telles quelles", @@ -22248,29 +22248,29 @@ "xpack.lens.indexPattern.allFieldsLabelHelp": "Glissez-déposez les champs disponibles dans l’espace de travail et créez des visualisations. Pour modifier les champs disponibles, sélectionnez une vue de données différente, modifiez vos requêtes ou utilisez une plage temporelle différente. Certains types de champ ne peuvent pas être visualisés dans Lens, y compris les champ de texte intégral et champs géographiques.", "xpack.lens.indexPattern.ascendingCountPrecisionErrorWarning.link": "veuillez consulter la documentation", "xpack.lens.indexPattern.availableFieldsLabel": "Champs disponibles", - "xpack.lens.indexPattern.avg": "Moyenne", + "lensFormulaDocs.avg": "Moyenne", "xpack.lens.indexPattern.avg.description": "Agrégation d'indicateurs à valeur unique qui calcule la moyenne des valeurs numériques extraites des documents agrégés", "xpack.lens.indexPattern.avg.quickFunctionDescription": "Valeur moyenne d'un ensemble de champs de nombres.", "xpack.lens.indexPattern.bitsFormatLabel": "Bits (1000)", "xpack.lens.indexPattern.bytesFormatLabel": "Octets (1024)", - "xpack.lens.indexPattern.cardinality": "Compte unique", + "lensFormulaDocs.cardinality": "Compte unique", "xpack.lens.indexPattern.cardinality.documentation.quick": "\nNombre de valeurs uniques pour un champ spécifié de nombre, de chaîne, de date ou booléen.\n ", - "xpack.lens.indexPattern.cardinality.signature": "champ : chaîne", + "lensFormulaDocs.cardinality.signature": "champ : chaîne", "xpack.lens.indexPattern.changeDataViewTitle": "Vue de données", "xpack.lens.indexPattern.chooseField": "Champ", "xpack.lens.indexPattern.chooseFieldLabel": "Pour utiliser cette fonction, sélectionnez un champ.", "xpack.lens.indexPattern.chooseSubFunction": "Choisir une sous-fonction", "xpack.lens.indexPattern.columnFormatLabel": "Format de valeur", "xpack.lens.indexPattern.compactLabel": "Valeurs compactes", - "xpack.lens.indexPattern.count": "Décompte", + "lensFormulaDocs.count": "Décompte", "xpack.lens.indexPattern.count.documentation.quick": "\nNombre total de documents. Lorsque vous fournissez un champ, le nombre total de valeurs de champ est compté. Lorsque vous utilisez la fonction de décompte pour les champs qui comportent plusieurs valeurs dans un même document, toutes les valeurs sont comptées.\n ", - "xpack.lens.indexPattern.count.signature": "[champ : chaîne]", + "lensFormulaDocs.count.signature": "[champ : chaîne]", "xpack.lens.indexPattern.counterRate": "Taux de compteur", "xpack.lens.indexPattern.counterRate.documentation.quick": "\n Taux de modification sur la durée d'un indicateur de série temporelle qui augmente sans cesse.\n ", - "xpack.lens.indexPattern.counterRate.signature": "indicateur : nombre", + "lensFormulaDocs.counterRate.signature": "indicateur : nombre", "xpack.lens.indexPattern.countOf": "Nombre d'enregistrements", - "xpack.lens.indexPattern.cumulative_sum.signature": "indicateur : nombre", - "xpack.lens.indexPattern.cumulativeSum": "Somme cumulée", + "lensFormulaDocs.cumulative_sum.signature": "indicateur : nombre", + "lensFormulaDocs.cumulativeSum": "Somme cumulée", "xpack.lens.indexPattern.cumulativeSum.documentation.quick": "\n Somme de toutes les valeurs au fur et à mesure de leur croissance.\n ", "xpack.lens.indexPattern.custom.externalDoc": "Syntaxe de format numérique", "xpack.lens.indexPattern.custom.patternLabel": "Format", @@ -22300,9 +22300,9 @@ "xpack.lens.indexPattern.dateRange.noTimeRange": "L’intervalle de plage temporelle actuel n’est pas disponible", "xpack.lens.indexPattern.decimalPlacesLabel": "Décimales", "xpack.lens.indexPattern.defaultFormatLabel": "Par défaut", - "xpack.lens.indexPattern.derivative": "Différences", + "lensFormulaDocs.derivative": "Différences", "xpack.lens.indexPattern.differences.documentation.quick": "\n Variation entre les valeurs des intervalles suivants.\n ", - "xpack.lens.indexPattern.differences.signature": "indicateur : nombre", + "lensFormulaDocs.differences.signature": "indicateur : nombre", "xpack.lens.indexPattern.dimensionEditor.headingAppearance": "Apparence", "xpack.lens.indexPattern.dimensionEditor.headingData": "Données", "xpack.lens.indexPattern.dimensionEditor.headingFormula": "Formule", @@ -22355,30 +22355,30 @@ "xpack.lens.indexPattern.invalidOperationLabel": "Ce champ ne fonctionne pas avec la fonction sélectionnée.", "xpack.lens.indexPattern.invalidReducedTimeRange": "Plage temporelle réduite non valide. Entrez un entier positif suivi par l'une des unités suivantes : s, m, h, d, w, M, y. Par exemple, 3h pour 3 heures", "xpack.lens.indexPattern.invalidTimeShift": "Décalage non valide. Entrez un entier positif suivi par l'une des unités suivantes : s, m, h, d, w, M, y. Par exemple, 3h pour 3 heures", - "xpack.lens.indexPattern.lastValue": "Dernière valeur", + "lensFormulaDocs.lastValue": "Dernière valeur", "xpack.lens.indexPattern.lastValue.disabled": "Cette fonction requiert la présence d'un champ de date dans la vue de données.", "xpack.lens.indexPattern.lastValue.documentation.quick": "\nValeur d'un champ du dernier document, triée par le champ d'heure par défaut de la vue de données.\n ", "xpack.lens.indexPattern.lastValue.showArrayValues": "Afficher les valeurs de tableau", "xpack.lens.indexPattern.lastValue.showArrayValuesExplanation": "Affiche toutes les valeurs associées à ce champ dans chaque dernier document.", "xpack.lens.indexPattern.lastValue.showArrayValuesWithTopValuesWarning": "Lorsque vous affichez les valeurs de tableau, vous ne pouvez pas utiliser ce champ pour classer les valeurs les plus élevées.", - "xpack.lens.indexPattern.lastValue.signature": "champ : chaîne", + "lensFormulaDocs.lastValue.signature": "champ : chaîne", "xpack.lens.indexPattern.lastValue.sortField": "Trier par le champ de date", "xpack.lens.indexPattern.lastValue.sortFieldPlaceholder": "Champ de tri", - "xpack.lens.indexPattern.max": "Maximum", + "lensFormulaDocs.max": "Maximum", "xpack.lens.indexPattern.max.description": "Agrégation d'indicateurs à valeur unique qui renvoie la valeur maximale des valeurs numériques extraites des documents agrégés.", "xpack.lens.indexPattern.max.quickFunctionDescription": "Valeur maximale d'un champ de nombre.", - "xpack.lens.indexPattern.median": "Médiane", + "lensFormulaDocs.median": "Médiane", "xpack.lens.indexPattern.median.description": "Agrégation d'indicateurs à valeur unique qui calcule la valeur médiane des valeurs numériques extraites des documents agrégés.", "xpack.lens.indexPattern.median.quickFunctionDescription": "Valeur médiane d'un champ de nombre.", "xpack.lens.indexPattern.metaFieldsLabel": "Champs méta", - "xpack.lens.indexPattern.metric.signature": "champ : chaîne", - "xpack.lens.indexPattern.min": "Minimum", + "lensFormulaDocs.metric.signature": "champ : chaîne", + "lensFormulaDocs.min": "Minimum", "xpack.lens.indexPattern.min.description": "Agrégation d'indicateurs à valeur unique qui renvoie la valeur minimale des valeurs numériques extraites des documents agrégés.", "xpack.lens.indexPattern.min.quickFunctionDescription": "Valeur minimale d'un champ de nombre.", "xpack.lens.indexPattern.missingFieldLabel": "Champ manquant", "xpack.lens.indexPattern.moveToWorkspaceNotAvailable": "Pour visualiser ce champ, veuillez l'ajouter directement au calque souhaité. L'ajout de ce champ à l'espace de travail n'est pas pris en charge avec votre configuration actuelle.", - "xpack.lens.indexPattern.moving_average.signature": "indicateur : nombre, [window] : nombre", - "xpack.lens.indexPattern.movingAverage": "Moyenne mobile", + "lensFormulaDocs.moving_average.signature": "indicateur : nombre, [window] : nombre", + "lensFormulaDocs.movingAverage": "Moyenne mobile", "xpack.lens.indexPattern.movingAverage.basicExplanation": "La moyenne mobile fait glisser une fenêtre sur les données et affiche la valeur moyenne. La moyenne mobile est prise en charge uniquement par les histogrammes des dates.", "xpack.lens.indexPattern.movingAverage.documentation.quick": "\n Moyenne d'une fenêtre mobile de valeurs sur la durée.\n ", "xpack.lens.indexPattern.movingAverage.limitations": "La première valeur de moyenne mobile commence au deuxième élément.", @@ -22394,20 +22394,20 @@ "xpack.lens.indexPattern.noRealMetricError": "Un calque uniquement doté de valeurs statiques n’affichera pas de résultats ; utilisez au moins un indicateur dynamique.", "xpack.lens.indexPattern.notAbsoluteTimeShift": "Décalage non valide.", "xpack.lens.indexPattern.numberFormatLabel": "Nombre", - "xpack.lens.indexPattern.overall_metric": "indicateur : nombre", - "xpack.lens.indexPattern.overallMax": "Max général", - "xpack.lens.indexPattern.overallMin": "Min général", - "xpack.lens.indexPattern.overallSum": "Somme générale", + "lensFormulaDocs.overall_metric": "indicateur : nombre", + "lensFormulaDocs.overallMax": "Max général", + "lensFormulaDocs.overallMin": "Min général", + "lensFormulaDocs.overallSum": "Somme générale", "xpack.lens.indexPattern.percentFormatLabel": "Pourcent", - "xpack.lens.indexPattern.percentile": "Centile", + "lensFormulaDocs.percentile": "Centile", "xpack.lens.indexPattern.percentile.documentation.quick": "\n La plus grande valeur qui est inférieure à n pour cent des valeurs présentes dans tous les documents.\n ", "xpack.lens.indexPattern.percentile.percentileRanksValue": "Valeur des rangs centiles", "xpack.lens.indexPattern.percentile.percentileValue": "Centile", - "xpack.lens.indexPattern.percentile.signature": "champ : chaîne, [percentile] : nombre", - "xpack.lens.indexPattern.percentileRank": "Rang centile", + "lensFormulaDocs.percentile.signature": "champ : chaîne, [percentile] : nombre", + "lensFormulaDocs.percentileRank": "Rang centile", "xpack.lens.indexPattern.percentileRanks.documentation.quick": "\nPourcentage des valeurs inférieures à une valeur spécifique. Par exemple, lorsqu'une valeur est supérieure ou égale à 95 % des valeurs calculées, elle est placée au 95e rang centile.\n ", "xpack.lens.indexPattern.percentileRanks.errorMessage": "La valeur des rangs centiles doit être un nombre", - "xpack.lens.indexPattern.percentileRanks.signature": "champ : chaîne, [valeur] : nombre", + "lensFormulaDocs.percentileRanks.signature": "champ : chaîne, [valeur] : nombre", "xpack.lens.indexPattern.precisionErrorWarning.accuracyDisabled.shortMessage": "Il peut s'agit d'une approximation. Pour obtenir des résultats plus fins, vous pouvez activer le mode de précision, mais ce mode augmente la charge sur le cluster Elasticsearch.", "xpack.lens.indexPattern.precisionErrorWarning.accuracyEnabled.shortMessage": "Il peut s'agit d'une approximation. Pour obtenir des résultats plus fins, utilisez les filtres ou augmentez le nombre défini pour Valeurs les plus élevées.", "xpack.lens.indexPattern.precisionErrorWarning.ascendingCountPrecisionErrorWarning.shortMessage": "Il peut s'agir d'une valeur approximative selon la façon dont les données sont indexées. Pour obtenir des résultats plus fins, effectuez un tri par rareté.", @@ -22457,7 +22457,7 @@ "xpack.lens.indexPattern.samplingPerLayer.fallbackLayerName": "Calque de données", "xpack.lens.indexPattern.settingsSamplingUnsupported": "La sélection de cette fonction a pour effet de changer l'échantillonnage de ce calque à 100 % afin de garantir un fonctionnement correct.", "xpack.lens.indexPattern.sortField.invalid": "Champ non valide. Vérifiez votre vue de données ou choisissez un autre champ.", - "xpack.lens.indexPattern.standardDeviation": "Écart-type", + "lensFormulaDocs.standardDeviation": "Écart-type", "xpack.lens.indexPattern.standardDeviation.description": "Agrégation d'indicateurs à valeur unique qui calcule l’écart-type des valeurs numériques extraites des documents agrégés", "xpack.lens.indexPattern.standardDeviation.quickFunctionDescription": "Écart-type des valeurs d'un champ de nombre qui représente la quantité d'écart des valeurs des champs.", "xpack.lens.indexPattern.staticValue.label": "Valeur de la ligne de référence", @@ -22467,7 +22467,7 @@ "xpack.lens.indexPattern.staticValueWarningText": "Pour écraser la valeur statique, sélectionnez une fonction rapide.", "xpack.lens.indexPattern.suffixLabel": "Suffixe", "xpack.lens.indexpattern.suggestions.overTimeLabel": "Sur la durée", - "xpack.lens.indexPattern.sum": "Somme", + "lensFormulaDocs.sum": "Somme", "xpack.lens.indexPattern.sum.description": "Agrégation d'indicateurs à valeur unique qui récapitule les valeurs numériques extraites des documents agrégés.", "xpack.lens.indexPattern.sum.quickFunctionDescription": "Total des valeurs d'un champ de nombre.", "xpack.lens.indexPattern.switchToRare": "Classer par rareté", @@ -22505,8 +22505,8 @@ "xpack.lens.indexPattern.terms.size": "Nombre de valeurs", "xpack.lens.indexPattern.termsWithMultipleShifts": "Dans un seul calque, il est impossible de combiner des indicateurs avec des décalages temporels différents et des valeurs dynamiques les plus élevées. Utilisez la même valeur de décalage pour tous les indicateurs, ou utilisez des filtres à la place des valeurs les plus élevées.", "xpack.lens.indexPattern.termsWithMultipleShiftsFixActionLabel": "Utiliser des filtres", - "xpack.lens.indexPattern.time_scale": "indicateur : nombre, unité : s|m|h|d|w|M|y", - "xpack.lens.indexPattern.timeScale": "Normaliser par unité", + "lensFormulaDocs.time_scale": "indicateur : nombre, unité : s|m|h|d|w|M|y", + "lensFormulaDocs.timeScale": "Normaliser par unité", "xpack.lens.indexPattern.timeScale.label": "Normaliser par unité", "xpack.lens.indexPattern.timeScale.missingUnit": "Aucune unité spécifiée pour Normaliser par unité.", "xpack.lens.indexPattern.timeScale.tooltip": "Normalisez les valeurs pour qu'elles soient toujours affichées en tant que taux par unité de temps spécifiée, indépendamment de l'intervalle de dates sous-jacent.", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index af1f51321cb60..9b8fea3d7229e 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -21939,54 +21939,54 @@ "xpack.lens.xyVisualization.dataTypeFailureXShort": "{axis}のデータ型が正しくありません。", "xpack.lens.xyVisualization.dataTypeFailureYLong": "{axis}のディメンション{label}のデータ型が正しくありません。数値が想定されていますが、{dataType}です", "xpack.lens.xyVisualization.dataTypeFailureYShort": "{axis}のデータ型が正しくありません。", - "xpack.lens.formula.absFunction.markdown": "\n絶対値を計算します。負の値は-1で乗算されます。正の値は同じままです。\n\n例:海水位までの平均距離を計算します `abs(average(altitude))`\n ", - "xpack.lens.formula.addFunction.markdown": "\n2つの数値を加算します。\n+記号も使用できます。\n\n例:2つのフィールドの合計を計算します\n\n`sum(price) + sum(tax)`\n\n例:固定値でカウントをオフセットします\n\n`add(count(), 5)`\n ", - "xpack.lens.formula.cbrtFunction.markdown": "\n値の立方根。\n\n例:体積から側面の長さを計算します\n`cbrt(last_value(volume))`\n ", - "xpack.lens.formula.ceilFunction.markdown": "\n値の上限(切り上げ)。\n\n例:価格を次のドル単位まで切り上げます\n`ceil(sum(price))`\n ", - "xpack.lens.formula.clampFunction.markdown": "\n最小値から最大値までの値を制限します。\n\n例:確実に異常値を特定します\n```\nclamp(\n average(bytes),\n percentile(bytes, percentile=5),\n percentile(bytes, percentile=95)\n)\n```\n", - "xpack.lens.formula.cubeFunction.markdown": "\n数値の三乗を計算します。\n\n例:側面の長さから体積を計算します\n`cube(last_value(length))`\n ", - "xpack.lens.formula.defaultFunction.markdown": "\n値がヌルのときにデフォルトの数値を返します。\n\n例:フィールドにデータがない場合は、-1を返します\n`defaults(average(bytes), -1)`\n", - "xpack.lens.formula.divideFunction.markdown": "\n1番目の数値を2番目の数値で除算します。\n/記号も使用できます\n\n例:利益率を計算します\n`sum(profit) / sum(revenue)`\n\n例:`divide(sum(bytes), 2)`\n ", - "xpack.lens.formula.eqFunction.markdown": "\n2つの値で等価性の比較を実行します。\n「ifelse」比較関数の条件として使用されます。\n==記号も使用できます。\n\n例:バイトの平均が平均メモリーと同じ量の場合は、trueを返します。\n`average(bytes) == average(memory)`\n\n例: `eq(sum(bytes), 1000000)`\n ", - "xpack.lens.formula.expFunction.markdown": "\n*e*をn乗します。\n\n例:自然指数関数を計算します\n\n`exp(last_value(duration))`\n ", - "xpack.lens.formula.fixFunction.markdown": "\n正の値の場合は、下限を取ります。負の値の場合は、上限を取ります。\n\n例:ゼロに向かって端数処理します\n`fix(sum(profit))`\n ", - "xpack.lens.formula.floorFunction.markdown": "\n最も近い整数値まで切り捨てます\n\n例:価格を切り捨てます\n`floor(sum(price))`\n ", - "xpack.lens.formula.gteFunction.markdown": "\n2つの値で大なりの比較を実行します。\n「ifelse」比較関数の条件として使用されます。\n>=記号も使用できます。\n\n例:バイトの平均がメモリーの平均量以上である場合は、trueを返します\n`average(bytes) >= average(memory)`\n\n例: `gte(average(bytes), 1000)`\n ", - "xpack.lens.formula.gtFunction.markdown": "\n2つの値で大なりの比較を実行します。\n「ifelse」比較関数の条件として使用されます。\n>記号も使用できます。\n\n例:バイトの平均がメモリーの平均量より大きい場合は、trueを返します\n`average(bytes) > average(memory)`\n\n例: `gt(average(bytes), 1000)`\n ", - "xpack.lens.formula.ifElseFunction.markdown": "\n条件の要素がtrueかfalseかに応じて、値を返します。\n\n例:顧客ごとの平均収益。ただし、場合によっては、顧客IDが提供されないことがあり、その場合は別の顧客としてカウントされます\n`sum(total)/(unique_count(customer_id) + ifelse( count() > count(kql='customer_id:*'), 1, 0))`\n ", - "xpack.lens.formula.logFunction.markdown": "\nオプションで底をとる対数。デフォルトでは自然対数の底*e*を使用します。\n\n例:値を格納するために必要なビット数を計算します\n```\nlog(sum(bytes))\nlog(sum(bytes), 2)\n```\n ", - "xpack.lens.formula.lteFunction.markdown": "\n2つの値で小なりイコールの比較を実行します。\n「ifelse」比較関数の条件として使用されます。\n<=記号も使用できます。\n\n例:バイトの平均がメモリーの平均量以下である場合は、trueを返します\n`average(bytes) <= average(memory)`\n\n例: `lte(average(bytes), 1000)`\n ", - "xpack.lens.formula.ltFunction.markdown": "\n2つの値で小なりの比較を実行します。\n「ifelse」比較関数の条件として使用されます。\n<記号も使用できます。\n\n例:バイトの平均がメモリーの平均量より少ない場合は、trueを返します\n`average(bytes) <= average(memory)`\n\n例: `lt(average(bytes), 1000)`\n ", - "xpack.lens.formula.maxFunction.markdown": "\n2つの数値の間の最大値が検出されます。\n\n例:2つのフィールドの平均の最大値が検出されます。\n`pick_max(average(bytes), average(memory))`\n ", - "xpack.lens.formula.minFunction.markdown": "\n2つの数値の間の最小値が検出されます。\n\n例:2つのフィールドの平均の最小値が検索されます。\n`pick_min(average(bytes), average(memory))`\n ", - "xpack.lens.formula.modFunction.markdown": "\n関数を数値で除算した後の余り\n\n例:値の最後の3ビットを計算します\n`mod(sum(price), 1000)`\n ", - "xpack.lens.formula.multiplyFunction.markdown": "\n2つの数値を乗算します。\n*記号も使用できます。\n\n例:現在の税率を入れた価格を計算します\n`sum(bytes) * last_value(tax_rate)`\n\n例:一定の税率を入れた価格を計算します\n`multiply(sum(price), 1.2)`\n ", - "xpack.lens.formula.powFunction.markdown": "\n値を特定の乗数で累乗します。2番目の引数は必須です\n\n例:側面の長さに基づいて体積を計算します\n`pow(last_value(length), 3)`\n ", - "xpack.lens.formula.roundFunction.markdown": "\n特定の小数位に四捨五入します。デフォルトは0です。\n\n例:セントに四捨五入します\n```\nround(sum(bytes))\nround(sum(bytes), 2)\n```\n ", - "xpack.lens.formula.sqrtFunction.markdown": "\n正の値のみの平方根\n\n例:面積に基づいて側面の長さを計算します\n`sqrt(last_value(area))`\n ", - "xpack.lens.formula.squareFunction.markdown": "\n値を2乗します\n\n例:側面の長さに基づいて面積を計算します\n`square(last_value(length))`\n ", - "xpack.lens.formula.subtractFunction.markdown": "\n2番目の数値から1番目の数値を減算します。\n-記号も使用できます。\n\n例:フィールドの範囲を計算します\n`subtract(max(bytes), min(bytes))`\n ", - "xpack.lens.formulaDocumentation.filterRatioDescription.markdown": "### フィルター比率:\n\n`kql=''`を使用すると、1つのセットのドキュメントをフィルターして、同じグループの他のドキュメントと比較します。\n例:経時的なエラー率の変化を表示する\n\n```\ncount(kql='response.status_code > 400') / count()\n```\n ", - "xpack.lens.formulaDocumentation.markdown": "## 仕組み\n\nLens式では、Elasticsearchの集計および数学関数を使用して演算を実行できます\n。主に次の3種類の関数があります。\n\n* `sum(bytes)`などのElasticsearchメトリック\n* 時系列関数は`cumulative_sum()`などのElasticsearchメトリックを入力として使用します\n* `round()`などの数学関数\n\nこれらのすべての関数を使用する式の例:\n\n```\nround(100 * moving_average(\naverage(cpu.load.pct),\nwindow=10,\nkql='datacenter.name: east*'\n))\n```\n\nElasticsearchの関数はフィールド名を取り、フィールドは引用符で囲むこともできます。`sum(bytes)`は\nas `sum('bytes')`.\n\n一部の関数は、`moving_average(count(), window=5)`のような名前付き引数を取ります。\n\nElasticsearchメトリックはKQLまたはLucene構文を使用してフィルターできます。フィルターを追加するには、名前付き\nparameter `kql='field: value'` or `lucene=''`.KQLまたはLuceneクエリを作成するときには、必ず引用符を使用してください\n。検索が引用符で囲まれている場合は、`kql='Women's''のようにバックスラッシュでエスケープします。\n\n数学関数は位置引数を取ることができます。たとえば、pow(count(), 3)はcount() * count() * count()と同じです。\n\n+、-、/、*記号を使用して、基本演算を実行できます。\n ", - "xpack.lens.formulaDocumentation.percentOfTotalDescription.markdown": "### 合計の割合\n\nすべてのグループで式は`overall_sum`を計算できます。\nこれは各グループを合計の割合に変換できます。\n\n```\nsum(products.base_price) / overall_sum(sum(products.base_price))\n```\n ", - "xpack.lens.formulaDocumentation.recentChangeDescription.markdown": "### 最近の変更\n\n「reducedTimeRange='30m'」を使用して、グローバル時間範囲の最後と一致するメトリックの時間範囲で、フィルターを追加しました。これにより、どのくらいの値が最近変更されたのかを計算できます。\n\n```\nmax(system.network.in.bytes, reducedTimeRange=\"30m\")\n - min(system.network.in.bytes, reducedTimeRange=\"30m\")\n```\n ", - "xpack.lens.formulaDocumentation.weekOverWeekDescription.markdown": "### 週単位:\n\n`shift='1w'`を使用すると、前の週から各グループの値を取得します\n。時間シフトは*Top values*関数と使用しないでください。\n\n```\npercentile(system.network.in.bytes, percentile=99) /\npercentile(system.network.in.bytes, percentile=99, shift='1w')\n```\n ", - "xpack.lens.indexPattern.cardinality.documentation.markdown": "\n指定されたフィールドの一意の値の数を計算します。数値、文字列、日付、ブール値で機能します。\n\n例:異なる製品の数を計算します。\n`unique_count(product.name)`\n\n例:「clothes」グループから異なる製品の数を計算します。\n`unique_count(product.name, kql='product.group=clothes')`\n ", - "xpack.lens.indexPattern.count.documentation.markdown": "\nドキュメントの総数。フィールドを入力すると、フィールド値の合計数がカウントされます。1つのドキュメントに複数の値があるフィールドでCount関数を使用すると、すべての値がカウントされます。\n\n#### 例\n\nドキュメントの合計数を計算するには、count()を使用します。\n\nすべての注文書の製品数を計算するには、count(products.id)を使用します。\n\n特定のフィルターと一致するドキュメントの数を計算するには、count(kql='price > 500')を使用します。\n ", - "xpack.lens.indexPattern.counterRate.documentation.markdown": "\n増加し続けるカウンターのレートを計算します。この関数は、経時的に単調に増加する種類の測定を含むカウンターメトリックフィールドでのみ結果を生成します。\n値が小さくなる場合は、カウンターリセットであると解釈されます。最も正確な結果を得るには、フィールドの「max`」で「counter_rate」を計算してください。\n\nこの計算はフィルターで定義された別の系列または上位値のディメンションに対して個別に実行されます。\n式で使用されるときには、現在の間隔を使用します。\n\n例:Memcachedサーバーで経時的に受信されたバイトの比率を可視化します。\n`counter_rate(max(memcached.stats.read.bytes))`\n ", - "xpack.lens.indexPattern.cumulativeSum.documentation.markdown": "\n経時的なメトリックの累計値を計算し、系列のすべての前の値を各値に追加します。この関数を使用するには、日付ヒストグラムディメンションも構成する必要があります。\n\nこの計算はフィルターで定義された別の系列または上位値のディメンションに対して個別に実行されます。\n\n例:経時的に累積された受信バイト数を可視化します。\n`cumulative_sum(sum(bytes))`\n ", - "xpack.lens.indexPattern.differences.documentation.markdown": "\n経時的にメトリックの最後の値に対する差異を計算します。この関数を使用するには、日付ヒストグラムディメンションも構成する必要があります。\n差異ではデータが連続する必要があります。差異を使用するときにデータが空の場合は、データヒストグラム間隔を大きくしてみてください。\n\nこの計算はフィルターで定義された別の系列または上位値のディメンションに対して個別に実行されます。\n\n例:経時的に受信したバイト数の変化を可視化します。\n`differences(sum(bytes))`\n ", - "xpack.lens.indexPattern.lastValue.documentation.markdown": "\n最後のドキュメントからフィールドの値を返し、データビューのデフォルト時刻フィールドで並べ替えます。\n\nこの関数はエンティティの最新の状態を取得する際に役立ちます。\n\n例:サーバーAの現在のステータスを取得:\n`last_value(server.status, kql='server.name=\"A\"')`\n ", - "xpack.lens.indexPattern.metric.documentation.markdown": "\nフィールドの{metric}を返します。この関数は数値フィールドでのみ動作します。\n\n例:価格の{metric}を取得:\n`{metric}(price)`\n\n例:英国からの注文の価格の{metric}を取得:\n`{metric}(price, kql='location:UK')`\n ", - "xpack.lens.indexPattern.movingAverage.documentation.markdown": "\n経時的なメトリックの移動平均を計算します。最後のn番目の値を平均化し、現在の値を計算します。この関数を使用するには、日付ヒストグラムディメンションも構成する必要があります。\nデフォルトウィンドウ値は{defaultValue}です\n\nこの計算はフィルターで定義された別の系列または上位値のディメンションに対して個別に実行されます。\n\n指名パラメーター「window」を取ります。これは現在値の平均計算に含める最後の値の数を指定します。\n\n例:測定の線を平滑化:\n`moving_average(sum(bytes), window=5)`\n ", - "xpack.lens.indexPattern.overall_average.documentation.markdown": "\n現在のグラフの系列のすべてのデータポイントのメトリックの平均を計算します。系列は日付ヒストグラムまたは間隔関数を使用してディメンションによって定義されます。\n上位の値やフィルターなどのデータを分解する他のディメンションは別の系列として処理されます。\n\n日付ヒストグラムまたは間隔関数が現在のグラフで使用されている場合、使用されている関数に関係なく、「overall_average」はすべてのディメンションで平均値を計算します。\n\n例:平均からの収束:\n`sum(bytes) - overall_average(sum(bytes))`\n ", - "xpack.lens.indexPattern.overall_max.documentation.markdown": "\n現在のグラフの系列のすべてのデータポイントのメトリックの最大値を計算します。系列は日付ヒストグラムまたは間隔関数を使用してディメンションによって定義されます。\n上位の値やフィルターなどのデータを分解する他のディメンションは別の系列として処理されます。\n\n日付ヒストグラムまたは間隔関数が現在のグラフで使用されている場合、使用されている関数に関係なく、「overall_max」はすべてのディメンションで最大値を計算します。\n\n例:範囲の割合\n`(sum(bytes) - overall_min(sum(bytes))) / (overall_max(sum(bytes)) - overall_min(sum(bytes)))`\n ", - "xpack.lens.indexPattern.overall_min.documentation.markdown": "\n現在のグラフの系列のすべてのデータポイントのメトリックの最小値を計算します。系列は日付ヒストグラムまたは間隔関数を使用してディメンションによって定義されます。\n上位の値やフィルターなどのデータを分解する他のディメンションは別の系列として処理されます。\n\n日付ヒストグラムまたは間隔関数が現在のグラフで使用されている場合、使用されている関数に関係なく、「overall_min」はすべてのディメンションで最小値を計算します。\n\n例:範囲の割合\n`(sum(bytes) - overall_min(sum(bytes)) / (overall_max(sum(bytes)) - overall_min(sum(bytes)))`\n ", - "xpack.lens.indexPattern.overall_sum.documentation.markdown": "\n現在のグラフの系列のすべてのデータポイントのメトリックの合計を計算します。系列は日付ヒストグラムまたは間隔関数を使用してディメンションによって定義されます。\n上位の値やフィルターなどのデータを分解する他のディメンションは別の系列として処理されます。\n\n日付ヒストグラムまたは間隔関数が現在のグラフで使用されている場合、使用されている関数に関係なく、「overall_sum」はすべてのディメンションで合計値を計算します。\n\n例:合計の割合\n`sum(bytes) / overall_sum(sum(bytes))`\n ", - "xpack.lens.indexPattern.percentile.documentation.markdown": "\nフィールドの値の指定された百分位数を返します。これはドキュメントに出現する値のnパーセントが小さい値です。\n\n例:値の95 %より大きいバイト数を取得:\n`percentile(bytes, percentile=95)`\n ", - "xpack.lens.indexPattern.percentileRanks.documentation.markdown": "\n特定の値未満の値の割合が返されます。たとえば、値が観察された値の95%以上の場合、95パーセンタイルランクであるとされます。\n\n例:100未満の値のパーセンタイルを取得します。\n`percentile_rank(bytes, value=100)`\n ", - "xpack.lens.indexPattern.standardDeviation.documentation.markdown": "\nフィールドの分散または散布度が返されます。この関数は数値フィールドでのみ動作します。\n\n#### 例\n\n価格の標準偏差を取得するには、standard_deviation(price)を使用します。\n\n英国からの注文書の価格の分散を取得するには、square(standard_deviation(price, kql='location:UK'))を使用します。\n ", - "xpack.lens.indexPattern.time_scale.documentation.markdown": "\n\nこの高度な機能は、特定の期間に対してカウントと合計を正規化する際に役立ちます。すでに特定の期間に対して正規化され、保存されたメトリックとの統合が可能です。\n\nこの機能は、現在のグラフで日付ヒストグラム関数が使用されている場合にのみ使用できます。\n\n例:すでに正規化されているメトリックを、正規化が必要な別のメトリックと比較した比率。\n`normalize_by_unit(counter_rate(max(system.diskio.write.bytes)), unit='s') / last_value(apache.status.bytes_per_second)`\n ", + "lensFormulaDocs.tinymath.absFunction.markdown": "\n絶対値を計算します。負の値は-1で乗算されます。正の値は同じままです。\n\n例:海水位までの平均距離を計算します `abs(average(altitude))`\n ", + "lensFormulaDocs.tinymath.addFunction.markdown": "\n2つの数値を加算します。\n+記号も使用できます。\n\n例:2つのフィールドの合計を計算します\n\n`sum(price) + sum(tax)`\n\n例:固定値でカウントをオフセットします\n\n`add(count(), 5)`\n ", + "lensFormulaDocs.tinymath.cbrtFunction.markdown": "\n値の立方根。\n\n例:体積から側面の長さを計算します\n`cbrt(last_value(volume))`\n ", + "lensFormulaDocs.tinymath.ceilFunction.markdown": "\n値の上限(切り上げ)。\n\n例:価格を次のドル単位まで切り上げます\n`ceil(sum(price))`\n ", + "lensFormulaDocs.tinymath.clampFunction.markdown": "\n最小値から最大値までの値を制限します。\n\n例:確実に異常値を特定します\n```\nclamp(\n average(bytes),\n percentile(bytes, percentile=5),\n percentile(bytes, percentile=95)\n)\n```\n", + "lensFormulaDocs.tinymath.cubeFunction.markdown": "\n数値の三乗を計算します。\n\n例:側面の長さから体積を計算します\n`cube(last_value(length))`\n ", + "lensFormulaDocs.tinymath.defaultFunction.markdown": "\n値がヌルのときにデフォルトの数値を返します。\n\n例:フィールドにデータがない場合は、-1を返します\n`defaults(average(bytes), -1)`\n", + "lensFormulaDocs.tinymath.divideFunction.markdown": "\n1番目の数値を2番目の数値で除算します。\n/記号も使用できます\n\n例:利益率を計算します\n`sum(profit) / sum(revenue)`\n\n例:`divide(sum(bytes), 2)`\n ", + "lensFormulaDocs.tinymath.eqFunction.markdown": "\n2つの値で等価性の比較を実行します。\n「ifelse」比較関数の条件として使用されます。\n==記号も使用できます。\n\n例:バイトの平均が平均メモリーと同じ量の場合は、trueを返します。\n`average(bytes) == average(memory)`\n\n例: `eq(sum(bytes), 1000000)`\n ", + "lensFormulaDocs.tinymath.expFunction.markdown": "\n*e*をn乗します。\n\n例:自然指数関数を計算します\n\n`exp(last_value(duration))`\n ", + "lensFormulaDocs.tinymath.fixFunction.markdown": "\n正の値の場合は、下限を取ります。負の値の場合は、上限を取ります。\n\n例:ゼロに向かって端数処理します\n`fix(sum(profit))`\n ", + "lensFormulaDocs.tinymath.floorFunction.markdown": "\n最も近い整数値まで切り捨てます\n\n例:価格を切り捨てます\n`floor(sum(price))`\n ", + "lensFormulaDocs.tinymath.gteFunction.markdown": "\n2つの値で大なりの比較を実行します。\n「ifelse」比較関数の条件として使用されます。\n>=記号も使用できます。\n\n例:バイトの平均がメモリーの平均量以上である場合は、trueを返します\n`average(bytes) >= average(memory)`\n\n例: `gte(average(bytes), 1000)`\n ", + "lensFormulaDocs.tinymath.gtFunction.markdown": "\n2つの値で大なりの比較を実行します。\n「ifelse」比較関数の条件として使用されます。\n>記号も使用できます。\n\n例:バイトの平均がメモリーの平均量より大きい場合は、trueを返します\n`average(bytes) > average(memory)`\n\n例: `gt(average(bytes), 1000)`\n ", + "lensFormulaDocs.tinymath.ifElseFunction.markdown": "\n条件の要素がtrueかfalseかに応じて、値を返します。\n\n例:顧客ごとの平均収益。ただし、場合によっては、顧客IDが提供されないことがあり、その場合は別の顧客としてカウントされます\n`sum(total)/(unique_count(customer_id) + ifelse( count() > count(kql='customer_id:*'), 1, 0))`\n ", + "lensFormulaDocs.tinymath.logFunction.markdown": "\nオプションで底をとる対数。デフォルトでは自然対数の底*e*を使用します。\n\n例:値を格納するために必要なビット数を計算します\n```\nlog(sum(bytes))\nlog(sum(bytes), 2)\n```\n ", + "lensFormulaDocs.tinymath.lteFunction.markdown": "\n2つの値で小なりイコールの比較を実行します。\n「ifelse」比較関数の条件として使用されます。\n<=記号も使用できます。\n\n例:バイトの平均がメモリーの平均量以下である場合は、trueを返します\n`average(bytes) <= average(memory)`\n\n例: `lte(average(bytes), 1000)`\n ", + "lensFormulaDocs.tinymath.ltFunction.markdown": "\n2つの値で小なりの比較を実行します。\n「ifelse」比較関数の条件として使用されます。\n<記号も使用できます。\n\n例:バイトの平均がメモリーの平均量より少ない場合は、trueを返します\n`average(bytes) <= average(memory)`\n\n例: `lt(average(bytes), 1000)`\n ", + "lensFormulaDocs.tinymath.maxFunction.markdown": "\n2つの数値の間の最大値が検出されます。\n\n例:2つのフィールドの平均の最大値が検出されます。\n`pick_max(average(bytes), average(memory))`\n ", + "lensFormulaDocs.tinymath.minFunction.markdown": "\n2つの数値の間の最小値が検出されます。\n\n例:2つのフィールドの平均の最小値が検索されます。\n`pick_min(average(bytes), average(memory))`\n ", + "lensFormulaDocs.tinymath.modFunction.markdown": "\n関数を数値で除算した後の余り\n\n例:値の最後の3ビットを計算します\n`mod(sum(price), 1000)`\n ", + "lensFormulaDocs.tinymath.multiplyFunction.markdown": "\n2つの数値を乗算します。\n*記号も使用できます。\n\n例:現在の税率を入れた価格を計算します\n`sum(bytes) * last_value(tax_rate)`\n\n例:一定の税率を入れた価格を計算します\n`multiply(sum(price), 1.2)`\n ", + "lensFormulaDocs.tinymath.powFunction.markdown": "\n値を特定の乗数で累乗します。2番目の引数は必須です\n\n例:側面の長さに基づいて体積を計算します\n`pow(last_value(length), 3)`\n ", + "lensFormulaDocs.tinymath.roundFunction.markdown": "\n特定の小数位に四捨五入します。デフォルトは0です。\n\n例:セントに四捨五入します\n```\nround(sum(bytes))\nround(sum(bytes), 2)\n```\n ", + "lensFormulaDocs.tinymath.sqrtFunction.markdown": "\n正の値のみの平方根\n\n例:面積に基づいて側面の長さを計算します\n`sqrt(last_value(area))`\n ", + "lensFormulaDocs.tinymath.squareFunction.markdown": "\n値を2乗します\n\n例:側面の長さに基づいて面積を計算します\n`square(last_value(length))`\n ", + "lensFormulaDocs.tinymath.subtractFunction.markdown": "\n2番目の数値から1番目の数値を減算します。\n-記号も使用できます。\n\n例:フィールドの範囲を計算します\n`subtract(max(bytes), min(bytes))`\n ", + "lensFormulaDocs.documentation.filterRatioDescription.markdown": "### フィルター比率:\n\n`kql=''`を使用すると、1つのセットのドキュメントをフィルターして、同じグループの他のドキュメントと比較します。\n例:経時的なエラー率の変化を表示する\n\n```\ncount(kql='response.status_code > 400') / count()\n```\n ", + "lensFormulaDocs.documentation.markdown": "## 仕組み\n\nLens式では、Elasticsearchの集計および数学関数を使用して演算を実行できます\n。主に次の3種類の関数があります。\n\n* `sum(bytes)`などのElasticsearchメトリック\n* 時系列関数は`cumulative_sum()`などのElasticsearchメトリックを入力として使用します\n* `round()`などの数学関数\n\nこれらのすべての関数を使用する式の例:\n\n```\nround(100 * moving_average(\naverage(cpu.load.pct),\nwindow=10,\nkql='datacenter.name: east*'\n))\n```\n\nElasticsearchの関数はフィールド名を取り、フィールドは引用符で囲むこともできます。`sum(bytes)`は\nas `sum('bytes')`.\n\n一部の関数は、`moving_average(count(), window=5)`のような名前付き引数を取ります。\n\nElasticsearchメトリックはKQLまたはLucene構文を使用してフィルターできます。フィルターを追加するには、名前付き\nparameter `kql='field: value'` or `lucene=''`.KQLまたはLuceneクエリを作成するときには、必ず引用符を使用してください\n。検索が引用符で囲まれている場合は、`kql='Women's''のようにバックスラッシュでエスケープします。\n\n数学関数は位置引数を取ることができます。たとえば、pow(count(), 3)はcount() * count() * count()と同じです。\n\n+、-、/、*記号を使用して、基本演算を実行できます。\n ", + "lensFormulaDocs.documentation.percentOfTotalDescription.markdown": "### 合計の割合\n\nすべてのグループで式は`overall_sum`を計算できます。\nこれは各グループを合計の割合に変換できます。\n\n```\nsum(products.base_price) / overall_sum(sum(products.base_price))\n```\n ", + "lensFormulaDocs.documentation.recentChangeDescription.markdown": "### 最近の変更\n\n「reducedTimeRange='30m'」を使用して、グローバル時間範囲の最後と一致するメトリックの時間範囲で、フィルターを追加しました。これにより、どのくらいの値が最近変更されたのかを計算できます。\n\n```\nmax(system.network.in.bytes, reducedTimeRange=\"30m\")\n - min(system.network.in.bytes, reducedTimeRange=\"30m\")\n```\n ", + "lensFormulaDocs.documentation.weekOverWeekDescription.markdown": "### 週単位:\n\n`shift='1w'`を使用すると、前の週から各グループの値を取得します\n。時間シフトは*Top values*関数と使用しないでください。\n\n```\npercentile(system.network.in.bytes, percentile=99) /\npercentile(system.network.in.bytes, percentile=99, shift='1w')\n```\n ", + "lensFormulaDocs.cardinality.documentation.markdown": "\n指定されたフィールドの一意の値の数を計算します。数値、文字列、日付、ブール値で機能します。\n\n例:異なる製品の数を計算します。\n`unique_count(product.name)`\n\n例:「clothes」グループから異なる製品の数を計算します。\n`unique_count(product.name, kql='product.group=clothes')`\n ", + "lensFormulaDocs.count.documentation.markdown": "\nドキュメントの総数。フィールドを入力すると、フィールド値の合計数がカウントされます。1つのドキュメントに複数の値があるフィールドでCount関数を使用すると、すべての値がカウントされます。\n\n#### 例\n\nドキュメントの合計数を計算するには、count()を使用します。\n\nすべての注文書の製品数を計算するには、count(products.id)を使用します。\n\n特定のフィルターと一致するドキュメントの数を計算するには、count(kql='price > 500')を使用します。\n ", + "lensFormulaDocs.counterRate.documentation.markdown": "\n増加し続けるカウンターのレートを計算します。この関数は、経時的に単調に増加する種類の測定を含むカウンターメトリックフィールドでのみ結果を生成します。\n値が小さくなる場合は、カウンターリセットであると解釈されます。最も正確な結果を得るには、フィールドの「max`」で「counter_rate」を計算してください。\n\nこの計算はフィルターで定義された別の系列または上位値のディメンションに対して個別に実行されます。\n式で使用されるときには、現在の間隔を使用します。\n\n例:Memcachedサーバーで経時的に受信されたバイトの比率を可視化します。\n`counter_rate(max(memcached.stats.read.bytes))`\n ", + "lensFormulaDocs.cumulativeSum.documentation.markdown": "\n経時的なメトリックの累計値を計算し、系列のすべての前の値を各値に追加します。この関数を使用するには、日付ヒストグラムディメンションも構成する必要があります。\n\nこの計算はフィルターで定義された別の系列または上位値のディメンションに対して個別に実行されます。\n\n例:経時的に累積された受信バイト数を可視化します。\n`cumulative_sum(sum(bytes))`\n ", + "lensFormulaDocs.differences.documentation.markdown": "\n経時的にメトリックの最後の値に対する差異を計算します。この関数を使用するには、日付ヒストグラムディメンションも構成する必要があります。\n差異ではデータが連続する必要があります。差異を使用するときにデータが空の場合は、データヒストグラム間隔を大きくしてみてください。\n\nこの計算はフィルターで定義された別の系列または上位値のディメンションに対して個別に実行されます。\n\n例:経時的に受信したバイト数の変化を可視化します。\n`differences(sum(bytes))`\n ", + "lensFormulaDocs.lastValue.documentation.markdown": "\n最後のドキュメントからフィールドの値を返し、データビューのデフォルト時刻フィールドで並べ替えます。\n\nこの関数はエンティティの最新の状態を取得する際に役立ちます。\n\n例:サーバーAの現在のステータスを取得:\n`last_value(server.status, kql='server.name=\"A\"')`\n ", + "lensFormulaDocs.metric.documentation.markdown": "\nフィールドの{metric}を返します。この関数は数値フィールドでのみ動作します。\n\n例:価格の{metric}を取得:\n`{metric}(price)`\n\n例:英国からの注文の価格の{metric}を取得:\n`{metric}(price, kql='location:UK')`\n ", + "lensFormulaDocs.movingAverage.documentation.markdown": "\n経時的なメトリックの移動平均を計算します。最後のn番目の値を平均化し、現在の値を計算します。この関数を使用するには、日付ヒストグラムディメンションも構成する必要があります。\nデフォルトウィンドウ値は{defaultValue}です\n\nこの計算はフィルターで定義された別の系列または上位値のディメンションに対して個別に実行されます。\n\n指名パラメーター「window」を取ります。これは現在値の平均計算に含める最後の値の数を指定します。\n\n例:測定の線を平滑化:\n`moving_average(sum(bytes), window=5)`\n ", + "lensFormulaDocs.overall_average.documentation.markdown": "\n現在のグラフの系列のすべてのデータポイントのメトリックの平均を計算します。系列は日付ヒストグラムまたは間隔関数を使用してディメンションによって定義されます。\n上位の値やフィルターなどのデータを分解する他のディメンションは別の系列として処理されます。\n\n日付ヒストグラムまたは間隔関数が現在のグラフで使用されている場合、使用されている関数に関係なく、「overall_average」はすべてのディメンションで平均値を計算します。\n\n例:平均からの収束:\n`sum(bytes) - overall_average(sum(bytes))`\n ", + "lensFormulaDocs.overall_max.documentation.markdown": "\n現在のグラフの系列のすべてのデータポイントのメトリックの最大値を計算します。系列は日付ヒストグラムまたは間隔関数を使用してディメンションによって定義されます。\n上位の値やフィルターなどのデータを分解する他のディメンションは別の系列として処理されます。\n\n日付ヒストグラムまたは間隔関数が現在のグラフで使用されている場合、使用されている関数に関係なく、「overall_max」はすべてのディメンションで最大値を計算します。\n\n例:範囲の割合\n`(sum(bytes) - overall_min(sum(bytes))) / (overall_max(sum(bytes)) - overall_min(sum(bytes)))`\n ", + "lensFormulaDocs.overall_min.documentation.markdown": "\n現在のグラフの系列のすべてのデータポイントのメトリックの最小値を計算します。系列は日付ヒストグラムまたは間隔関数を使用してディメンションによって定義されます。\n上位の値やフィルターなどのデータを分解する他のディメンションは別の系列として処理されます。\n\n日付ヒストグラムまたは間隔関数が現在のグラフで使用されている場合、使用されている関数に関係なく、「overall_min」はすべてのディメンションで最小値を計算します。\n\n例:範囲の割合\n`(sum(bytes) - overall_min(sum(bytes)) / (overall_max(sum(bytes)) - overall_min(sum(bytes)))`\n ", + "lensFormulaDocs.overall_sum.documentation.markdown": "\n現在のグラフの系列のすべてのデータポイントのメトリックの合計を計算します。系列は日付ヒストグラムまたは間隔関数を使用してディメンションによって定義されます。\n上位の値やフィルターなどのデータを分解する他のディメンションは別の系列として処理されます。\n\n日付ヒストグラムまたは間隔関数が現在のグラフで使用されている場合、使用されている関数に関係なく、「overall_sum」はすべてのディメンションで合計値を計算します。\n\n例:合計の割合\n`sum(bytes) / overall_sum(sum(bytes))`\n ", + "lensFormulaDocs.percentile.documentation.markdown": "\nフィールドの値の指定された百分位数を返します。これはドキュメントに出現する値のnパーセントが小さい値です。\n\n例:値の95 %より大きいバイト数を取得:\n`percentile(bytes, percentile=95)`\n ", + "lensFormulaDocs.percentileRanks.documentation.markdown": "\n特定の値未満の値の割合が返されます。たとえば、値が観察された値の95%以上の場合、95パーセンタイルランクであるとされます。\n\n例:100未満の値のパーセンタイルを取得します。\n`percentile_rank(bytes, value=100)`\n ", + "lensFormulaDocs.standardDeviation.documentation.markdown": "\nフィールドの分散または散布度が返されます。この関数は数値フィールドでのみ動作します。\n\n#### 例\n\n価格の標準偏差を取得するには、standard_deviation(price)を使用します。\n\n英国からの注文書の価格の分散を取得するには、square(standard_deviation(price, kql='location:UK'))を使用します。\n ", + "lensFormulaDocs.time_scale.documentation.markdown": "\n\nこの高度な機能は、特定の期間に対してカウントと合計を正規化する際に役立ちます。すでに特定の期間に対して正規化され、保存されたメトリックとの統合が可能です。\n\nこの機能は、現在のグラフで日付ヒストグラム関数が使用されている場合にのみ使用できます。\n\n例:すでに正規化されているメトリックを、正規化が必要な別のメトリックと比較した比率。\n`normalize_by_unit(counter_rate(max(system.diskio.write.bytes)), unit='s') / last_value(apache.status.bytes_per_second)`\n ", "xpack.lens.AggBasedLabel": "集約に基づく可視化", "xpack.lens.app.addToLibrary": "ライブラリに保存", "xpack.lens.app.cancel": "キャンセル", @@ -22164,11 +22164,11 @@ "xpack.lens.fittingFunctionsTitle.lookahead": "次へ", "xpack.lens.fittingFunctionsTitle.none": "非表示", "xpack.lens.fittingFunctionsTitle.zero": "ゼロ", - "xpack.lens.formula.base": "基数", - "xpack.lens.formula.boolean": "ブール", - "xpack.lens.formula.condition": "条件", - "xpack.lens.formula.decimals": "小数点以下", - "xpack.lens.formula.defaultValue": "デフォルト", + "lensFormulaDocs.tinymath.base": "基数", + "lensFormulaDocs.boolean": "ブール", + "lensFormulaDocs.tinymath.condition": "条件", + "lensFormulaDocs.tinymath.decimals": "小数点以下", + "lensFormulaDocs.tinymath.defaultValue": "デフォルト", "xpack.lens.formula.disableWordWrapLabel": "単語の折り返しを無効にする", "xpack.lens.formula.editorHelpInlineHideLabel": "関数リファレンスを非表示", "xpack.lens.formula.editorHelpInlineHideToolTip": "関数リファレンスを非表示", @@ -22176,35 +22176,35 @@ "xpack.lens.formula.fullScreenEnterLabel": "拡張", "xpack.lens.formula.fullScreenExitLabel": "縮小", "xpack.lens.formula.kqlExtraArguments": "[kql]?:文字列、[lucene]?:文字列", - "xpack.lens.formula.left": "左", - "xpack.lens.formula.max": "最高", - "xpack.lens.formula.min": "分", - "xpack.lens.formula.number": "数字", + "lensFormulaDocs.tinymath.left": "左", + "lensFormulaDocs.tinymath.max": "最高", + "lensFormulaDocs.tinymath.min": "分", + "lensFormulaDocs.number": "数字", "xpack.lens.formula.reducedTimeRangeExtraArguments": "[reducedTimeRange]?: string", "xpack.lens.formula.requiredArgument": "必須", - "xpack.lens.formula.right": "右", + "lensFormulaDocs.tinymath.right": "右", "xpack.lens.formula.shiftExtraArguments": "[shift]?:文字列", - "xpack.lens.formula.string": "文字列", - "xpack.lens.formula.value": "値", - "xpack.lens.formulaCommonFormulaDocumentation": "最も一般的な式は2つの値を分割して割合を生成します。正確に表示するには、[値形式]を[割合]に設定します。", - "xpack.lens.formulaDocumentation.columnCalculationSection": "列計算", - "xpack.lens.formulaDocumentation.columnCalculationSectionDescription": "各行でこれらの関数が実行されますが、コンテキストとして列全体が提供されます。これはウィンドウ関数とも呼ばれます。", - "xpack.lens.formulaDocumentation.comparisonSection": "比較", - "xpack.lens.formulaDocumentation.comparisonSectionDescription": "これらの関数は値を比較するために使用されます。", - "xpack.lens.formulaDocumentation.constantsSection": "Kibanaコンテキスト", - "xpack.lens.formulaDocumentation.constantsSectionDescription": "これらの関数は、Kibanaのコンテキスト変数(日付ヒストグラムの「interval」、現在の「now」、選択した「time_range」)を取得するために使用され、日付の計算処理を行うのに役立ちます。", - "xpack.lens.formulaDocumentation.elasticsearchSection": "Elasticsearch", - "xpack.lens.formulaDocumentation.elasticsearchSectionDescription": "これらの関数は結果テーブルの各行の未加工ドキュメントで実行され、内訳ディメンションと一致するすべてのドキュメントを単一の値に集約します。", - "xpack.lens.formulaDocumentation.filterRatio": "フィルター比率", - "xpack.lens.formulaDocumentation.mathSection": "数学処理", - "xpack.lens.formulaDocumentation.mathSectionDescription": "これらの関数は、他の関数で計算された同じ行の単一の値を使用して、結果テーブルの各行で実行されます。", - "xpack.lens.formulaDocumentation.percentOfTotal": "合計の割合", - "xpack.lens.formulaDocumentation.recentChange": "最近の変更", - "xpack.lens.formulaDocumentation.weekOverWeek": "週単位", + "lensFormulaDocs.string": "文字列", + "lensFormulaDocs.tinymath.value": "値", + "lensFormulaDocs.CommonFormulaDocumentation": "最も一般的な式は2つの値を分割して割合を生成します。正確に表示するには、[値形式]を[割合]に設定します。", + "lensFormulaDocs.documentation.columnCalculationSection": "列計算", + "lensFormulaDocs.documentation.columnCalculationSectionDescription": "各行でこれらの関数が実行されますが、コンテキストとして列全体が提供されます。これはウィンドウ関数とも呼ばれます。", + "lensFormulaDocs.documentation.comparisonSection": "比較", + "lensFormulaDocs.documentation.comparisonSectionDescription": "これらの関数は値を比較するために使用されます。", + "lensFormulaDocs.documentation.constantsSection": "Kibanaコンテキスト", + "lensFormulaDocs.documentation.constantsSectionDescription": "これらの関数は、Kibanaのコンテキスト変数(日付ヒストグラムの「interval」、現在の「now」、選択した「time_range」)を取得するために使用され、日付の計算処理を行うのに役立ちます。", + "lensFormulaDocs.documentation.elasticsearchSection": "Elasticsearch", + "lensFormulaDocs.documentation.elasticsearchSectionDescription": "これらの関数は結果テーブルの各行の未加工ドキュメントで実行され、内訳ディメンションと一致するすべてのドキュメントを単一の値に集約します。", + "lensFormulaDocs.documentation.filterRatio": "フィルター比率", + "lensFormulaDocs.documentation.mathSection": "数学処理", + "lensFormulaDocs.documentation.mathSectionDescription": "これらの関数は、他の関数で計算された同じ行の単一の値を使用して、結果テーブルの各行で実行されます。", + "lensFormulaDocs.documentation.percentOfTotal": "合計の割合", + "lensFormulaDocs.documentation.recentChange": "最近の変更", + "lensFormulaDocs.documentation.weekOverWeek": "週単位", "xpack.lens.formulaDocumentationHeading": "仕組み", "xpack.lens.formulaEnableWordWrapLabel": "単語の折り返しを有効にする", "xpack.lens.formulaExampleMarkdown": "例", - "xpack.lens.formulaFrequentlyUsedHeading": "一般的な式", + "lensFormulaDocs.frequentlyUsedHeading": "一般的な式", "xpack.lens.formulaPlaceholderText": "関数を演算と組み合わせて式を入力します。例:", "xpack.lens.fullExtent.niceValues": "切りの良い値に端数処理", "xpack.lens.functions.collapse.args.byHelpText": "グループ化の基準となる列。この列はそのまま保持されます", @@ -22263,29 +22263,29 @@ "xpack.lens.indexPattern.allFieldsLabelHelp": "使用可能なフィールドをワークスペースまでドラッグし、ビジュアライゼーションを作成します。使用可能なフィールドを変更するには、別のデータビューを選択するか、クエリを編集するか、別の時間範囲を使用します。一部のフィールドタイプは、完全なテキストおよびグラフィックフィールドを含む Lens では、ビジュアライゼーションできません。", "xpack.lens.indexPattern.ascendingCountPrecisionErrorWarning.link": "ドキュメントをご覧ください", "xpack.lens.indexPattern.availableFieldsLabel": "利用可能なフィールド", - "xpack.lens.indexPattern.avg": "平均", + "lensFormulaDocs.avg": "平均", "xpack.lens.indexPattern.avg.description": "集約されたドキュメントから抽出された数値の平均値を計算する単一値メトリック集約", "xpack.lens.indexPattern.avg.quickFunctionDescription": "数値フィールドの集合の平均値。", "xpack.lens.indexPattern.bitsFormatLabel": "ビット(1000)", "xpack.lens.indexPattern.bytesFormatLabel": "バイト(1024)", - "xpack.lens.indexPattern.cardinality": "ユニークカウント", + "lensFormulaDocs.cardinality": "ユニークカウント", "xpack.lens.indexPattern.cardinality.documentation.quick": "\n指定した数値、文字列、日付、ブール値フィールドの一意の値の数。\n ", - "xpack.lens.indexPattern.cardinality.signature": "フィールド:文字列", + "lensFormulaDocs.cardinality.signature": "フィールド:文字列", "xpack.lens.indexPattern.changeDataViewTitle": "データビュー", "xpack.lens.indexPattern.chooseField": "フィールド", "xpack.lens.indexPattern.chooseFieldLabel": "この関数を使用するには、フィールドを選択してください。", "xpack.lens.indexPattern.chooseSubFunction": "サブ関数を選択", "xpack.lens.indexPattern.columnFormatLabel": "値の形式", "xpack.lens.indexPattern.compactLabel": "値の圧縮", - "xpack.lens.indexPattern.count": "カウント", + "lensFormulaDocs.count": "カウント", "xpack.lens.indexPattern.count.documentation.quick": "\nドキュメントの総数。フィールドを入力すると、フィールド値の合計数がカウントされます。1つのドキュメントに複数の値があるフィールドでCount関数を使用すると、すべての値がカウントされます。\n ", - "xpack.lens.indexPattern.count.signature": "[field: string]", - "xpack.lens.indexPattern.counterRate": "カウンターレート", + "lensFormulaDocs.count.signature": "[field: string]", + "lensFormulaDocs.counterRate": "カウンターレート", "xpack.lens.indexPattern.counterRate.documentation.quick": "\n 増加を続ける時系列メトリックの経時的な変化率。\n ", - "xpack.lens.indexPattern.counterRate.signature": "メトリック:数値", + "lensFormulaDocs.counterRate.signature": "メトリック:数値", "xpack.lens.indexPattern.countOf": "レコード数", - "xpack.lens.indexPattern.cumulative_sum.signature": "メトリック:数値", - "xpack.lens.indexPattern.cumulativeSum": "累積和", + "lensFormulaDocs.cumulative_sum.signature": "メトリック:数値", + "lensFormulaDocs.cumulativeSum": "累積和", "xpack.lens.indexPattern.cumulativeSum.documentation.quick": "\n 経時的に増加するすべての値の合計。\n ", "xpack.lens.indexPattern.custom.externalDoc": "数値書式構文", "xpack.lens.indexPattern.custom.patternLabel": "フォーマット", @@ -22315,9 +22315,9 @@ "xpack.lens.indexPattern.dateRange.noTimeRange": "現在の時間範囲がありません", "xpack.lens.indexPattern.decimalPlacesLabel": "小数点以下", "xpack.lens.indexPattern.defaultFormatLabel": "デフォルト", - "xpack.lens.indexPattern.derivative": "差異", + "lensFormulaDocs.derivative": "差異", "xpack.lens.indexPattern.differences.documentation.quick": "\n 後続の間隔の値の変化。\n ", - "xpack.lens.indexPattern.differences.signature": "メトリック:数値", + "lensFormulaDocs.differences.signature": "メトリック:数値", "xpack.lens.indexPattern.dimensionEditor.headingAppearance": "見た目", "xpack.lens.indexPattern.dimensionEditor.headingData": "データ", "xpack.lens.indexPattern.dimensionEditor.headingFormula": "式", @@ -22370,30 +22370,30 @@ "xpack.lens.indexPattern.invalidOperationLabel": "選択した関数はこのフィールドで動作しません。", "xpack.lens.indexPattern.invalidReducedTimeRange": "縮小された時間範囲が無効です。正の整数の後に単位s、m、h、d、w、M、yのいずれかを入力します。例:3時間は3hです", "xpack.lens.indexPattern.invalidTimeShift": "無効な時間シフトです。正の整数の後に単位s、m、h、d、w、M、yのいずれかを入力します。例:3時間は3hです", - "xpack.lens.indexPattern.lastValue": "最終値", + "lensFormulaDocs.lastValue": "最終値", "xpack.lens.indexPattern.lastValue.disabled": "この関数には、データビューの日付フィールドが必要です", "xpack.lens.indexPattern.lastValue.documentation.quick": "\n最後のドキュメントのフィールドの値。データビューのデフォルト時刻フィールドで並べ替えられます。\n ", "xpack.lens.indexPattern.lastValue.showArrayValues": "ゼロ値を表示", "xpack.lens.indexPattern.lastValue.showArrayValuesExplanation": "各最後のドキュメントのこのフィールドに関連付けられたすべての値を表示します。", "xpack.lens.indexPattern.lastValue.showArrayValuesWithTopValuesWarning": "配列値を表示するときには、このフィールドを使用して上位の値をランク付けできません。", - "xpack.lens.indexPattern.lastValue.signature": "フィールド:文字列", + "lensFormulaDocs.lastValue.signature": "フィールド:文字列", "xpack.lens.indexPattern.lastValue.sortField": "日付フィールドで並べ替え", "xpack.lens.indexPattern.lastValue.sortFieldPlaceholder": "並べ替えフィールド", - "xpack.lens.indexPattern.max": "最高", + "lensFormulaDocs.max": "最高", "xpack.lens.indexPattern.max.description": "集約されたドキュメントから抽出された数値の最大値を返す単一値メトリック集約。", "xpack.lens.indexPattern.max.quickFunctionDescription": "数値フィールドの最大値。", - "xpack.lens.indexPattern.median": "中央", + "lensFormulaDocs.median": "中央", "xpack.lens.indexPattern.median.description": "集約されたドキュメントから抽出された中央値を計算する単一値メトリック集約。", "xpack.lens.indexPattern.median.quickFunctionDescription": "数値フィールドの中央値。", "xpack.lens.indexPattern.metaFieldsLabel": "メタフィールド", - "xpack.lens.indexPattern.metric.signature": "フィールド:文字列", - "xpack.lens.indexPattern.min": "最低", + "lensFormulaDocs.metric.signature": "フィールド:文字列", + "lensFormulaDocs.min": "最低", "xpack.lens.indexPattern.min.description": "集約されたドキュメントから抽出された数値の最小値を返す単一値メトリック集約。", "xpack.lens.indexPattern.min.quickFunctionDescription": "数値フィールドの最小値。", "xpack.lens.indexPattern.missingFieldLabel": "見つからないフィールド", "xpack.lens.indexPattern.moveToWorkspaceNotAvailable": "このフィールドを可視化するには、直接任意のレイヤーに追加してください。現在の設定では、このフィールドをワークスペースに追加することはサポートされていません。", - "xpack.lens.indexPattern.moving_average.signature": "メトリック:数値、[window]:数値", - "xpack.lens.indexPattern.movingAverage": "移動平均", + "lensFormulaDocs.moving_average.signature": "メトリック:数値、[window]:数値", + "lensFormulaDocs.movingAverage": "移動平均", "xpack.lens.indexPattern.movingAverage.basicExplanation": "移動平均はデータ全体でウィンドウをスライドし、平均値を表示します。移動平均は日付ヒストグラムでのみサポートされています。", "xpack.lens.indexPattern.movingAverage.documentation.quick": "\n 経時的な値の移動範囲の平均。\n ", "xpack.lens.indexPattern.movingAverage.limitations": "最初の移動平均値は2番目の項目から開始します。", @@ -22409,20 +22409,20 @@ "xpack.lens.indexPattern.noRealMetricError": "静的値のみのレイヤーには結果が表示されません。1つ以上の動的メトリックを使用してください", "xpack.lens.indexPattern.notAbsoluteTimeShift": "無効な時間シフトです。", "xpack.lens.indexPattern.numberFormatLabel": "数字", - "xpack.lens.indexPattern.overall_metric": "メトリック:数値", - "xpack.lens.indexPattern.overallMax": "全体最高", - "xpack.lens.indexPattern.overallMin": "全体最低", - "xpack.lens.indexPattern.overallSum": "全体合計", + "lensFormulaDocs.overall_metric": "メトリック:数値", + "lensFormulaDocs.overallMax": "全体最高", + "lensFormulaDocs.overallMin": "全体最低", + "lensFormulaDocs.overallSum": "全体合計", "xpack.lens.indexPattern.percentFormatLabel": "割合(%)", - "xpack.lens.indexPattern.percentile": "パーセンタイル", + "lensFormulaDocs.percentile": "パーセンタイル", "xpack.lens.indexPattern.percentile.documentation.quick": "\n すべてのドキュメントで発生する値のnパーセントよりも小さい最大値。\n ", "xpack.lens.indexPattern.percentile.percentileRanksValue": "パーセンタイル順位値", "xpack.lens.indexPattern.percentile.percentileValue": "パーセンタイル", - "xpack.lens.indexPattern.percentile.signature": "フィールド:文字列、[percentile]:数値", - "xpack.lens.indexPattern.percentileRank": "パーセンタイル順位", + "lensFormulaDocs.percentile.signature": "フィールド:文字列、[percentile]:数値", + "lensFormulaDocs.percentileRank": "パーセンタイル順位", "xpack.lens.indexPattern.percentileRanks.documentation.quick": "\n特定の値未満の値の割合。たとえば、値が計算された値の95%以上の場合、95パーセンタイル順位です。\n ", "xpack.lens.indexPattern.percentileRanks.errorMessage": "パーセンタイル順位値は数値でなければなりません", - "xpack.lens.indexPattern.percentileRanks.signature": "フィールド: 文字列, [value]: 数値", + "lensFormulaDocs.percentileRanks.signature": "フィールド: 文字列, [value]: 数値", "xpack.lens.indexPattern.precisionErrorWarning.accuracyDisabled.shortMessage": "これは近似値の可能性があります。より正確な結果を得るために精度モードを有効にできますが、Elasticsearchクラスターの負荷が大きくなります。", "xpack.lens.indexPattern.precisionErrorWarning.accuracyEnabled.shortMessage": "これは近似値の可能性があります。より正確な結果を得るには、フィルターを使用するか、上位の値の数を増やしてください。", "xpack.lens.indexPattern.precisionErrorWarning.ascendingCountPrecisionErrorWarning.shortMessage": "データのインデックスの作成方法により、近似される場合があります。より正確な結果を得るには、希少性でソートしてください。", @@ -22472,7 +22472,7 @@ "xpack.lens.indexPattern.samplingPerLayer.fallbackLayerName": "データレイヤー", "xpack.lens.indexPattern.settingsSamplingUnsupported": "この関数を選択すると、関数が正常に機能するように、このレイヤーのサンプリングが100%に変更されます。", "xpack.lens.indexPattern.sortField.invalid": "無効なフィールドです。データビューを確認するか、別のフィールドを選択してください。", - "xpack.lens.indexPattern.standardDeviation": "標準偏差", + "lensFormulaDocs.standardDeviation": "標準偏差", "xpack.lens.indexPattern.standardDeviation.description": "集約されたドキュメントから抽出された数値の標準偏差を計算する単一値メトリック集約", "xpack.lens.indexPattern.standardDeviation.quickFunctionDescription": "フィールド値の変動量である数値フィールドの値の標準偏差。", "xpack.lens.indexPattern.staticValue.label": "基準線値", @@ -22482,7 +22482,7 @@ "xpack.lens.indexPattern.staticValueWarningText": "固定値を上書きするには、クイック関数を選択します", "xpack.lens.indexPattern.suffixLabel": "接尾辞", "xpack.lens.indexpattern.suggestions.overTimeLabel": "一定時間", - "xpack.lens.indexPattern.sum": "合計", + "lensFormulaDocs.sum": "合計", "xpack.lens.indexPattern.sum.description": "集約されたドキュメントから抽出された数値を合計する単一値メトリック集約。", "xpack.lens.indexPattern.sum.quickFunctionDescription": "数値フィールドの値の合計量。", "xpack.lens.indexPattern.switchToRare": "希少性でランク", @@ -22520,8 +22520,8 @@ "xpack.lens.indexPattern.terms.size": "値の数", "xpack.lens.indexPattern.termsWithMultipleShifts": "単一のレイヤーでは、メトリックを異なる時間シフトと動的な上位の値と組み合わせることができません。すべてのメトリックで同じ時間シフト値を使用するか、上位の値ではなくフィルターを使用します。", "xpack.lens.indexPattern.termsWithMultipleShiftsFixActionLabel": "フィルターを使用", - "xpack.lens.indexPattern.time_scale": "メトリック:数値、単位:s|m|h|d|w|M|y", - "xpack.lens.indexPattern.timeScale": "単位で正規化", + "lensFormulaDocs.time_scale": "メトリック:数値、単位:s|m|h|d|w|M|y", + "lensFormulaDocs.timeScale": "単位で正規化", "xpack.lens.indexPattern.timeScale.label": "単位で正規化", "xpack.lens.indexPattern.timeScale.missingUnit": "単位による正規化の単位が指定されていません。", "xpack.lens.indexPattern.timeScale.tooltip": "基本の日付間隔に関係なく、常に指定された時間単位のレートとして表示されるように値を正規化します。", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 53b6da3e5fd08..04f220fd704c3 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -4833,6 +4833,73 @@ "languageDocumentationPopover.header": "{language} 参考", "languageDocumentationPopover.tooltip": "{lang} 参考", "languageDocumentationPopover.searchPlaceholder": "搜索", + "lensFormulaDocs.avg": "平均值", + "lensFormulaDocs.cardinality": "唯一计数", + "lensFormulaDocs.count": "计数", + "lensFormulaDocs.counterRate": "计数率", + "lensFormulaDocs.cumulativeSum": "累计和", + "lensFormulaDocs.derivative": "差异", + "lensFormulaDocs.lastValue": "最后值", + "lensFormulaDocs.max": "最大值", + "lensFormulaDocs.median": "中值", + "lensFormulaDocs.min": "最小值", + "lensFormulaDocs.movingAverage": "移动平均值", + "lensFormulaDocs.overallMax": "总体最大值", + "lensFormulaDocs.overallMin": "总体最小值", + "lensFormulaDocs.overallSum": "总和", + "lensFormulaDocs.percentile": "百分位数", + "lensFormulaDocs.percentileRank": "百分位等级", + "lensFormulaDocs.standardDeviation": "标准偏差", + "lensFormulaDocs.sum": "求和", + "lensFormulaDocs.timeScale": "按单位标准化", + "lensFormulaDocs.tinymath.absFunction.markdown": "\n计算绝对值。负值乘以 -1,正值保持不变。\n\n例如:计算平均海拔高度 `abs(average(altitude))`\n ", + "lensFormulaDocs.tinymath.addFunction.markdown": "\n将两个数值相加。\n还可以使用 `+` 符号。\n\n例如:计算两个字段的和\n\n`sum(price) + sum(tax)`\n\n例如:使计数偏移静态值\n\n`add(count(), 5)`\n ", + "lensFormulaDocs.tinymath.cbrtFunction.markdown": "\n值的立方根。\n\n例如:从体积计算边长\n`cbrt(last_value(volume))`\n ", + "lensFormulaDocs.tinymath.ceilFunction.markdown": "\n值的上限,向上舍入。\n\n例如:向上舍入价格\n`ceil(sum(price))`\n ", + "lensFormulaDocs.tinymath.clampFunction.markdown": "\n将值限制在最小值到最大值之间。\n\n例如:确保捕获离群值\n```\nclamp(\n average(bytes),\n percentile(bytes, percentile=5),\n percentile(bytes, percentile=95)\n)\n```\n", + "lensFormulaDocs.tinymath.cubeFunction.markdown": "\n计算数值的立方。\n\n例如:从边长计算体积\n`cube(last_value(length))`\n ", + "lensFormulaDocs.tinymath.defaultFunction.markdown": "\n值为 Null 时返回默认数值。\n\n例如:字段不包含数据时返回 -1\n`defaults(average(bytes), -1)`\n", + "lensFormulaDocs.tinymath.divideFunction.markdown": "\n将第一个数字除以第二个数字。\n还可以使用 `/` 符号\n\n例如:计算利润率\n`sum(profit) / sum(revenue)`\n\n例如:`divide(sum(bytes), 2)`\n ", + "lensFormulaDocs.tinymath.eqFunction.markdown": "\n在两个值之间执行相等比较。\n将用作 `ifelse` 比较函数的条件。\n还可以使用 `==` 符号。\n\n例如:如果平均字节数与平均内存容量完全相同,则返回 true\n`average(bytes) == average(memory)`\n\n示例:`eq(sum(bytes), 1000000)`\n ", + "lensFormulaDocs.tinymath.expFunction.markdown": "\n计算 *e* 的 n 次幂。\n\n例如:计算自然指数函数\n\n`exp(last_value(duration))`\n ", + "lensFormulaDocs.tinymath.fixFunction.markdown": "\n对于正值,取下限。对于负值,取上限。\n\n例如:正在向零舍入\n`fix(sum(profit))`\n ", + "lensFormulaDocs.tinymath.floorFunction.markdown": "\n向下舍入到最近整数值\n\n例如:向下舍入价格\n`floor(sum(price))`\n ", + "lensFormulaDocs.tinymath.gteFunction.markdown": "\n在两个值之间执行大于比较。\n将用作 `ifelse` 比较函数的条件。\n还可以使用 `>=` 符号。\n\n例如:如果平均字节数大于或等于平均内存容量,则返回 true\n`average(bytes) >= average(memory)`\n\n示例:`gte(average(bytes), 1000)`\n ", + "lensFormulaDocs.tinymath.gtFunction.markdown": "\n在两个值之间执行大于比较。\n将用作 `ifelse` 比较函数的条件。\n还可以使用 `>` 符号。\n\n例如:如果平均字节数大于平均内存容量,则返回 true\n`average(bytes) > average(memory)`\n\n示例:`gt(average(bytes), 1000)`\n ", + "lensFormulaDocs.tinymath.ifElseFunction.markdown": "\n返回某个值,取决于条件的元素是 true 还是 false。\n\n例如:每名客户的平均收入,但在某些情况下不提供客户 ID,这会计数为其他客户\n`sum(total)/(unique_count(customer_id) + ifelse( count() > count(kql='customer_id:*'), 1, 0))`\n ", + "lensFormulaDocs.tinymath.logFunction.markdown": "\n底数可选的对数。自然底数 *e* 用作默认值。\n\n例如:计算存储值所需的位数\n```\nlog(sum(bytes))\nlog(sum(bytes), 2)\n```\n ", + "lensFormulaDocs.tinymath.lteFunction.markdown": "\n在两个值之间执行小于或等于比较。\n将用作 `ifelse` 比较函数的条件。\n还可以使用 `<=` 符号。\n\n例如:如果平均字节数小于或等于平均内存容量,则返回 true\n`average(bytes) <= average(memory)`\n\n示例:`lte(average(bytes), 1000)`\n ", + "lensFormulaDocs.tinymath.ltFunction.markdown": "\n在两个值之间执行小于比较。\n将用作 `ifelse` 比较函数的条件。\n还可以使用 `<` 符号。\n\n例如:如果平均字节数小于平均内存容量,则返回 true\n`average(bytes) <= average(memory)`\n\n示例:`lt(average(bytes), 1000)`\n ", + "lensFormulaDocs.tinymath.maxFunction.markdown": "\n查找两个数字间的最大值。\n\n例如:查找两个字段平均值间的最大值\n`pick_max(average(bytes), average(memory))`\n ", + "lensFormulaDocs.tinymath.minFunction.markdown": "\n查找两个数字间的最小值。\n\n例如:查找两个字段平均值间的最小值\n`pick_min(average(bytes), average(memory))`\n ", + "lensFormulaDocs.tinymath.modFunction.markdown": "\n将函数除以数值后的余数\n\n例如:计算值的后三位数\n`mod(sum(price), 1000)`\n ", + "lensFormulaDocs.tinymath.multiplyFunction.markdown": "\n将两个数值相乘。\n还可以使用 `*` 符号。\n\n例如:计算现行税率后的价格\n`sum(bytes) * last_value(tax_rate)`\n\n例如:计算固定税率后的价格\n`multiply(sum(price), 1.2)`\n ", + "lensFormulaDocs.tinymath.powFunction.markdown": "\n计算该值的特定次幂。第二个参数必填\n\n例如:基于边长计算体积\n`pow(last_value(length), 3)`\n ", + "lensFormulaDocs.tinymath.roundFunction.markdown": "\n舍入到特定数目的小数位,默认为 0\n\n示例:舍入到百分\n```\nround(sum(bytes))\nround(sum(bytes), 2)\n```\n ", + "lensFormulaDocs.tinymath.sqrtFunction.markdown": "\n仅正值的平方根\n\n例如:基于面积计算边长\n`sqrt(last_value(area))`\n ", + "lensFormulaDocs.tinymath.squareFunction.markdown": "\n计算该值的 2 次幂\n\n例如:基于边长计算面积\n`square(last_value(length))`\n ", + "lensFormulaDocs.tinymath.subtractFunction.markdown": "\n从第二个数值减去第一个数值。\n还可以使用 `-` 符号。\n\n例如:计算字段的范围\n`subtract(max(bytes), min(bytes))`\n ", + "lensFormulaDocs.documentation.filterRatioDescription.markdown": "### 筛选比:\n\n使用 `kql=''` 筛选一个文档集,然后将其与相同分组中的其他文档进行比较。\n例如,要查看错误率随时间的推移如何变化:\n\n```\ncount(kql='response.status_code > 400') / count()\n```\n ", + "lensFormulaDocs.documentation.markdown": "## 工作原理\n\nLens 公式允许您使用 Elasticsearch 聚合和\n数学函数的组合进行数学计算。主要有三种类型的函数:\n\n* Elasticsearch 指标,如 `sum(bytes)`\n* 时间序列函数使用 Elasticsearch 指标作为输入,如 `cumulative_sum()`\n* 数学函数,如 `round()`\n\n使用所有这些函数的公式示例:\n\n```\nround(100 * moving_average(\naverage(cpu.load.pct),\nwindow=10,\nkql='datacenter.name: east*'\n))\n```\n\nElasticsearch 函数取可以用引号引起的字段名称。`sum(bytes)` 同于\nas `sum('bytes')`.\n\n一些函数取已命名参数,如 `moving_average(count(), window=5)`。\n\nElasticsearch 指标可以使用 KQL 或 Lucene 语法筛选。要添加筛选,请使用已命名\n参数 `kql='field: value'` 或 `lucene=''`。编写 KQL 或 Lucene 查询时,应始终使用\n单引号。如果您的搜索包含单引号,请使用反斜杠转义,如:`kql='Women's''\n\n数学函数可以取位置参数,如 pow(count(), 3) 与 count() * count() * count() 相同\n\n使用符号 +、-、/ 和 * 执行基本数学运算。\n ", + "lensFormulaDocs.documentation.percentOfTotalDescription.markdown": "### 总计的百分比\n\n公式可以计算所有分组的 `overall_sum`,\n其允许您将每个分组转成总计的百分比:\n\n```\nsum(products.base_price) / overall_sum(sum(products.base_price))\n```\n ", + "lensFormulaDocs.documentation.recentChangeDescription.markdown": "### 最近更改\n\n使用 `reducedTimeRange='30m'` 在与全局时间范围末尾相一致的指标时间范围上添加其他筛选。这可用于计算某个值在最近更改的幅度。\n\n```\nmax(system.network.in.bytes, reducedTimeRange=\"30m\")\n - min(system.network.in.bytes, reducedTimeRange=\"30m\")\n```\n ", + "lensFormulaDocs.documentation.weekOverWeekDescription.markdown": "### 周环比:\n\n使用 `shift='1w'` 以获取上一周每个分组\n的值。时间偏移不应与*排名最前值*函数一起使用。\n\n```\npercentile(system.network.in.bytes, percentile=99) /\npercentile(system.network.in.bytes, percentile=99, shift='1w')\n```\n ", + "lensFormulaDocs.cardinality.documentation.markdown": "\n计算指定字段的唯一值数目。适用于数字、字符串、日期和布尔值。\n\n例如:计算不同产品的数目:\n`unique_count(product.name)`\n\n例如:计算“clothes”组中不同产品的数目:\n`unique_count(product.name, kql='product.group=clothes')`\n ", + "lensFormulaDocs.count.documentation.markdown": "\n文档总数。提供字段时,将计算字段值的总数。将计数函数用于单个文档中具有多个值的字段时,将对所有值计数。\n\n#### 示例\n\n要计算文档总数,请使用 `count()`。\n\n要计算所有订单中产品的数量,请使用 `count(products.id)`。\n\n要计算与特定筛选匹配的文档数量,请使用 `count(kql='price > 500')`。\n ", + "lensFormulaDocs.counterRate.documentation.markdown": "\n计算不断增大的计数器的速率。此函数将仅基于计数器指标字段生成有帮助的结果,包括随着时间的推移度量某种单调递增。\n如果值确实变小,则其将此解析为计数器重置。要获取很精确的结果,应基于字段的 `max`计算 `counter_rate`。\n\n筛选或排名最前值维度定义的不同序列将分别执行此计算。\n用于公式中时,其使用当前时间间隔。\n\n例如:可视化随着时间的推移 Memcached 服务器接收的字节速率:\n`counter_rate(max(memcached.stats.read.bytes))`\n ", + "lensFormulaDocs.cumulativeSum.documentation.markdown": "\n计算随着时间的推移指标的累计和,即序列的所有以前值相加得出每个值。要使用此函数,您还需要配置 Date Histogram 维度。\n\n筛选或排名最前值维度定义的不同序列将分别执行此计算。\n\n例如:可视化随着时间的推移累计接收的字节:\n`cumulative_sum(sum(bytes))`\n ", + "lensFormulaDocs.differences.documentation.markdown": "\n计算随着时间的推移与指标最后一个值的差异。要使用此函数,您还需要配置 Date Histogram 维度。\n差异需要数据是顺序的。如果使用差异时数据为空,请尝试增加 Date Histogram 时间间隔。\n\n筛选或排名最前值维度定义的不同序列将分别执行此计算。\n\n例如:可视化随着时间的推移接收的字节的变化:\n`differences(sum(bytes))`\n ", + "lensFormulaDocs.lastValue.documentation.markdown": "\n返回最后一个文档的字段值,按数据视图的默认时间字段排序。\n\n此函数用于检索实体的最新状态。\n\n例如:获取服务器 A 的当前状态:\n`last_value(server.status, kql='server.name=\"A\"')`\n ", + "lensFormulaDocs.metric.documentation.markdown": "\n返回字段的 {metric}。此函数仅适用于数字字段。\n\n例如:获取价格的 {metric}:\n`{metric}(price)`\n\n例如:获取英国订单价格的 {metric}:\n`{metric}(price, kql='location:UK')`\n ", + "lensFormulaDocs.movingAverage.documentation.markdown": "\n计算随着时间的推移指标的移动平均值,即计算最后 n 个值的平均值以得出当前值。要使用此函数,您还需要配置 Date Histogram 维度。\n默认窗口值为 {defaultValue}。\n\n筛选或排名最前值维度定义的不同序列将分别执行此计算。\n\n取已命名参数 `window`,其指定当前值的平均计算中要包括过去多少个值。\n\n例如:平滑度量线:\n`moving_average(sum(bytes), window=5)`\n ", + "lensFormulaDocs.overall_average.documentation.markdown": "\n为当前图表中序列的所有数据点计算指标的平均值。序列由维度使用 Date Histogram 或时间间隔函数定义。\n分解数据的其他维度,如排名最前值或筛选,将被视为不同的序列。\n\n如果当前图表未使用 Date Histogram 或时间间隔函数,则无论使用什么函数,`overall_average` 都将计算所有维度的平均值\n\n例如:与平均值的偏离:\n`sum(bytes) - overall_average(sum(bytes))`\n ", + "lensFormulaDocs.overall_max.documentation.markdown": "\n为当前图表中序列的所有数据点计算指标的最大值。序列由维度使用 Date Histogram 或时间间隔函数定义。\n分解数据的其他维度,如排名最前值或筛选,将被视为不同的序列。\n\n如果当前图表未使用 Date Histogram 或内部函数,则无论使用什么函数,`overall_max` 都将计算所有维度的最大值\n\n例如:范围的百分比\n`(sum(bytes) - overall_min(sum(bytes))) / (overall_max(sum(bytes)) - overall_min(sum(bytes)))`\n ", + "lensFormulaDocs.overall_min.documentation.markdown": "\n为当前图表中序列的所有数据点计算指标的最小值。序列由维度使用 Date Histogram 或时间间隔函数定义。\n分解数据的其他维度,如排名最前值或筛选,将被视为不同的序列。\n\n如果当前图表未使用 Date Histogram 或时间间隔函数,则无论使用什么函数,`overall_min` 都将计算所有维度的最小值\n\n例如:范围的百分比\n`(sum(bytes) - overall_min(sum(bytes)) / (overall_max(sum(bytes)) - overall_min(sum(bytes)))`\n ", + "lensFormulaDocs.overall_sum.documentation.markdown": "\n计算当前图表中序列所有数据点的指标的和。序列由维度使用 Date Histogram 或时间间隔函数定义。\n分解数据的其他维度,如排名最前值或筛选,将被视为不同的序列。\n\n如果当前图表未使用 Date Histogram 或时间间隔函数,则无论使用什么函数,`overall_sum` 都将计算所有维度的和。\n\n例如:总计的百分比\n`sum(bytes) / overall_sum(sum(bytes))`\n ", + "lensFormulaDocs.percentile.documentation.markdown": "\n返回字段的值的指定百分位数。文档中百分之 n 的值比此值小。\n\n例如:获取大于 95 % 的值的字节数:\n`percentile(bytes, percentile=95)`\n ", + "lensFormulaDocs.percentileRanks.documentation.markdown": "\n返回小于某个值的值的百分比。例如,如果某个值大于或等于 95% 的观察值,则称它处于第 95 个百分位等级\n\n例如:获取小于 100 的值的百分比:\n`percentile_rank(bytes, value=100)`\n ", + "lensFormulaDocs.standardDeviation.documentation.markdown": "\n返回字段的变量或差量数量。此函数仅适用于数字字段。\n\n#### 示例\n\n要获取价格的标准偏差,请使用 `standard_deviation(price)`。\n\n要获取来自英国的订单的价格方差,请使用 `square(standard_deviation(price, kql='location:UK'))`。\n ", + "lensFormulaDocs.time_scale.documentation.markdown": "\n\n此高级函数用于将计数和总和标准化为特定时间间隔。它允许集成所存储的已标准化为特定时间间隔的指标。\n\n此函数只能在当前图表中使用了日期直方图函数时使用。\n\n例如:将已标准化指标与其他需要标准化的指标进行比较的比率。\n`normalize_by_unit(counter_rate(max(system.diskio.write.bytes)), unit='s') / last_value(apache.status.bytes_per_second)`\n ", "links.contentManagement.saveModalTitle": "将 {contentId} 面板保存到库", "links.externalLink.editor.urlFormatError": "格式无效。示例:{exampleUrl}", "links.dashboardLink.description": "前往仪表板", @@ -21938,54 +22005,6 @@ "xpack.lens.xyVisualization.dataTypeFailureXShort": "{axis} 的数据类型错误。", "xpack.lens.xyVisualization.dataTypeFailureYLong": "为 {axis} 提供的维度 {label} 具有错误的数据类型。应为数字,但却为 {dataType}", "xpack.lens.xyVisualization.dataTypeFailureYShort": "{axis} 的数据类型错误。", - "xpack.lens.formula.absFunction.markdown": "\n计算绝对值。负值乘以 -1,正值保持不变。\n\n例如:计算平均海拔高度 `abs(average(altitude))`\n ", - "xpack.lens.formula.addFunction.markdown": "\n将两个数值相加。\n还可以使用 `+` 符号。\n\n例如:计算两个字段的和\n\n`sum(price) + sum(tax)`\n\n例如:使计数偏移静态值\n\n`add(count(), 5)`\n ", - "xpack.lens.formula.cbrtFunction.markdown": "\n值的立方根。\n\n例如:从体积计算边长\n`cbrt(last_value(volume))`\n ", - "xpack.lens.formula.ceilFunction.markdown": "\n值的上限,向上舍入。\n\n例如:向上舍入价格\n`ceil(sum(price))`\n ", - "xpack.lens.formula.clampFunction.markdown": "\n将值限制在最小值到最大值之间。\n\n例如:确保捕获离群值\n```\nclamp(\n average(bytes),\n percentile(bytes, percentile=5),\n percentile(bytes, percentile=95)\n)\n```\n", - "xpack.lens.formula.cubeFunction.markdown": "\n计算数值的立方。\n\n例如:从边长计算体积\n`cube(last_value(length))`\n ", - "xpack.lens.formula.defaultFunction.markdown": "\n值为 Null 时返回默认数值。\n\n例如:字段不包含数据时返回 -1\n`defaults(average(bytes), -1)`\n", - "xpack.lens.formula.divideFunction.markdown": "\n将第一个数字除以第二个数字。\n还可以使用 `/` 符号\n\n例如:计算利润率\n`sum(profit) / sum(revenue)`\n\n例如:`divide(sum(bytes), 2)`\n ", - "xpack.lens.formula.eqFunction.markdown": "\n在两个值之间执行相等比较。\n将用作 `ifelse` 比较函数的条件。\n还可以使用 `==` 符号。\n\n例如:如果平均字节数与平均内存容量完全相同,则返回 true\n`average(bytes) == average(memory)`\n\n示例:`eq(sum(bytes), 1000000)`\n ", - "xpack.lens.formula.expFunction.markdown": "\n计算 *e* 的 n 次幂。\n\n例如:计算自然指数函数\n\n`exp(last_value(duration))`\n ", - "xpack.lens.formula.fixFunction.markdown": "\n对于正值,取下限。对于负值,取上限。\n\n例如:正在向零舍入\n`fix(sum(profit))`\n ", - "xpack.lens.formula.floorFunction.markdown": "\n向下舍入到最近整数值\n\n例如:向下舍入价格\n`floor(sum(price))`\n ", - "xpack.lens.formula.gteFunction.markdown": "\n在两个值之间执行大于比较。\n将用作 `ifelse` 比较函数的条件。\n还可以使用 `>=` 符号。\n\n例如:如果平均字节数大于或等于平均内存容量,则返回 true\n`average(bytes) >= average(memory)`\n\n示例:`gte(average(bytes), 1000)`\n ", - "xpack.lens.formula.gtFunction.markdown": "\n在两个值之间执行大于比较。\n将用作 `ifelse` 比较函数的条件。\n还可以使用 `>` 符号。\n\n例如:如果平均字节数大于平均内存容量,则返回 true\n`average(bytes) > average(memory)`\n\n示例:`gt(average(bytes), 1000)`\n ", - "xpack.lens.formula.ifElseFunction.markdown": "\n返回某个值,取决于条件的元素是 true 还是 false。\n\n例如:每名客户的平均收入,但在某些情况下不提供客户 ID,这会计数为其他客户\n`sum(total)/(unique_count(customer_id) + ifelse( count() > count(kql='customer_id:*'), 1, 0))`\n ", - "xpack.lens.formula.logFunction.markdown": "\n底数可选的对数。自然底数 *e* 用作默认值。\n\n例如:计算存储值所需的位数\n```\nlog(sum(bytes))\nlog(sum(bytes), 2)\n```\n ", - "xpack.lens.formula.lteFunction.markdown": "\n在两个值之间执行小于或等于比较。\n将用作 `ifelse` 比较函数的条件。\n还可以使用 `<=` 符号。\n\n例如:如果平均字节数小于或等于平均内存容量,则返回 true\n`average(bytes) <= average(memory)`\n\n示例:`lte(average(bytes), 1000)`\n ", - "xpack.lens.formula.ltFunction.markdown": "\n在两个值之间执行小于比较。\n将用作 `ifelse` 比较函数的条件。\n还可以使用 `<` 符号。\n\n例如:如果平均字节数小于平均内存容量,则返回 true\n`average(bytes) <= average(memory)`\n\n示例:`lt(average(bytes), 1000)`\n ", - "xpack.lens.formula.maxFunction.markdown": "\n查找两个数字间的最大值。\n\n例如:查找两个字段平均值间的最大值\n`pick_max(average(bytes), average(memory))`\n ", - "xpack.lens.formula.minFunction.markdown": "\n查找两个数字间的最小值。\n\n例如:查找两个字段平均值间的最小值\n`pick_min(average(bytes), average(memory))`\n ", - "xpack.lens.formula.modFunction.markdown": "\n将函数除以数值后的余数\n\n例如:计算值的后三位数\n`mod(sum(price), 1000)`\n ", - "xpack.lens.formula.multiplyFunction.markdown": "\n将两个数值相乘。\n还可以使用 `*` 符号。\n\n例如:计算现行税率后的价格\n`sum(bytes) * last_value(tax_rate)`\n\n例如:计算固定税率后的价格\n`multiply(sum(price), 1.2)`\n ", - "xpack.lens.formula.powFunction.markdown": "\n计算该值的特定次幂。第二个参数必填\n\n例如:基于边长计算体积\n`pow(last_value(length), 3)`\n ", - "xpack.lens.formula.roundFunction.markdown": "\n舍入到特定数目的小数位,默认为 0\n\n示例:舍入到百分\n```\nround(sum(bytes))\nround(sum(bytes), 2)\n```\n ", - "xpack.lens.formula.sqrtFunction.markdown": "\n仅正值的平方根\n\n例如:基于面积计算边长\n`sqrt(last_value(area))`\n ", - "xpack.lens.formula.squareFunction.markdown": "\n计算该值的 2 次幂\n\n例如:基于边长计算面积\n`square(last_value(length))`\n ", - "xpack.lens.formula.subtractFunction.markdown": "\n从第二个数值减去第一个数值。\n还可以使用 `-` 符号。\n\n例如:计算字段的范围\n`subtract(max(bytes), min(bytes))`\n ", - "xpack.lens.formulaDocumentation.filterRatioDescription.markdown": "### 筛选比:\n\n使用 `kql=''` 筛选一个文档集,然后将其与相同分组中的其他文档进行比较。\n例如,要查看错误率随时间的推移如何变化:\n\n```\ncount(kql='response.status_code > 400') / count()\n```\n ", - "xpack.lens.formulaDocumentation.markdown": "## 工作原理\n\nLens 公式允许您使用 Elasticsearch 聚合和\n数学函数的组合进行数学计算。主要有三种类型的函数:\n\n* Elasticsearch 指标,如 `sum(bytes)`\n* 时间序列函数使用 Elasticsearch 指标作为输入,如 `cumulative_sum()`\n* 数学函数,如 `round()`\n\n使用所有这些函数的公式示例:\n\n```\nround(100 * moving_average(\naverage(cpu.load.pct),\nwindow=10,\nkql='datacenter.name: east*'\n))\n```\n\nElasticsearch 函数取可以用引号引起的字段名称。`sum(bytes)` 同于\nas `sum('bytes')`.\n\n一些函数取已命名参数,如 `moving_average(count(), window=5)`。\n\nElasticsearch 指标可以使用 KQL 或 Lucene 语法筛选。要添加筛选,请使用已命名\n参数 `kql='field: value'` 或 `lucene=''`。编写 KQL 或 Lucene 查询时,应始终使用\n单引号。如果您的搜索包含单引号,请使用反斜杠转义,如:`kql='Women's''\n\n数学函数可以取位置参数,如 pow(count(), 3) 与 count() * count() * count() 相同\n\n使用符号 +、-、/ 和 * 执行基本数学运算。\n ", - "xpack.lens.formulaDocumentation.percentOfTotalDescription.markdown": "### 总计的百分比\n\n公式可以计算所有分组的 `overall_sum`,\n其允许您将每个分组转成总计的百分比:\n\n```\nsum(products.base_price) / overall_sum(sum(products.base_price))\n```\n ", - "xpack.lens.formulaDocumentation.recentChangeDescription.markdown": "### 最近更改\n\n使用 `reducedTimeRange='30m'` 在与全局时间范围末尾相一致的指标时间范围上添加其他筛选。这可用于计算某个值在最近更改的幅度。\n\n```\nmax(system.network.in.bytes, reducedTimeRange=\"30m\")\n - min(system.network.in.bytes, reducedTimeRange=\"30m\")\n```\n ", - "xpack.lens.formulaDocumentation.weekOverWeekDescription.markdown": "### 周环比:\n\n使用 `shift='1w'` 以获取上一周每个分组\n的值。时间偏移不应与*排名最前值*函数一起使用。\n\n```\npercentile(system.network.in.bytes, percentile=99) /\npercentile(system.network.in.bytes, percentile=99, shift='1w')\n```\n ", - "xpack.lens.indexPattern.cardinality.documentation.markdown": "\n计算指定字段的唯一值数目。适用于数字、字符串、日期和布尔值。\n\n例如:计算不同产品的数目:\n`unique_count(product.name)`\n\n例如:计算“clothes”组中不同产品的数目:\n`unique_count(product.name, kql='product.group=clothes')`\n ", - "xpack.lens.indexPattern.count.documentation.markdown": "\n文档总数。提供字段时,将计算字段值的总数。将计数函数用于单个文档中具有多个值的字段时,将对所有值计数。\n\n#### 示例\n\n要计算文档总数,请使用 `count()`。\n\n要计算所有订单中产品的数量,请使用 `count(products.id)`。\n\n要计算与特定筛选匹配的文档数量,请使用 `count(kql='price > 500')`。\n ", - "xpack.lens.indexPattern.counterRate.documentation.markdown": "\n计算不断增大的计数器的速率。此函数将仅基于计数器指标字段生成有帮助的结果,包括随着时间的推移度量某种单调递增。\n如果值确实变小,则其将此解析为计数器重置。要获取很精确的结果,应基于字段的 `max`计算 `counter_rate`。\n\n筛选或排名最前值维度定义的不同序列将分别执行此计算。\n用于公式中时,其使用当前时间间隔。\n\n例如:可视化随着时间的推移 Memcached 服务器接收的字节速率:\n`counter_rate(max(memcached.stats.read.bytes))`\n ", - "xpack.lens.indexPattern.cumulativeSum.documentation.markdown": "\n计算随着时间的推移指标的累计和,即序列的所有以前值相加得出每个值。要使用此函数,您还需要配置 Date Histogram 维度。\n\n筛选或排名最前值维度定义的不同序列将分别执行此计算。\n\n例如:可视化随着时间的推移累计接收的字节:\n`cumulative_sum(sum(bytes))`\n ", - "xpack.lens.indexPattern.differences.documentation.markdown": "\n计算随着时间的推移与指标最后一个值的差异。要使用此函数,您还需要配置 Date Histogram 维度。\n差异需要数据是顺序的。如果使用差异时数据为空,请尝试增加 Date Histogram 时间间隔。\n\n筛选或排名最前值维度定义的不同序列将分别执行此计算。\n\n例如:可视化随着时间的推移接收的字节的变化:\n`differences(sum(bytes))`\n ", - "xpack.lens.indexPattern.lastValue.documentation.markdown": "\n返回最后一个文档的字段值,按数据视图的默认时间字段排序。\n\n此函数用于检索实体的最新状态。\n\n例如:获取服务器 A 的当前状态:\n`last_value(server.status, kql='server.name=\"A\"')`\n ", - "xpack.lens.indexPattern.metric.documentation.markdown": "\n返回字段的 {metric}。此函数仅适用于数字字段。\n\n例如:获取价格的 {metric}:\n`{metric}(price)`\n\n例如:获取英国订单价格的 {metric}:\n`{metric}(price, kql='location:UK')`\n ", - "xpack.lens.indexPattern.movingAverage.documentation.markdown": "\n计算随着时间的推移指标的移动平均值,即计算最后 n 个值的平均值以得出当前值。要使用此函数,您还需要配置 Date Histogram 维度。\n默认窗口值为 {defaultValue}。\n\n筛选或排名最前值维度定义的不同序列将分别执行此计算。\n\n取已命名参数 `window`,其指定当前值的平均计算中要包括过去多少个值。\n\n例如:平滑度量线:\n`moving_average(sum(bytes), window=5)`\n ", - "xpack.lens.indexPattern.overall_average.documentation.markdown": "\n为当前图表中序列的所有数据点计算指标的平均值。序列由维度使用 Date Histogram 或时间间隔函数定义。\n分解数据的其他维度,如排名最前值或筛选,将被视为不同的序列。\n\n如果当前图表未使用 Date Histogram 或时间间隔函数,则无论使用什么函数,`overall_average` 都将计算所有维度的平均值\n\n例如:与平均值的偏离:\n`sum(bytes) - overall_average(sum(bytes))`\n ", - "xpack.lens.indexPattern.overall_max.documentation.markdown": "\n为当前图表中序列的所有数据点计算指标的最大值。序列由维度使用 Date Histogram 或时间间隔函数定义。\n分解数据的其他维度,如排名最前值或筛选,将被视为不同的序列。\n\n如果当前图表未使用 Date Histogram 或内部函数,则无论使用什么函数,`overall_max` 都将计算所有维度的最大值\n\n例如:范围的百分比\n`(sum(bytes) - overall_min(sum(bytes))) / (overall_max(sum(bytes)) - overall_min(sum(bytes)))`\n ", - "xpack.lens.indexPattern.overall_min.documentation.markdown": "\n为当前图表中序列的所有数据点计算指标的最小值。序列由维度使用 Date Histogram 或时间间隔函数定义。\n分解数据的其他维度,如排名最前值或筛选,将被视为不同的序列。\n\n如果当前图表未使用 Date Histogram 或时间间隔函数,则无论使用什么函数,`overall_min` 都将计算所有维度的最小值\n\n例如:范围的百分比\n`(sum(bytes) - overall_min(sum(bytes)) / (overall_max(sum(bytes)) - overall_min(sum(bytes)))`\n ", - "xpack.lens.indexPattern.overall_sum.documentation.markdown": "\n计算当前图表中序列所有数据点的指标的和。序列由维度使用 Date Histogram 或时间间隔函数定义。\n分解数据的其他维度,如排名最前值或筛选,将被视为不同的序列。\n\n如果当前图表未使用 Date Histogram 或时间间隔函数,则无论使用什么函数,`overall_sum` 都将计算所有维度的和。\n\n例如:总计的百分比\n`sum(bytes) / overall_sum(sum(bytes))`\n ", - "xpack.lens.indexPattern.percentile.documentation.markdown": "\n返回字段的值的指定百分位数。文档中百分之 n 的值比此值小。\n\n例如:获取大于 95 % 的值的字节数:\n`percentile(bytes, percentile=95)`\n ", - "xpack.lens.indexPattern.percentileRanks.documentation.markdown": "\n返回小于某个值的值的百分比。例如,如果某个值大于或等于 95% 的观察值,则称它处于第 95 个百分位等级\n\n例如:获取小于 100 的值的百分比:\n`percentile_rank(bytes, value=100)`\n ", - "xpack.lens.indexPattern.standardDeviation.documentation.markdown": "\n返回字段的变量或差量数量。此函数仅适用于数字字段。\n\n#### 示例\n\n要获取价格的标准偏差,请使用 `standard_deviation(price)`。\n\n要获取来自英国的订单的价格方差,请使用 `square(standard_deviation(price, kql='location:UK'))`。\n ", - "xpack.lens.indexPattern.time_scale.documentation.markdown": "\n\n此高级函数用于将计数和总和标准化为特定时间间隔。它允许集成所存储的已标准化为特定时间间隔的指标。\n\n此函数只能在当前图表中使用了日期直方图函数时使用。\n\n例如:将已标准化指标与其他需要标准化的指标进行比较的比率。\n`normalize_by_unit(counter_rate(max(system.diskio.write.bytes)), unit='s') / last_value(apache.status.bytes_per_second)`\n ", "xpack.lens.AggBasedLabel": "基于聚合的可视化", "xpack.lens.app.addToLibrary": "保存到库", "xpack.lens.app.cancel": "取消", @@ -22163,11 +22182,11 @@ "xpack.lens.fittingFunctionsTitle.lookahead": "下一个", "xpack.lens.fittingFunctionsTitle.none": "隐藏", "xpack.lens.fittingFunctionsTitle.zero": "零", - "xpack.lens.formula.base": "底数", - "xpack.lens.formula.boolean": "布尔值", - "xpack.lens.formula.condition": "条件", - "xpack.lens.formula.decimals": "小数", - "xpack.lens.formula.defaultValue": "默认值", + "lensFormulaDocs.tinymath.base": "底数", + "lensFormulaDocs.boolean": "布尔值", + "lensFormulaDocs.tinymath.condition": "条件", + "lensFormulaDocs.tinymath.decimals": "小数", + "lensFormulaDocs.tinymath.defaultValue": "默认值", "xpack.lens.formula.disableWordWrapLabel": "禁用自动换行", "xpack.lens.formula.editorHelpInlineHideLabel": "隐藏函数引用", "xpack.lens.formula.editorHelpInlineHideToolTip": "隐藏函数引用", @@ -22175,35 +22194,22 @@ "xpack.lens.formula.fullScreenEnterLabel": "展开", "xpack.lens.formula.fullScreenExitLabel": "折叠", "xpack.lens.formula.kqlExtraArguments": "[kql]?: string, [lucene]?: string", - "xpack.lens.formula.left": "左", - "xpack.lens.formula.max": "最大值", - "xpack.lens.formula.min": "最小值", - "xpack.lens.formula.number": "数字", + "lensFormulaDocs.tinymath.left": "左", "xpack.lens.formula.reducedTimeRangeExtraArguments": "[reducedTimeRange]?: 字符串", "xpack.lens.formula.requiredArgument": "必需", - "xpack.lens.formula.right": "右", + "lensFormulaDocs.tinymath.right": "右", "xpack.lens.formula.shiftExtraArguments": "[shift]?: string", - "xpack.lens.formula.string": "字符串", - "xpack.lens.formula.value": "值", - "xpack.lens.formulaCommonFormulaDocumentation": "最常见的公式是将两个值相除以得到百分比。要精确显示,请将“value format”设置为“percent”。", - "xpack.lens.formulaDocumentation.columnCalculationSection": "列计算", - "xpack.lens.formulaDocumentation.columnCalculationSectionDescription": "每行都执行这些函数,但系统会为这些函数提供整列作为上下文。这也称作窗口函数。", - "xpack.lens.formulaDocumentation.comparisonSection": "对比", - "xpack.lens.formulaDocumentation.comparisonSectionDescription": "这些函数用于执行值比较。", - "xpack.lens.formulaDocumentation.constantsSection": "Kibana 上下文", - "xpack.lens.formulaDocumentation.constantsSectionDescription": "这些函数用于检索 Kibana 上下文变量,它们包括日期直方图 `interval`、当前 `now` 和选定 `time_range`,并帮助您计算日期数学运算。", - "xpack.lens.formulaDocumentation.elasticsearchSection": "Elasticsearch", - "xpack.lens.formulaDocumentation.elasticsearchSectionDescription": "在原始文档上结果列表的每行都将执行这些函数,从而将匹配分解维度的所有文档聚合成单值。", - "xpack.lens.formulaDocumentation.filterRatio": "筛选比", - "xpack.lens.formulaDocumentation.mathSection": "数学", - "xpack.lens.formulaDocumentation.mathSectionDescription": "结果表的每行使用相同行中使用其他函数计算的单值执行这些函数。", - "xpack.lens.formulaDocumentation.percentOfTotal": "总计的百分比", - "xpack.lens.formulaDocumentation.recentChange": "最近更改", - "xpack.lens.formulaDocumentation.weekOverWeek": "周环比", + "lensFormulaDocs.tinymath.value": "值", + "lensFormulaDocs.documentation.filterRatio": "筛选比", + "lensFormulaDocs.documentation.mathSection": "数学", + "lensFormulaDocs.documentation.mathSectionDescription": "结果表的每行使用相同行中使用其他函数计算的单值执行这些函数。", + "lensFormulaDocs.documentation.percentOfTotal": "总计的百分比", + "lensFormulaDocs.documentation.recentChange": "最近更改", + "lensFormulaDocs.documentation.weekOverWeek": "周环比", "xpack.lens.formulaDocumentationHeading": "运作方式", "xpack.lens.formulaEnableWordWrapLabel": "启用自动换行", "xpack.lens.formulaExampleMarkdown": "示例", - "xpack.lens.formulaFrequentlyUsedHeading": "常用公式", + "lensFormulaDocs.frequentlyUsedHeading": "常用公式", "xpack.lens.formulaPlaceholderText": "通过将函数与数学表达式组合来键入公式,如:", "xpack.lens.fullExtent.niceValues": "舍入到优先值", "xpack.lens.functions.collapse.args.byHelpText": "要作为分组依据的列 - 这些列将保持原样", @@ -22262,29 +22268,24 @@ "xpack.lens.indexPattern.allFieldsLabelHelp": "将可用字段拖放到工作区并创建可视化。要更改可用字段,请选择不同数据视图,编辑您的查询或使用不同时间范围。一些字段类型无法在 Lens 中可视化,包括全文本字段和地理字段。", "xpack.lens.indexPattern.ascendingCountPrecisionErrorWarning.link": "访问文档", "xpack.lens.indexPattern.availableFieldsLabel": "可用字段", - "xpack.lens.indexPattern.avg": "平均值", "xpack.lens.indexPattern.avg.description": "单值指标聚合,计算从聚合文档提取的数值的平均值", "xpack.lens.indexPattern.avg.quickFunctionDescription": "一组数字字段的平均值。", "xpack.lens.indexPattern.bitsFormatLabel": "位 (1000)", "xpack.lens.indexPattern.bytesFormatLabel": "字节 (1024)", - "xpack.lens.indexPattern.cardinality": "唯一计数", "xpack.lens.indexPattern.cardinality.documentation.quick": "\n指定数字、字符串、日期或布尔值字段的唯一值的数目。\n ", - "xpack.lens.indexPattern.cardinality.signature": "field: string", + "lensFormulaDocs.cardinality.signature": "field: string", "xpack.lens.indexPattern.changeDataViewTitle": "数据视图", "xpack.lens.indexPattern.chooseField": "字段", "xpack.lens.indexPattern.chooseFieldLabel": "要使用此函数,请选择字段。", "xpack.lens.indexPattern.chooseSubFunction": "选择子函数", "xpack.lens.indexPattern.columnFormatLabel": "值格式", "xpack.lens.indexPattern.compactLabel": "紧凑值", - "xpack.lens.indexPattern.count": "计数", "xpack.lens.indexPattern.count.documentation.quick": "\n文档总数。提供字段时,将计算字段值的总数。将计数函数用于单个文档中具有多个值的字段时,将对所有值计数。\n ", - "xpack.lens.indexPattern.count.signature": "[字段:字符串]", - "xpack.lens.indexPattern.counterRate": "计数率", + "lensFormulaDocs.count.signature": "[字段:字符串]", "xpack.lens.indexPattern.counterRate.documentation.quick": "\n 不断增长的时间序列指标一段时间的更改速率。\n ", - "xpack.lens.indexPattern.counterRate.signature": "指标:数字", + "lensFormulaDocs.counterRate.signature": "指标:数字", "xpack.lens.indexPattern.countOf": "记录计数", - "xpack.lens.indexPattern.cumulative_sum.signature": "指标:数字", - "xpack.lens.indexPattern.cumulativeSum": "累计和", + "lensFormulaDocs.cumulative_sum.signature": "指标:数字", "xpack.lens.indexPattern.cumulativeSum.documentation.quick": "\n 随时间增长的所有值的总和。\n ", "xpack.lens.indexPattern.custom.externalDoc": "数字格式语法", "xpack.lens.indexPattern.custom.patternLabel": "格式", @@ -22314,9 +22315,8 @@ "xpack.lens.indexPattern.dateRange.noTimeRange": "当前时间范围时间间隔不可用", "xpack.lens.indexPattern.decimalPlacesLabel": "小数", "xpack.lens.indexPattern.defaultFormatLabel": "默认", - "xpack.lens.indexPattern.derivative": "差异", "xpack.lens.indexPattern.differences.documentation.quick": "\n 后续时间间隔中的值之间的更改情况。\n ", - "xpack.lens.indexPattern.differences.signature": "指标:数字", + "lensFormulaDocs.differences.signature": "指标:数字", "xpack.lens.indexPattern.dimensionEditor.headingAppearance": "外观", "xpack.lens.indexPattern.dimensionEditor.headingData": "数据", "xpack.lens.indexPattern.dimensionEditor.headingFormula": "公式", @@ -22369,30 +22369,25 @@ "xpack.lens.indexPattern.invalidOperationLabel": "此字段不适用于选定函数。", "xpack.lens.indexPattern.invalidReducedTimeRange": "缩小的时间范围无效。输入正整数数量,后跟以下单位之一:s、m、h、d、w、M、y。例如,3h 表示 3 小时", "xpack.lens.indexPattern.invalidTimeShift": "时间偏移无效。输入正整数数量,后跟以下单位之一:s、m、h、d、w、M、y。例如,3h 表示 3 小时", - "xpack.lens.indexPattern.lastValue": "最后值", "xpack.lens.indexPattern.lastValue.disabled": "此功能要求数据视图中存在日期字段", "xpack.lens.indexPattern.lastValue.documentation.quick": "\n最后一个文档的字段值,按数据视图的默认时间字段排序。\n ", "xpack.lens.indexPattern.lastValue.showArrayValues": "显示数组值", "xpack.lens.indexPattern.lastValue.showArrayValuesExplanation": "显示与最后每个文档中的此字段关联的所有值。", "xpack.lens.indexPattern.lastValue.showArrayValuesWithTopValuesWarning": "显示数组值时,无法使用此字段对排名最前值排名。", - "xpack.lens.indexPattern.lastValue.signature": "field: string", + "lensFormulaDocs.lastValue.signature": "field: string", "xpack.lens.indexPattern.lastValue.sortField": "按日期字段排序", "xpack.lens.indexPattern.lastValue.sortFieldPlaceholder": "排序字段", - "xpack.lens.indexPattern.max": "最大值", "xpack.lens.indexPattern.max.description": "单值指标聚合,返回从聚合文档提取的数值中的最大值。", "xpack.lens.indexPattern.max.quickFunctionDescription": "数字字段的最大值。", - "xpack.lens.indexPattern.median": "中值", "xpack.lens.indexPattern.median.description": "单值指标聚合,计算从聚合文档提取的中值。", "xpack.lens.indexPattern.median.quickFunctionDescription": "数字字段的中值。", "xpack.lens.indexPattern.metaFieldsLabel": "元字段", - "xpack.lens.indexPattern.metric.signature": "field: string", - "xpack.lens.indexPattern.min": "最小值", + "lensFormulaDocs.metric.signature": "field: string", "xpack.lens.indexPattern.min.description": "单值指标聚合,返回从聚合文档提取的数值中的最小值。", "xpack.lens.indexPattern.min.quickFunctionDescription": "数字字段的最小值。", "xpack.lens.indexPattern.missingFieldLabel": "缺失字段", "xpack.lens.indexPattern.moveToWorkspaceNotAvailable": "要可视化此字段,请直接将其添加到所需图层。根据您当前的配置,不支持将此字段添加到工作区。", - "xpack.lens.indexPattern.moving_average.signature": "指标:数字,[window]:数字", - "xpack.lens.indexPattern.movingAverage": "移动平均值", + "lensFormulaDocs.moving_average.signature": "指标:数字,[window]:数字", "xpack.lens.indexPattern.movingAverage.basicExplanation": "移动平均值在数据上滑动时间窗并显示平均值。仅日期直方图支持移动平均值。", "xpack.lens.indexPattern.movingAverage.documentation.quick": "\n 一段时间中移动窗口值的平均值。\n ", "xpack.lens.indexPattern.movingAverage.limitations": "第一个移动平均值开始于第二项。", @@ -22408,20 +22403,15 @@ "xpack.lens.indexPattern.noRealMetricError": "仅包含静态值的图层将不显示结果,请至少使用一个动态指标", "xpack.lens.indexPattern.notAbsoluteTimeShift": "时间偏移无效。", "xpack.lens.indexPattern.numberFormatLabel": "数字", - "xpack.lens.indexPattern.overall_metric": "指标:数字", - "xpack.lens.indexPattern.overallMax": "总体最大值", - "xpack.lens.indexPattern.overallMin": "总体最小值", - "xpack.lens.indexPattern.overallSum": "总和", + "lensFormulaDocs.overall_metric": "指标:数字", "xpack.lens.indexPattern.percentFormatLabel": "百分比", - "xpack.lens.indexPattern.percentile": "百分位数", "xpack.lens.indexPattern.percentile.documentation.quick": "\n 小于所有文档中出现值的 n% 的最大值。\n ", "xpack.lens.indexPattern.percentile.percentileRanksValue": "百分位等级值", "xpack.lens.indexPattern.percentile.percentileValue": "百分位数", - "xpack.lens.indexPattern.percentile.signature": "field: string, [percentile]: number", - "xpack.lens.indexPattern.percentileRank": "百分位等级", + "lensFormulaDocs.percentile.signature": "field: string, [percentile]: number", "xpack.lens.indexPattern.percentileRanks.documentation.quick": "\n小于特定值的值的百分比。例如,如果某个值大于或等于 95% 的计算值,则该值处于第 95 个百分位等级。\n ", "xpack.lens.indexPattern.percentileRanks.errorMessage": "百分位等级值必须为数字", - "xpack.lens.indexPattern.percentileRanks.signature": "字段:字符串,[值]:数字", + "lensFormulaDocs.percentileRanks.signature": "字段:字符串,[值]:数字", "xpack.lens.indexPattern.precisionErrorWarning.accuracyDisabled.shortMessage": "这可能为近似值。要获得更精确的结果,可以启用准确性模式,但这会增加 Elasticsearch 集群的负载。", "xpack.lens.indexPattern.precisionErrorWarning.accuracyEnabled.shortMessage": "这可能为近似值。要获得更精确的结果,请使用筛选或增加排名最前值的数量。", "xpack.lens.indexPattern.precisionErrorWarning.ascendingCountPrecisionErrorWarning.shortMessage": "这可能为近似值,具体取决于如何索引数据。要获得更精确的结果,请按稀有度排序。", @@ -22471,7 +22461,6 @@ "xpack.lens.indexPattern.samplingPerLayer.fallbackLayerName": "数据图层", "xpack.lens.indexPattern.settingsSamplingUnsupported": "选择此函数会将该图层的采样更改为 100% 以便正常运行。", "xpack.lens.indexPattern.sortField.invalid": "字段无效。检查数据视图或选取其他字段。", - "xpack.lens.indexPattern.standardDeviation": "标准偏差", "xpack.lens.indexPattern.standardDeviation.description": "单值指标聚合,计算从聚合文档提取的数值的标准偏差", "xpack.lens.indexPattern.standardDeviation.quickFunctionDescription": "数字字段值的标准偏差,即字段值的变动幅度。", "xpack.lens.indexPattern.staticValue.label": "参考线值", @@ -22481,7 +22470,6 @@ "xpack.lens.indexPattern.staticValueWarningText": "要覆盖静态值,请选择快速函数", "xpack.lens.indexPattern.suffixLabel": "后缀", "xpack.lens.indexpattern.suggestions.overTimeLabel": "时移", - "xpack.lens.indexPattern.sum": "求和", "xpack.lens.indexPattern.sum.description": "单值指标聚合,对从聚合文档提取的数值求和。", "xpack.lens.indexPattern.sum.quickFunctionDescription": "数字字段值的总数。", "xpack.lens.indexPattern.switchToRare": "按稀有度排名", @@ -22519,8 +22507,7 @@ "xpack.lens.indexPattern.terms.size": "值数目", "xpack.lens.indexPattern.termsWithMultipleShifts": "在单个图层中,无法将指标与不同时间偏移和动态排名最前值组合。将相同的时间偏移值用于所有指标或使用筛选,而非排名最前值。", "xpack.lens.indexPattern.termsWithMultipleShiftsFixActionLabel": "使用筛选", - "xpack.lens.indexPattern.time_scale": "指标:数字,单位:s|m|h|d|w|M|y", - "xpack.lens.indexPattern.timeScale": "按单位标准化", + "lensFormulaDocs.time_scale": "指标:数字,单位:s|m|h|d|w|M|y", "xpack.lens.indexPattern.timeScale.label": "按单位标准化", "xpack.lens.indexPattern.timeScale.missingUnit": "没有为按单位标准化指定单位。", "xpack.lens.indexPattern.timeScale.tooltip": "将值标准化为始终显示为每指定时间单位速率,无论基础日期时间间隔是多少。", diff --git a/yarn.lock b/yarn.lock index 02c8939697ab6..64386f862078d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4982,6 +4982,10 @@ version "0.0.0" uid "" +"@kbn/lens-formula-docs@link:packages/kbn-lens-formula-docs": + version "0.0.0" + uid "" + "@kbn/lens-plugin@link:x-pack/plugins/lens": version "0.0.0" uid "" From 78dff0579f53e8b1bfab87c6bedb775874c7626d Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Tue, 2 Jan 2024 15:16:53 +0100 Subject: [PATCH 033/323] Unskip UnifiedFieldList serverless test (#174053) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Fixes #172781 ### flaky-test-suite-runner * ✅ x-pack/test_serverless/functional/test_suites/security/config.examples.ts x 50 https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/4704 ### Checklist - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --------- Co-authored-by: Julia Rechkunova Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../examples/unified_field_list_examples/existing_fields.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/x-pack/test_serverless/functional/test_suites/common/examples/unified_field_list_examples/existing_fields.ts b/x-pack/test_serverless/functional/test_suites/common/examples/unified_field_list_examples/existing_fields.ts index d9721c09ecd3b..6dd1542bbea39 100644 --- a/x-pack/test_serverless/functional/test_suites/common/examples/unified_field_list_examples/existing_fields.ts +++ b/x-pack/test_serverless/functional/test_suites/common/examples/unified_field_list_examples/existing_fields.ts @@ -57,8 +57,7 @@ export default ({ getService, getPageObjects }: FtrProviderContext) => { await PageObjects.header.waitUntilLoadingHasFinished(); } - // FLAKY: https://github.com/elastic/kibana/issues/172781 - describe.skip('Fields existence info', () => { + describe('Fields existence info', () => { before(async () => { await esArchiver.load( 'test/api_integration/fixtures/es_archiver/index_patterns/constant_keyword' From 835c97682ec9bb5125da0ace323848fe4ab24d7e Mon Sep 17 00:00:00 2001 From: Dzmitry Lemechko Date: Tue, 2 Jan 2024 16:24:46 +0200 Subject: [PATCH 034/323] [data_views/_edit_field] update test (#174062) ## Summary This test was failing on MKI with retry timeout. https://buildkite.com/elastic/appex-qa-serverless-kibana-ftr-tests/builds/748 ![download](https://github.com/elastic/kibana/assets/10977896/e841ee44-00b1-4364-9af7-33b1ff2682d9) I update it to search for particular child element we are validating. Not sure if it solves the flakiness, but now if it fails we know there is something wrong with `data-test-subj='fieldPreviewItem'` element. --- .../management/data_views/_edit_field.ts | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/x-pack/test_serverless/functional/test_suites/common/management/data_views/_edit_field.ts b/x-pack/test_serverless/functional/test_suites/common/management/data_views/_edit_field.ts index 6ef2f01618a6c..b14687ad12003 100644 --- a/x-pack/test_serverless/functional/test_suites/common/management/data_views/_edit_field.ts +++ b/x-pack/test_serverless/functional/test_suites/common/management/data_views/_edit_field.ts @@ -34,26 +34,20 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('should show preview for fields in _source', async function () { await PageObjects.settings.filterField('extension'); await testSubjects.click('editFieldFormat'); - await testSubjects.find('value'); - let previewText = ''; - await retry.waitForWithTimeout('get preview value', 1000, async () => { - previewText = await testSubjects.getVisibleText('value'); - return previewText !== 'Value not set'; + await retry.tryForTime(5000, async () => { + const previewText = await testSubjects.getVisibleText('fieldPreviewItem > value'); + expect(previewText).to.be('css'); }); - expect(previewText).to.be('css'); await PageObjects.settings.closeIndexPatternFieldEditor(); }); it('should show preview for fields not in _source', async function () { await PageObjects.settings.filterField('extension.raw'); await testSubjects.click('editFieldFormat'); - await testSubjects.find('value'); - let previewText = ''; - await retry.waitForWithTimeout('get preview value', 1000, async () => { - previewText = await testSubjects.getVisibleText('value'); - return previewText !== 'Value not set'; + await retry.tryForTime(5000, async () => { + const previewText = await testSubjects.getVisibleText('fieldPreviewItem > value'); + expect(previewText).to.be('css'); }); - expect(previewText).to.be('css'); await PageObjects.settings.closeIndexPatternFieldEditor(); }); }); From 105cce4f59edf4066e8afec5bf70194f5bc320c8 Mon Sep 17 00:00:00 2001 From: Elastic Machine Date: Wed, 3 Jan 2024 01:28:25 +1030 Subject: [PATCH 035/323] Update kubernetes templates for elastic-agent (#173953) Automated by https://buildkite.com/elastic/elastic-agent/builds/5775 --------- Co-authored-by: obscloudnativemonitoring Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> From f4918eb7a0f21428e55f0591caa63d2118ef35bd Mon Sep 17 00:00:00 2001 From: Sander Philipse <94373878+sphilipse@users.noreply.github.com> Date: Tue, 2 Jan 2024 23:00:47 +0800 Subject: [PATCH 036/323] [Search] Fix connector docs links (#174010) ## Summary This fixes a couple of issues with connector docLinks in Serverless Elasticsearch. We now deeplink to the run with Docker/run from source sections, and link to the connectors page in the docs instead of the integrations page for connectors. --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- packages/kbn-doc-links/src/get_doc_links.ts | 4 +++- packages/kbn-doc-links/src/types.ts | 2 ++ x-pack/plugins/serverless_search/common/doc_links.ts | 12 ++++++++++-- .../connectors/connector_config/connector_link.tsx | 6 ++++-- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts index a259d76c6affb..8016b5aaee223 100644 --- a/packages/kbn-doc-links/src/get_doc_links.ts +++ b/packages/kbn-doc-links/src/get_doc_links.ts @@ -877,7 +877,9 @@ export const getDocLinks = ({ kibanaBranch, buildFlavor }: GetDocLinkOptions): D integrations: `${SERVERLESS_ELASTICSEARCH_DOCS}ingest-your-data`, integrationsLogstash: `${SERVERLESS_ELASTICSEARCH_DOCS}ingest-data-through-logstash`, integrationsBeats: `${SERVERLESS_ELASTICSEARCH_DOCS}ingest-data-through-beats`, - integrationsConnectorClient: `${SERVERLESS_ELASTICSEARCH_DOCS}ingest-your-data`, + integrationsConnectorClient: `${SERVERLESS_ELASTICSEARCH_DOCS}ingest-data-through-integrations-connector-client`, + integrationsConnectorClientRunFromSource: `${SERVERLESS_ELASTICSEARCH_DOCS}ingest-data-through-integrations-connector-client#run-from-source`, + integrationsConnectorClientRunWithDocker: `${SERVERLESS_ELASTICSEARCH_DOCS}ingest-data-through-integrations-connector-client#run-with-docker`, gettingStartedExplore: `${SERVERLESS_ELASTICSEARCH_DOCS}get-started`, gettingStartedIngest: `${SERVERLESS_ELASTICSEARCH_DOCS}get-started`, gettingStartedSearch: `${SERVERLESS_ELASTICSEARCH_DOCS}get-started`, diff --git a/packages/kbn-doc-links/src/types.ts b/packages/kbn-doc-links/src/types.ts index 910c0c218dcc5..e48f7327984b9 100644 --- a/packages/kbn-doc-links/src/types.ts +++ b/packages/kbn-doc-links/src/types.ts @@ -623,6 +623,8 @@ export interface DocLinks { readonly integrations: string; readonly integrationsBeats: string; readonly integrationsConnectorClient: string; + readonly integrationsConnectorClientRunFromSource: string; + readonly integrationsConnectorClientRunWithDocker: string; readonly integrationsLogstash: string; }; readonly serverlessSecurity: { diff --git a/x-pack/plugins/serverless_search/common/doc_links.ts b/x-pack/plugins/serverless_search/common/doc_links.ts index 7168f089c41e1..b222165f22359 100644 --- a/x-pack/plugins/serverless_search/common/doc_links.ts +++ b/x-pack/plugins/serverless_search/common/doc_links.ts @@ -10,7 +10,6 @@ import { DocLinks } from '@kbn/doc-links'; class ESDocLinks { public apiIntro: string = ''; public beats: string = ''; - public connectors: string = ''; public integrations: string = ''; public kibanaFeedback: string = ''; public kibanaRunApiInConsole: string = ''; @@ -20,6 +19,10 @@ class ESDocLinks { public securityApis: string = ''; public ingestionPipelines: string = ''; public dataStreams: string = ''; + // Connectors links + public connectors: string = ''; + public connectorsRunFromSource: string = ''; + public connectorsRunWithDocker: string = ''; // Client links public elasticsearchClients: string = ''; // go @@ -55,7 +58,6 @@ class ESDocLinks { this.integrations = newDocLinks.serverlessSearch.integrations; this.logstash = newDocLinks.serverlessSearch.integrationsLogstash; this.beats = newDocLinks.serverlessSearch.integrationsBeats; - this.connectors = newDocLinks.serverlessSearch.integrationsConnectorClient; this.kibanaFeedback = newDocLinks.kibana.feedback; this.kibanaRunApiInConsole = newDocLinks.console.serverlessGuide; this.metadata = newDocLinks.security.mappingRoles; @@ -64,6 +66,12 @@ class ESDocLinks { this.ingestionPipelines = newDocLinks.ingest.pipelines; this.dataStreams = newDocLinks.elasticsearch.dataStreams; + // Connectors links + this.connectors = newDocLinks.serverlessSearch.integrationsConnectorClient; + this.connectorsRunFromSource = + newDocLinks.serverlessSearch.integrationsConnectorClientRunFromSource; + this.connectorsRunWithDocker = + newDocLinks.serverlessSearch.integrationsConnectorClientRunWithDocker; // Client links this.elasticsearchClients = newDocLinks.serverlessClients.clientLib; // Go diff --git a/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_link.tsx b/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_link.tsx index 45f43a2b72b35..f6c039e2359aa 100644 --- a/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_link.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_link.tsx @@ -67,7 +67,8 @@ export const ConnectorLinkElasticsearch: React.FC {i18n.translate('xpack.serverlessSearch.connectors.runWithDockerLink', { @@ -81,7 +82,8 @@ export const ConnectorLinkElasticsearch: React.FC {i18n.translate('xpack.serverlessSearch.connectors.runFromSourceLink', { From 76854d450d5e465ab86c64c7601ee479f1c0c728 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Efe=20G=C3=BCrkan=20YALAMAN?= Date: Tue, 2 Jan 2024 16:03:23 +0100 Subject: [PATCH 037/323] [Search] Change Microsoft Teams service type (#174078) ## Summary Updates service type of MS Teams from `teams` to `microsoft_teams` --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- packages/kbn-search-connectors/connectors.ts | 2 +- .../components/search_index/connector/constants.ts | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/kbn-search-connectors/connectors.ts b/packages/kbn-search-connectors/connectors.ts index 998fc3bf2a2a7..61f1a3848ba68 100644 --- a/packages/kbn-search-connectors/connectors.ts +++ b/packages/kbn-search-connectors/connectors.ts @@ -271,7 +271,7 @@ export const CONNECTOR_DEFINITIONS: ConnectorServerSideDefinition[] = [ name: i18n.translate('searchConnectors.content.nativeConnectors.teams.name', { defaultMessage: 'Teams', }), - serviceType: 'teams', + serviceType: 'microsoft_teams', }, { iconPath: 'zoom.svg', diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/constants.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/constants.ts index 1da16c533a337..de7cd30a343ec 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/constants.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/constants.ts @@ -85,6 +85,13 @@ export const CONNECTORS_DICT: Record = { icon: CONNECTOR_ICONS.jira_cloud, platinumOnly: true, }, + microsoft_teams: { + docsUrl: docLinks.connectorsTeams, + externalAuthDocsUrl: '', + externalDocsUrl: '', + icon: CONNECTOR_ICONS.teams, + platinumOnly: true, + }, mongodb: { docsUrl: docLinks.connectorsMongoDB, externalAuthDocsUrl: 'https://www.mongodb.com/docs/atlas/app-services/authentication/', @@ -182,13 +189,6 @@ export const CONNECTORS_DICT: Record = { icon: CONNECTOR_ICONS.slack, platinumOnly: true, }, - teams: { - docsUrl: docLinks.connectorsTeams, - externalAuthDocsUrl: '', - externalDocsUrl: '', - icon: CONNECTOR_ICONS.teams, - platinumOnly: true, - }, zoom: { docsUrl: docLinks.connectorsZoom, externalAuthDocsUrl: '', From 8b3e1d3893297280b70c86dd0458b2473fb4fe5f Mon Sep 17 00:00:00 2001 From: Ignacio Rivas Date: Tue, 2 Jan 2024 16:23:01 +0100 Subject: [PATCH 038/323] [Remote Clusters] Show what type of security model each cluster is using (#173489) --- .../list/remote_clusters_list.test.js | 18 ++++++++- .../remote_clusters/common/constants.ts | 16 ++++++++ .../fixtures/remote_cluster.js | 2 + .../remote_cluster_list/components/index.js | 1 + .../components/security_model/index.ts | 8 ++++ .../security_model/security_model.tsx | 40 +++++++++++++++++++ .../detail_panel/detail_panel.js | 28 ++++++++++++- .../remote_cluster_table.js | 12 +++++- 8 files changed, 121 insertions(+), 4 deletions(-) create mode 100644 x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/index.ts create mode 100644 x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/security_model.tsx diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/list/remote_clusters_list.test.js b/x-pack/plugins/remote_clusters/__jest__/client_integration/list/remote_clusters_list.test.js index eed0f041ca8d2..fa13749a65801 100644 --- a/x-pack/plugins/remote_clusters/__jest__/client_integration/list/remote_clusters_list.test.js +++ b/x-pack/plugins/remote_clusters/__jest__/client_integration/list/remote_clusters_list.test.js @@ -208,6 +208,7 @@ describe('', () => { hasDeprecatedProxySetting: true, seeds: null, connectedNodesCount: null, + securityModel: 'api_keys', }); const remoteClusters = [remoteCluster1, remoteCluster2, remoteCluster3]; @@ -246,6 +247,7 @@ describe('', () => { 'Connected', 'default', remoteCluster1.seeds.join(', '), + 'CertificateInfo', remoteCluster1.connectedNodesCount.toString(), '', // Empty because the last column is for the "actions" on the resource ], @@ -255,6 +257,7 @@ describe('', () => { 'Not connected', PROXY_MODE, remoteCluster2.proxyAddress, + 'CertificateInfo', remoteCluster2.connectedSocketsCount.toString(), '', ], @@ -264,6 +267,7 @@ describe('', () => { 'Not connected', PROXY_MODE, remoteCluster2.proxyAddress, + 'api_keysInfo', remoteCluster2.connectedSocketsCount.toString(), '', ], @@ -278,13 +282,18 @@ describe('', () => { }); test('should have a tooltip to indicate that the cluster has a deprecated setting', () => { - const secondRow = rows[2].reactWrapper; // The third cluster has been defined with deprecated setting + const thirdRow = rows[2].reactWrapper; // The third cluster has been defined with deprecated setting expect( - findTestSubject(secondRow, 'remoteClustersTableListClusterWithDeprecatedSettingTooltip') + findTestSubject(thirdRow, 'remoteClustersTableListClusterWithDeprecatedSettingTooltip') .length ).toBe(1); }); + test('should have a tooltip to indicate that the cluster is using an old security model', () => { + const secondRow = rows[1].reactWrapper; + expect(findTestSubject(secondRow, 'authenticationTypeWarning').length).toBe(1); + }); + describe('bulk delete button', () => { test('should be visible when a remote cluster is selected', () => { expect(exists('remoteClusterBulkDeleteButton')).toBe(false); @@ -442,6 +451,11 @@ describe('', () => { actions.clickRemoteClusterAt(1); // the remoteCluster2 has been configured by node expect(exists('remoteClusterConfiguredByNodeWarning')).toBe(true); }); + + test('Should display authentication type', () => { + actions.clickRemoteClusterAt(2); + expect(exists('remoteClusterDetailAuthType')).toBe(true); + }); }); }); }); diff --git a/x-pack/plugins/remote_clusters/common/constants.ts b/x-pack/plugins/remote_clusters/common/constants.ts index 09cd79104d140..1357de2cd4640 100644 --- a/x-pack/plugins/remote_clusters/common/constants.ts +++ b/x-pack/plugins/remote_clusters/common/constants.ts @@ -26,3 +26,19 @@ export const API_BASE_PATH = '/api/remote_clusters'; export const SNIFF_MODE = 'sniff'; export const PROXY_MODE = 'proxy'; + +export const getSecurityModel = (type: string) => { + if (type === 'certificate') { + return i18n.translate('xpack.remoteClusters.securityModelCert', { + defaultMessage: 'Certificate', + }); + } + + if (type === 'api_key') { + return i18n.translate('xpack.remoteClusters.securityModelApiKey', { + defaultMessage: 'API key', + }); + } + + return type; +}; diff --git a/x-pack/plugins/remote_clusters/fixtures/remote_cluster.js b/x-pack/plugins/remote_clusters/fixtures/remote_cluster.js index d750636b76234..89f14b53c980c 100644 --- a/x-pack/plugins/remote_clusters/fixtures/remote_cluster.js +++ b/x-pack/plugins/remote_clusters/fixtures/remote_cluster.js @@ -19,6 +19,7 @@ export const getRemoteClusterMock = ({ mode = SNIFF_MODE, proxyAddress, hasDeprecatedProxySetting = false, + securityModel = 'certificate', } = {}) => ({ name, seeds, @@ -32,4 +33,5 @@ export const getRemoteClusterMock = ({ connectedSocketsCount, proxyAddress, hasDeprecatedProxySetting, + securityModel, }); diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/index.js b/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/index.js index 7bbc9ede4c4df..3776e66a073ff 100644 --- a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/index.js +++ b/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/index.js @@ -7,3 +7,4 @@ export { ConnectionStatus } from './connection_status'; export { RemoveClusterButtonProvider } from './remove_cluster_button_provider'; +export { SecurityModel } from './security_model'; diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/index.ts b/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/index.ts new file mode 100644 index 0000000000000..831de5cf899c8 --- /dev/null +++ b/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/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 { SecurityModel } from './security_model'; diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/security_model.tsx b/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/security_model.tsx new file mode 100644 index 0000000000000..c368493dbfd6c --- /dev/null +++ b/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/security_model.tsx @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { EuiText, EuiFlexGroup, EuiFlexItem, EuiIconTip } from '@elastic/eui'; + +import { getSecurityModel } from '../../../../../../common/constants'; +import { Cluster } from '../../../../../../common/lib/cluster_serialization'; + +export function SecurityModel({ securityModel }: { securityModel: Cluster['securityModel'] }) { + return ( + + + + {getSecurityModel(securityModel)} + + + + {securityModel !== 'api_key' && ( + + + } + /> + + )} + + ); +} diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.js b/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.js index 83e59f0f28d66..0caf89a6dea38 100644 --- a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.js +++ b/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.js @@ -34,7 +34,7 @@ import { import { reactRouterNavigate } from '@kbn/kibana-react-plugin/public'; import { PROXY_MODE } from '../../../../../common/constants'; import { ConfiguredByNodeWarning } from '../../components'; -import { ConnectionStatus, RemoveClusterButtonProvider } from '../components'; +import { ConnectionStatus, RemoveClusterButtonProvider, SecurityModel } from '../components'; import { getRouter } from '../../../services'; import { proxyModeUrl } from '../../../services/documentation'; @@ -181,6 +181,7 @@ export class DetailPanel extends Component { maxConnectionsPerCluster, initialConnectTimeout, mode, + securityModel, }) { return ( @@ -198,6 +199,18 @@ export class DetailPanel extends Component { + + + + + + + + + @@ -297,6 +311,18 @@ export class DetailPanel extends Component { + + + + + + + + + { if (queryText) { @@ -249,6 +249,16 @@ export class RemoteClusterTable extends Component { return connectionMode; }, }, + { + field: 'securityModel', + name: i18n.translate('xpack.remoteClusters.remoteClusterList.table.authTypeColumnTitle', { + defaultMessage: 'Authentication type', + }), + sortable: true, + render: (securityModel) => { + return ; + }, + }, { field: 'mode', name: i18n.translate( From 4df69518821486164b6e3a7b8b3d7bc780457de7 Mon Sep 17 00:00:00 2001 From: Julia Bardi <90178898+juliaElastic@users.noreply.github.com> Date: Tue, 2 Jan 2024 16:23:33 +0100 Subject: [PATCH 039/323] [Fleet] fix output host validator when host url is empty (#174086) ## Summary Closes https://github.com/elastic/kibana/issues/174076 Fix output host url validation when url is empty. To verify: - Go to Add output flyout - Click Add another URL - Delete the second URL box - Expect to see validation message `URL is required` image ### Checklist Delete any items that are not applicable to this PR. - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --- .../output_form_validators.test.tsx | 11 +++++++ .../output_form_validators.tsx | 29 ++++++++++++++----- 2 files changed, 32 insertions(+), 8 deletions(-) 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 d5da6f553cf89..4352a3a6b8248 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 @@ -83,6 +83,12 @@ describe('Output form validation', () => { expect(res).toEqual([{ message: 'URL is required' }]); }); + it('should not work with empty url', () => { + const res = validateESHosts(['']); + + expect(res).toEqual([{ index: 0, message: 'URL is required' }]); + }); + it('should work with valid url', () => { const res = validateESHosts(['https://test.fr:9200']); @@ -117,6 +123,11 @@ describe('Output form validation', () => { { index: 1, message: 'Duplicate URL' }, ]); }); + it('should return an error when invalid protocol', () => { + const res = validateESHosts(['ftp://test.fr']); + + expect(res).toEqual([{ index: 0, message: 'Invalid protocol' }]); + }); }); describe('validateLogstashHosts', () => { 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 26e63803df0e7..330d5c5d20122 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 @@ -88,14 +88,29 @@ export function validateKafkaHosts(value: string[]) { export function validateESHosts(value: string[]) { const res: Array<{ message: string; index?: number }> = []; const urlIndexes: { [key: string]: number[] } = {}; + const urlRequiredMessage = i18n.translate( + 'xpack.fleet.settings.outputForm.elasticUrlRequiredError', + { + defaultMessage: 'URL is required', + } + ); value.forEach((val, idx) => { try { if (!val) { - throw new Error('Host URL required'); - } - const urlParsed = new URL(val); - if (!['http:', 'https:'].includes(urlParsed.protocol)) { - throw new Error('Invalid protocol'); + res.push({ + message: urlRequiredMessage, + index: idx, + }); + } else { + const urlParsed = new URL(val); + if (!['http:', 'https:'].includes(urlParsed.protocol)) { + res.push({ + message: i18n.translate('xpack.fleet.settings.outputForm.invalidProtocolError', { + defaultMessage: 'Invalid protocol', + }), + index: idx, + }); + } } } catch (error) { res.push({ @@ -125,9 +140,7 @@ export function validateESHosts(value: string[]) { if (value.length === 0) { res.push({ - message: i18n.translate('xpack.fleet.settings.outputForm.elasticUrlRequiredError', { - defaultMessage: 'URL is required', - }), + message: urlRequiredMessage, }); } From ea35c5343c1477e7a9eb8c68811c86a6042aa6f6 Mon Sep 17 00:00:00 2001 From: Philippe Oberti Date: Tue, 2 Jan 2024 09:38:58 -0600 Subject: [PATCH 040/323] [Security Solution][Timeline] fix share alert not working with alert details expandable flyout (#174005) --- .../side_panel/event_details/expandable_event.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/expandable_event.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/expandable_event.tsx index 2b195eb11fe3c..2d4d493c5f8ca 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/expandable_event.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/expandable_event.tsx @@ -24,6 +24,7 @@ import styled from 'styled-components'; import { ALERT_WORKFLOW_ASSIGNEE_IDS } from '@kbn/rule-data-utils'; import { TableId } from '@kbn/securitysolution-data-table'; +import { URL_PARAM_KEY } from '../../../../common/hooks/use_url_state'; import type { GetFieldsData } from '../../../../common/hooks/use_get_fields_data'; import { Assignees } from '../../../../flyout/document_details/right/components/assignees'; import { useAssistantAvailability } from '../../../../assistant/use_assistant_availability'; @@ -107,6 +108,9 @@ export const ExpandableEventTitle = React.memo( _index: eventIndex, timestamp, }); + const urlModifier = (value: string) => { + return `${value}&${URL_PARAM_KEY.eventFlyout}=(preview:!(),rightPanel:(id:document-details-right,params:(id:${eventId},indexName:${eventIndex},scopeId:${scopeId})))`; + }; const { refetch } = useRefetchByScope({ scopeId }); const alertAssignees = useMemo( @@ -160,7 +164,7 @@ export const ExpandableEventTitle = React.memo( )} {isAlert && alertDetailsLink && ( - + {(copy) => ( Date: Tue, 2 Jan 2024 09:49:12 -0600 Subject: [PATCH 041/323] Upgrade slack/webhook (#173933) https://github.com/slackapi/node-slack-sdk/commits/main/packages/webhook --- package.json | 2 +- yarn.lock | 33 +++++++++++++-------------------- 2 files changed, 14 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 9f64d00d3ca57..739989d6270c4 100644 --- a/package.json +++ b/package.json @@ -865,7 +865,7 @@ "@opentelemetry/sdk-metrics-base": "^0.31.0", "@opentelemetry/semantic-conventions": "^1.4.0", "@reduxjs/toolkit": "1.7.2", - "@slack/webhook": "^5.0.4", + "@slack/webhook": "^7.0.1", "@smithy/eventstream-codec": "^2.0.12", "@smithy/util-utf8": "^2.0.0", "@tanstack/react-query": "^4.29.12", diff --git a/yarn.lock b/yarn.lock index 64386f862078d..b195777a41c06 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7622,19 +7622,19 @@ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== -"@slack/types@^1.2.1": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@slack/types/-/types-1.9.0.tgz#aa8f90b2f66ac54a77e42606644366f93cff4871" - integrity sha512-RmwgMWqOtzd2JPXdiaD/tyrDD0vtjjRDFdxN1I3tAxwBbg4aryzDUVqFc8na16A+3Xik/UN8X1hvVTw8J4EB9w== +"@slack/types@^2.9.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@slack/types/-/types-2.11.0.tgz#948c556081c3db977dfa8433490cc2ff41f47203" + integrity sha512-UlIrDWvuLaDly3QZhCPnwUSI/KYmV1N9LyhuH6EDKCRS1HWZhyTG3Ja46T3D0rYfqdltKYFXbJSSRPwZpwO0cQ== -"@slack/webhook@^5.0.4": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@slack/webhook/-/webhook-5.0.4.tgz#5d3e947387c1d0ccb176a153cec68c594edb7060" - integrity sha512-IC1dpVSc2F/pmwCxOb0QzH2xnGKmyT7MofPGhNkeaoiMrLMU+Oc7xV/AxGnz40mURtCtaDchZSM3tDo9c9x6BA== +"@slack/webhook@^7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@slack/webhook/-/webhook-7.0.1.tgz#91d939af249d50ea978a960a52b9f92bb7d2bdda" + integrity sha512-0Uj/GQ1H8nmeAVEx+7zcWb6/q/zsSOrlIaGi6zFnwgMSxjmV6xGsVwv8w6DaAdkUbtqa43v1cirWjySeZaCOIA== dependencies: - "@slack/types" "^1.2.1" - "@types/node" ">=8.9.0" - axios "^0.21.1" + "@slack/types" "^2.9.0" + "@types/node" ">=18.0.0" + axios "^1.6.0" "@smithy/eventstream-codec@^2.0.12": version "2.0.12" @@ -9794,7 +9794,7 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@18.18.5", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@>=8.9.0", "@types/node@^10.1.0", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^18.11.18", "@types/node@^18.17.5": +"@types/node@*", "@types/node@18.18.5", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@>=18.0.0", "@types/node@^10.1.0", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^18.11.18", "@types/node@^18.17.5": version "18.18.5" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.5.tgz#afc0fd975df946d6e1add5bbf98264225b212244" integrity sha512-4slmbtwV59ZxitY4ixUZdy1uRLf9eSIvBWPQxNjhHYWEtn0FryfKpyS2cvADYXTayWdKEIsJengncrVvkI4I6A== @@ -11794,13 +11794,6 @@ axe-core@^4.8.2: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.8.2.tgz#2f6f3cde40935825cf4465e3c1c9e77b240ff6ae" integrity sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g== -axios@^0.21.1: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" - axios@^0.26.0: version "0.26.1" resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" @@ -17162,7 +17155,7 @@ folktale@2.3.2: resolved "https://registry.yarnpkg.com/folktale/-/folktale-2.3.2.tgz#38231b039e5ef36989920cbf805bf6b227bf4fd4" integrity sha512-+8GbtQBwEqutP0v3uajDDoN64K2ehmHd0cjlghhxh0WpcfPzAIjPA03e1VvHlxL02FVGR0A6lwXsNQKn3H1RNQ== -follow-redirects@^1.0.0, follow-redirects@^1.14.0, follow-redirects@^1.14.8, follow-redirects@^1.15.0: +follow-redirects@^1.0.0, follow-redirects@^1.14.8, follow-redirects@^1.15.0: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== From b365051dc24156d810004917efa64dbcbaa64a59 Mon Sep 17 00:00:00 2001 From: Vitalii Dmyterko <92328789+vitaliidm@users.noreply.github.com> Date: Tue, 2 Jan 2024 16:00:08 +0000 Subject: [PATCH 042/323] [Security Solution][Detection Engine] fixes flaky ES|QL tests (#173251) ## Summary - fixes flaky ES|QL tests https://github.com/elastic/kibana/issues/173006 - the reason is an issue in cypress itself https://github.com/cypress-io/cypress/issues/22113. It doesn't have a fix yet, but I tried some suggested workaround, as calling `uncaught:exception` handler after page is opened, so it is registered in the same origin. Which seemed to help, since there was no failures in 300 runs. Usual rate of flakiness before the fix was 3-7 failures per 100 runs. Hopefully, it will work and we won't see any errors in future. ### Checklist Delete any items that are not applicable to this PR. - [x] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed - 100 runs for all Detection tests: https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/4625 - 2 x 100 for just failing ones: https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/4620, https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/4605 --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../rule_creation/esql_rule_ess.cy.ts | 41 +++++++++++++++---- .../rule_edit/esql_rule.cy.ts | 9 ++-- .../cypress/tasks/create_new_rule.ts | 9 ++++ 3 files changed, 45 insertions(+), 14 deletions(-) diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/esql_rule_ess.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/esql_rule_ess.cy.ts index ab0fbb0cf445a..089cfc01ce0bb 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/esql_rule_ess.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/esql_rule_ess.cy.ts @@ -20,6 +20,7 @@ import { getDetails, goBackToRulesTable } from '../../../../tasks/rule_details'; import { expectNumberOfRules } from '../../../../tasks/alerts_detection_rules'; import { deleteAlertsAndRules } from '../../../../tasks/api_calls/common'; import { + expandEsqlQueryBar, fillAboutRuleAndContinue, fillDefineEsqlRuleAndContinue, fillScheduleRuleAndContinue, @@ -34,12 +35,22 @@ import { visit } from '../../../../tasks/navigation'; import { CREATE_RULE_URL } from '../../../../urls/navigation'; +// https://github.com/cypress-io/cypress/issues/22113 +// issue is inside monaco editor, used in ES|QL query input +// calling it after visiting page in each tests, seems fixes the issue +// the only other alternative is patching ResizeObserver, which is something I would like to avoid +const workaroundForResizeObserver = () => + cy.on('uncaught:exception', (err) => { + if (err.message.includes('ResizeObserver loop limit exceeded')) { + return false; + } + }); + describe('Detection ES|QL rules, creation', { tags: ['@ess'] }, () => { const rule = getEsqlRule(); const expectedNumberOfRules = 1; - // FLAKY: https://github.com/elastic/kibana/issues/172618 - describe.skip('creation', () => { + describe('creation', () => { beforeEach(() => { deleteAlertsAndRules(); login(); @@ -47,8 +58,10 @@ describe('Detection ES|QL rules, creation', { tags: ['@ess'] }, () => { it('creates an ES|QL rule', function () { visit(CREATE_RULE_URL); + workaroundForResizeObserver(); selectEsqlRuleType(); + expandEsqlQueryBar(); // ensures ES|QL rule in technical preview on create page cy.get(ESQL_TYPE).contains('Technical Preview'); @@ -73,8 +86,10 @@ describe('Detection ES|QL rules, creation', { tags: ['@ess'] }, () => { // this test case is important, since field shown in rule override component are coming from ES|QL query, not data view fields API it('creates an ES|QL rule and overrides its name', function () { visit(CREATE_RULE_URL); + workaroundForResizeObserver(); selectEsqlRuleType(); + expandEsqlQueryBar(); fillDefineEsqlRuleAndContinue(rule); fillAboutSpecificEsqlRuleAndContinue({ ...rule, rule_name_override: 'test_id' }); @@ -86,23 +101,26 @@ describe('Detection ES|QL rules, creation', { tags: ['@ess'] }, () => { }); }); - // FLAKY: https://github.com/elastic/kibana/issues/172881 - describe.skip('ES|QL query validation', () => { + describe('ES|QL query validation', () => { beforeEach(() => { login(); visit(CREATE_RULE_URL); }); it('shows error when ES|QL query is empty', function () { - selectEsqlRuleType(); + workaroundForResizeObserver(); + selectEsqlRuleType(); + expandEsqlQueryBar(); getDefineContinueButton().click(); cy.get(ESQL_QUERY_BAR).contains('ES|QL query is required'); }); it('proceeds further once invalid query is fixed', function () { - selectEsqlRuleType(); + workaroundForResizeObserver(); + selectEsqlRuleType(); + expandEsqlQueryBar(); getDefineContinueButton().click(); cy.get(ESQL_QUERY_BAR).contains('required'); @@ -115,9 +133,11 @@ describe('Detection ES|QL rules, creation', { tags: ['@ess'] }, () => { }); it('shows error when non-aggregating ES|QL query does not [metadata] operator', function () { + workaroundForResizeObserver(); + const invalidNonAggregatingQuery = 'from auditbeat* | limit 5'; selectEsqlRuleType(); - + expandEsqlQueryBar(); fillEsqlQueryBar(invalidNonAggregatingQuery); getDefineContinueButton().click(); @@ -127,11 +147,13 @@ describe('Detection ES|QL rules, creation', { tags: ['@ess'] }, () => { }); it('shows error when non-aggregating ES|QL query does not return _id field', function () { + workaroundForResizeObserver(); + const invalidNonAggregatingQuery = 'from auditbeat* [metadata _id, _version, _index] | keep agent.* | limit 5'; selectEsqlRuleType(); - + expandEsqlQueryBar(); fillEsqlQueryBar(invalidNonAggregatingQuery); getDefineContinueButton().click(); @@ -141,12 +163,13 @@ describe('Detection ES|QL rules, creation', { tags: ['@ess'] }, () => { }); it('shows error when ES|QL query is invalid', function () { + workaroundForResizeObserver(); const invalidEsqlQuery = 'from auditbeat* [metadata _id, _version, _index] | not_existing_operator'; visit(CREATE_RULE_URL); selectEsqlRuleType(); - + expandEsqlQueryBar(); fillEsqlQueryBar(invalidEsqlQuery); getDefineContinueButton().click(); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_edit/esql_rule.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_edit/esql_rule.cy.ts index 50980e0add4f8..265263ba495c6 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_edit/esql_rule.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_edit/esql_rule.cy.ts @@ -9,7 +9,7 @@ import { getEsqlRule } from '../../../../objects/rule'; import { ESQL_QUERY_DETAILS, RULE_NAME_OVERRIDE_DETAILS } from '../../../../screens/rule_details'; -import { ESQL_QUERY_BAR, ESQL_QUERY_BAR_EXPAND_BTN } from '../../../../screens/create_new_rule'; +import { ESQL_QUERY_BAR } from '../../../../screens/create_new_rule'; import { createRule } from '../../../../tasks/api_calls/rules'; @@ -18,6 +18,7 @@ import { getDetails } from '../../../../tasks/rule_details'; import { deleteAlertsAndRules } from '../../../../tasks/api_calls/common'; import { clearEsqlQueryBar, + expandEsqlQueryBar, fillEsqlQueryBar, fillOverrideEsqlRuleName, goToAboutStepTab, @@ -44,8 +45,7 @@ describe('Detection ES|QL rules, edit', { tags: ['@ess'] }, () => { it('edits ES|QL rule and checks details page', () => { visit(RULES_MANAGEMENT_URL); editFirstRule(); - // expands query bar, so query is not obscured on narrow screens - cy.get(ESQL_QUERY_BAR_EXPAND_BTN).click(); + expandEsqlQueryBar(); // ensure once edit form opened, correct query is displayed in ES|QL input cy.get(ESQL_QUERY_BAR).contains(rule.query); @@ -78,8 +78,7 @@ describe('Detection ES|QL rules, edit', { tags: ['@ess'] }, () => { visit(RULES_MANAGEMENT_URL); editFirstRule(); - // expands query bar, so query is not obscured on narrow screens - cy.get(ESQL_QUERY_BAR_EXPAND_BTN).click(); + expandEsqlQueryBar(); // ensure once edit form opened, correct query is displayed in ES|QL input cy.get(ESQL_QUERY_BAR).contains(rule.query); diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/create_new_rule.ts b/x-pack/test/security_solution_cypress/cypress/tasks/create_new_rule.ts index a5f411670ad38..1089834384374 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/create_new_rule.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/create_new_rule.ts @@ -55,6 +55,7 @@ import { EQL_TYPE, ESQL_TYPE, ESQL_QUERY_BAR, + ESQL_QUERY_BAR_EXPAND_BTN, ESQL_QUERY_BAR_INPUT_AREA, FALSE_POSITIVES_INPUT, IMPORT_QUERY_FROM_SAVED_TIMELINE_LINK, @@ -537,6 +538,14 @@ export const fillEsqlQueryBar = (query: string) => { cy.get(ESQL_QUERY_BAR_INPUT_AREA).type(query); }; +/** + * expands query bar, so query is not obscured on narrow screens + * and validation message is not covered by input menu tooltip + */ +export const expandEsqlQueryBar = () => { + cy.get(ESQL_QUERY_BAR_EXPAND_BTN).click(); +}; + export const fillDefineEsqlRuleAndContinue = (rule: EsqlRuleCreateProps) => { cy.get(ESQL_QUERY_BAR).contains('ES|QL query'); fillEsqlQueryBar(rule.query); From f799bf65c18938ec0a815ef989f629aabc343b64 Mon Sep 17 00:00:00 2001 From: Jon Date: Tue, 2 Jan 2024 10:20:20 -0600 Subject: [PATCH 043/323] [ci/yarn_deduplicate] Add exception information to check_for_changed_files (#174047) Adds instructions for adding exceptions to duplicated dependencies. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .buildkite/scripts/steps/checks/yarn_deduplicate.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.buildkite/scripts/steps/checks/yarn_deduplicate.sh b/.buildkite/scripts/steps/checks/yarn_deduplicate.sh index ce62b2312c034..22bf115aad9c0 100755 --- a/.buildkite/scripts/steps/checks/yarn_deduplicate.sh +++ b/.buildkite/scripts/steps/checks/yarn_deduplicate.sh @@ -7,4 +7,4 @@ source .buildkite/scripts/common/util.sh echo "--- Check yarn.lock for duplicated modules" node scripts/yarn_deduplicate -check_for_changed_files 'node scripts/yarn_deduplicate && yarn kbn bootstrap' false +check_for_changed_files 'node scripts/yarn_deduplicate' false 'TO FIX: Run node '"'"'scripts/yarn_deduplicate && yarn kbn bootstrap'"'"' locally, or add an exception to src/dev/yarn_deduplicate/index.ts and then commit the changes and push to your branch' From 1dafbab19bae3c3671d81faddf7de741a93cf756 Mon Sep 17 00:00:00 2001 From: Kyle Pollich Date: Tue, 2 Jan 2024 11:26:08 -0500 Subject: [PATCH 044/323] [Fleet] Add concurrency control to Fleet data stream API handler (#174087) ## Summary Closes https://github.com/elastic/kibana/issues/166478 Wrap data stream query logic in a `pMap` call with `concurrency: 50` to prevent overwhelming Elasticsearch in environments with several thousand data streams. --- .../fleet/server/routes/data_streams/handlers.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/fleet/server/routes/data_streams/handlers.ts b/x-pack/plugins/fleet/server/routes/data_streams/handlers.ts index bf8e8a22cdbdd..f9021f344c69b 100644 --- a/x-pack/plugins/fleet/server/routes/data_streams/handlers.ts +++ b/x-pack/plugins/fleet/server/routes/data_streams/handlers.ts @@ -6,6 +6,7 @@ */ import { keyBy, keys, merge } from 'lodash'; import type { RequestHandler } from '@kbn/core/server'; +import pMap from 'p-map'; import type { DataStream } from '../../types'; import { KibanaSavedObjectType } from '../../../common/types'; @@ -120,7 +121,7 @@ export const getListHandler: RequestHandler = async (context, request, response) ); // Query additional information for each data stream - const dataStreamPromises = dataStreamNames.map(async (dataStreamName) => { + const queryDataStreamInfo = async (dataStreamName: string) => { const dataStream = dataStreams[dataStreamName]; const dataStreamResponse: DataStream = { @@ -197,13 +198,18 @@ export const getListHandler: RequestHandler = async (context, request, response) } return dataStreamResponse; - }); + }; // Return final data streams objects sorted by last activity, descending // After filtering out data streams that are missing dataset/namespace/type/package fields - body.data_streams = (await Promise.all(dataStreamPromises)) + body.data_streams = ( + await pMap(dataStreamNames, (dataStreamName) => queryDataStreamInfo(dataStreamName), { + concurrency: 50, + }) + ) .filter(({ dataset, namespace, type }) => dataset && namespace && type) .sort((a, b) => b.last_activity_ms - a.last_activity_ms); + return response.ok({ body, }); From 5f40efb963696e08e083e2afa4fdd5b32169cbf6 Mon Sep 17 00:00:00 2001 From: Elastic Machine Date: Wed, 3 Jan 2024 03:03:43 +1030 Subject: [PATCH 045/323] [main] Sync bundled packages with Package Storage (#170686) Automated by https://internal-ci.elastic.co/job/package_storage/job/sync-bundled-packages-job/job/main/8803/ Co-authored-by: apmmachine Co-authored-by: Julia Bardi <90178898+juliaElastic@users.noreply.github.com> Co-authored-by: Carson Ip --- fleet_packages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fleet_packages.json b/fleet_packages.json index 9d3a9d77b68c6..5e2f76b1293e0 100644 --- a/fleet_packages.json +++ b/fleet_packages.json @@ -30,7 +30,7 @@ }, { "name": "elastic_agent", - "version": "1.15.0" + "version": "1.16.0" }, { "name": "endpoint", From 1de5cde975299b1fb9026d96c2e1c90ab2b037e9 Mon Sep 17 00:00:00 2001 From: Cristina Amico Date: Tue, 2 Jan 2024 17:51:17 +0100 Subject: [PATCH 046/323] [Fleet] Show warning when download upgrade is failing (#173844) Fixes https://github.com/elastic/kibana/issues/173370 Closes https://github.com/elastic/kibana/issues/171941 ## Summary Show a warning when download upgrade is failing. This PR addresses a specific case of `upgrade downloading`: when the upgrade started but it's failing with an error. In this case, since 8.12, the agent metadata have a `retry_msg` that can be used to distinguish this case from the regular upgrade. I'm also fixing one smaller bug that I introduced with https://github.com/elastic/kibana/pull/173253, the tooltip shown in the case when the agent is not upgradeable was hiding the badge, so I'm moving the if as the last one in the function. ## Testing - Have an 8.12 agent installed with Multipass (it needs to be upgradeable) - Change the download binary url to something broken: `sourceURI: https://artifacts.elastic.co/notdownloads/` - Force upgrade from dev tools: ``` POST kbn:/api/fleet/agents/c3f09103-4e69-4a36-bee2-84223bedef36/upgrade { "version": "8.12.0", "force": true } ``` - Go to agent overview, the badge will show "upgrading" but will also have a warning icon with a tooltip, showing the retry message and the `retry_until` time in humanized format (retry until...remaining): ![Screenshot 2024-01-02 at 16 54 20](https://github.com/elastic/kibana/assets/16084106/ac340e7d-5151-4e4e-b6a6-731a113ff984) This way the message shows the values present in the agent metadata. - Same is reported in the agent list table: ![Screenshot 2024-01-02 at 16 54 28](https://github.com/elastic/kibana/assets/16084106/1f8823c4-9e5c-4f4c-9cdc-2839b16214bb) - After a while the retries will be finished and the agent will show the regular "upgrade failed" badge (this was already implemented): ![Screenshot 2023-12-21 at 12 07 27](https://github.com/elastic/kibana/assets/16084106/c1d5bf67-a4fd-4b04-aa8d-24dc8d4af54e) ### Checklist - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../fleet/common/types/models/agent.ts | 2 + .../agent_details/agent_details_overview.tsx | 7 +- .../components/agent_upgrade_status.test.tsx | 64 +++++++++++++++ .../components/agent_upgrade_status.tsx | 82 ++++++++++++++----- x-pack/plugins/fleet/public/services/index.ts | 1 + 5 files changed, 134 insertions(+), 22 deletions(-) diff --git a/x-pack/plugins/fleet/common/types/models/agent.ts b/x-pack/plugins/fleet/common/types/models/agent.ts index 1242a61124952..47d9c424ef0e0 100644 --- a/x-pack/plugins/fleet/common/types/models/agent.ts +++ b/x-pack/plugins/fleet/common/types/models/agent.ts @@ -449,5 +449,7 @@ export interface AgentUpgradeDetails { download_rate?: number; // bytes per second failed_state?: AgentUpgradeStateType; error_msg?: string; + retry_error_msg?: string; + retry_until?: string; }; } diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_overview.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_overview.tsx index f27d428bd42cc..45d5ead9909ee 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_overview.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_overview.tsx @@ -23,7 +23,11 @@ import { FormattedMessage, FormattedRelative } from '@kbn/i18n-react'; import type { Agent, AgentPolicy } from '../../../../../types'; import { useAgentVersion } from '../../../../../hooks'; -import { ExperimentalFeaturesService, isAgentUpgradeable } from '../../../../../services'; +import { + ExperimentalFeaturesService, + isAgentUpgradeable, + getNotUpgradeableMessage, +} from '../../../../../services'; import { AgentPolicySummaryLine } from '../../../../../components'; import { AgentHealth } from '../../../components'; import { Tags } from '../../../components/tags'; @@ -186,6 +190,7 @@ export const AgentDetailsOverviewSection: React.FunctionComponent<{ agentUpgradeStartedAt={agent.upgrade_started_at} agentUpgradedAt={agent.upgraded_at} agentUpgradeDetails={agent.upgrade_details} + notUpgradeableMessage={getNotUpgradeableMessage(agent, latestAgentVersion)} /> diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.test.tsx index a5f3498fd0b59..1155176bf7915 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.test.tsx @@ -7,6 +7,7 @@ import { fireEvent, waitFor } from '@testing-library/react'; import React from 'react'; +import moment from 'moment'; import { createFleetTestRendererMock } from '../../../../../../mock'; @@ -176,6 +177,69 @@ describe('AgentUpgradeStatus', () => { await expectTooltip(results, 'Downloading the new agent artifact version (16.4%).'); }); + it('should render UPG_DOWNLOADING with a warning if agent has a retry_message and retry_until', async () => { + const results = render({ + agentUpgradeDetails: { + target_version: 'XXX', + action_id: 'xxx', + state: 'UPG_DOWNLOADING', + metadata: { + download_percent: 16.4, + retry_error_msg: 'unable to download', + retry_until: `${moment().add(10, 'minutes').toISOString()}`, + }, + }, + }); + + expectUpgradeStatusBadgeLabel(results, 'Upgrade downloading'); + fireEvent.mouseOver(results.getByText('Info')); + await waitFor(() => { + const tooltip = results.getByRole('tooltip'); + expect(tooltip).toHaveTextContent('Upgrade failing: unable to download. Retrying until:'); + expect(tooltip).toHaveTextContent('(00:09 remaining)'); + }); + }); + + it('should not render retry_until if the remaining time is negative', async () => { + const results = render({ + agentUpgradeDetails: { + target_version: 'XXX', + action_id: 'xxx', + state: 'UPG_DOWNLOADING', + metadata: { + download_percent: 16.4, + retry_error_msg: 'unable to download', + retry_until: `${moment().subtract(10, 'minutes').toISOString()}`, + }, + }, + }); + + expectUpgradeStatusBadgeLabel(results, 'Upgrade downloading'); + fireEvent.mouseOver(results.getByText('Info')); + await waitFor(() => { + const tooltip = results.getByRole('tooltip'); + expect(tooltip).toHaveTextContent('Upgrade failing: unable to download.'); + expect(tooltip).not.toHaveTextContent('remaining'); + }); + }); + + it('should render UPG_DOWNLOADING with a warning if agent has a retry_message', async () => { + const results = render({ + agentUpgradeDetails: { + target_version: 'XXX', + action_id: 'xxx', + state: 'UPG_DOWNLOADING', + metadata: { + download_percent: 16.4, + retry_error_msg: 'unable to download', + }, + }, + }); + + expectUpgradeStatusBadgeLabel(results, 'Upgrade downloading'); + await expectTooltip(results, 'Upgrade failing: unable to download.'); + }); + it('should render UPG_EXTRACTING state correctly', async () => { const results = render({ agentUpgradeDetails: { diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.tsx index e5cf2eb7913c6..cf3ad42292533 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.tsx @@ -8,6 +8,7 @@ import React, { useMemo } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; import { EuiBadge, EuiFlexGroup, EuiFlexItem, EuiIconTip } from '@elastic/eui'; +import moment from 'moment'; import type { AgentUpgradeDetails } from '../../../../../../../common/types'; @@ -62,6 +63,16 @@ const formatRate = (downloadRate: number) => { } return downloadRate.toFixed(1) + byteUnits[i]; }; +const formatRetryUntil = (retryUntil: string | undefined) => { + if (!retryUntil) return ''; + const eta = new Date(retryUntil).toISOString(); + const remainingTime = Date.parse(retryUntil) - Date.now(); + const duration = moment + .utc(moment.duration(remainingTime, 'milliseconds').asMilliseconds()) + .format('HH:mm'); + + return remainingTime > 0 ? `Retrying until: ${eta} (${duration} remaining)` : ''; +}; function getStatusComponents(agentUpgradeDetails?: AgentUpgradeDetails) { switch (agentUpgradeDetails?.state) { @@ -103,6 +114,28 @@ function getStatusComponents(agentUpgradeDetails?: AgentUpgradeDetails) { ), }; case 'UPG_DOWNLOADING': + if (agentUpgradeDetails?.metadata?.retry_error_msg) { + return { + Badge: ( + + + + ), + WarningTooltipText: ( + + ), + }; + } return { Badge: ( @@ -252,24 +285,6 @@ export const AgentUpgradeStatus: React.FC<{ const status = useMemo(() => getStatusComponents(agentUpgradeDetails), [agentUpgradeDetails]); const minVersion = '8.12'; - if (!isAgentUpgradable && notUpgradeableMessage) { - return ( - - } - color="subdued" - /> - ); - } - if (isAgentUpgradable) { return ( @@ -285,9 +300,16 @@ export const AgentUpgradeStatus: React.FC<{ return ( {status.Badge} - - - + {status.TooltipText && ( + + + + )} + {status.WarningTooltipText && ( + + + + )} ); } @@ -310,5 +332,23 @@ export const AgentUpgradeStatus: React.FC<{ ); } + if (!isAgentUpgradable && notUpgradeableMessage) { + return ( + + } + color="subdued" + /> + ); + } + return null; }; diff --git a/x-pack/plugins/fleet/public/services/index.ts b/x-pack/plugins/fleet/public/services/index.ts index 71f5fde90d93a..7b9d5093ed740 100644 --- a/x-pack/plugins/fleet/public/services/index.ts +++ b/x-pack/plugins/fleet/public/services/index.ts @@ -34,6 +34,7 @@ export { isValidNamespace, LicenseService, isAgentUpgradeable, + getNotUpgradeableMessage, doesPackageHaveIntegrations, validatePackagePolicy, validatePackagePolicyConfig, From da0370eafb49f15fe655d0e2b8d254e09c9f814a Mon Sep 17 00:00:00 2001 From: Jatin Kathuria Date: Tue, 2 Jan 2024 17:53:12 +0100 Subject: [PATCH 047/323] [Security Solution] Adds feature flag to enable/disable ESQL in timeline (#174029) ## Summary This PR introduces a feature flag `timelineEsqlTabDisabled` which is by default `false`. This gives customer ability to disable the esql tab by enabling this experimental feature flag as below in `kibana.yml` ```yaml xpack.securitySolution.enableExperimental: - timelineEsqlTabDisabled ``` The availability of ESQL Tab in timeline also affects `AI Assistant` as it facilities re-directing user to timeline with an esql query. That `redirect` button should not be available for `esql` query if ESQL Tab is disabled. ## Desk Testing 1. ESQL Tab Presence - timelineEsqlTabDisabled : true - If Tab is disabled, `ESQL` Tab should not show when timeline is open. Timeline should also not fire any `bsearch` requests with `esql` strategy. - ESQL tab is enabled i.e. `timelineEsqlTabDisabled : true` is present in kibana.dev.yml - User should be able to use ESQL queries without any issue. Below should be the default query in both `8.12` and `8.11.4` ```esql from .alerts-security.alerts-default,apm-*-transaction*,auditbeat-*,endgame-*,filebeat-*,logs-*,packetbeat-*,traces-apm*,winlogbeat-*,-*elastic-cloud-logs-* | limit 10 | keep @timestamp, message, event.category, event.action, host.name, source.ip, destination.ip, user.name ``` 2. Open ESQL Tab from URL 1. Enable ESQL tab and Activate it when in timeline 2. Now change `kibana.dev.yml` to add experimental flag `timelineEsqlTabDisabled` to disable ESQL Tab. 3. Restart kibana server 4. Refresh the page in step 1 where `ESQL` tab was active 5. User should automatically be redirected to `Query` tab. 3. AI Assistant Today AI Assistant can help user add an ESQL query to the timeline as shown in below video. We need to make sure that `Send to timeline` button is not available only for `esql` queries when above experimental flag is enabled. https://github.com/elastic/kibana/assets/7485038/e452a6c6-cf97-462e-a5dc-bd8c0fd38d58 --------- Co-authored-by: Gloria Hornero Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../security_solution/common/experimental_features.ts | 5 +++++ .../public/assistant/send_to_timeline/index.tsx | 10 ++++++++++ .../hooks/timeline/use_init_timeline_url_param.ts | 11 +++++++++-- .../components/timeline/tabs_content/index.tsx | 4 +++- 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/security_solution/common/experimental_features.ts b/x-pack/plugins/security_solution/common/experimental_features.ts index 805192aed8a9f..2b34532e4e848 100644 --- a/x-pack/plugins/security_solution/common/experimental_features.ts +++ b/x-pack/plugins/security_solution/common/experimental_features.ts @@ -158,6 +158,11 @@ export const allowedExperimentalValues = Object.freeze({ * version and the latest available version. */ jsonPrebuiltRulesDiffingEnabled: true, + /* + * Disables discover esql tab within timeline + * + */ + timelineEsqlTabDisabled: false, }); type ExperimentalConfigKeys = Array; diff --git a/x-pack/plugins/security_solution/public/assistant/send_to_timeline/index.tsx b/x-pack/plugins/security_solution/public/assistant/send_to_timeline/index.tsx index fe2c23b8f60b1..94ff2b7b39e85 100644 --- a/x-pack/plugins/security_solution/public/assistant/send_to_timeline/index.tsx +++ b/x-pack/plugins/security_solution/public/assistant/send_to_timeline/index.tsx @@ -36,6 +36,7 @@ import { } from '../../timelines/store/actions'; import { useDiscoverInTimelineContext } from '../../common/components/discover_in_timeline/use_discover_in_timeline_context'; import { useShowTimeline } from '../../common/utils/timeline/use_show_timeline'; +import { useIsExperimentalFeatureEnabled } from '../../common/hooks/use_experimental_features'; export interface SendToTimelineButtonProps { asEmptyButton: boolean; @@ -60,6 +61,8 @@ export const SendToTimelineButton: React.FunctionComponent sourcererSelectors.getSourcererDataViewsSelector(), [] @@ -226,6 +229,13 @@ export const SendToTimelineButton: React.FunctionComponent { const dispatch = useDispatch(); + const isEsqlTabDisabled = useIsExperimentalFeatureEnabled('timelineEsqlTabDisabled'); + const onInitialize = useCallback( (initialState: TimelineUrl | null) => { if (initialState != null) { queryTimelineById({ - activeTimelineTab: initialState.activeTab, + activeTimelineTab: + initialState.activeTab === TimelineTabs.esql && isEsqlTabDisabled + ? TimelineTabs.query + : initialState.activeTab, duplicate: false, graphEventId: initialState.graphEventId, timelineId: initialState.id, @@ -38,7 +45,7 @@ export const useInitTimelineFromUrlParam = () => { }); } }, - [dispatch] + [dispatch, isEsqlTabDisabled] ); useEffect(() => { diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs_content/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs_content/index.tsx index cc4d28f30554b..d22dcc5eb1167 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs_content/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs_content/index.tsx @@ -15,6 +15,7 @@ import { useDispatch } from 'react-redux'; import styled from 'styled-components'; import { FormattedMessage } from '@kbn/i18n-react'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; import { useKibana } from '../../../../common/lib/kibana'; import { useAssistantTelemetry } from '../../../../assistant/use_assistant_telemetry'; import { useConversationStore } from '../../../../assistant/use_conversation_store'; @@ -290,6 +291,7 @@ const TabsContentComponent: React.FC = ({ sessionViewConfig, timelineDescription, }) => { + const isEsqlTabInTimelineDisabled = useIsExperimentalFeatureEnabled('timelineEsqlTabDisabled'); const isEsqlSettingEnabled = useKibana().services.configSettings.ESQLEnabled; const { hasAssistantPrivilege } = useAssistantAvailability(); const dispatch = useDispatch(); @@ -404,7 +406,7 @@ const TabsContentComponent: React.FC = ({ {i18n.QUERY_TAB} {showTimeline && } - {isEsqlSettingEnabled && ( + {!isEsqlTabInTimelineDisabled && isEsqlSettingEnabled && ( Date: Tue, 2 Jan 2024 18:08:28 +0100 Subject: [PATCH 048/323] [Kibana utils] Remove `setVersion()` util (#174064) ## Summary Removes unused `setVersion()` utility. --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- src/plugins/kibana_utils/public/index.ts | 5 +- src/plugins/kibana_utils/public/mocks.ts | 4 +- src/plugins/kibana_utils/public/plugin.ts | 22 +------ .../kibana_utils/public/set_version.test.ts | 59 ------------------- .../kibana_utils/public/set_version.ts | 21 ------- 5 files changed, 6 insertions(+), 105 deletions(-) delete mode 100644 src/plugins/kibana_utils/public/set_version.test.ts delete mode 100644 src/plugins/kibana_utils/public/set_version.ts diff --git a/src/plugins/kibana_utils/public/index.ts b/src/plugins/kibana_utils/public/index.ts index 9a717953d60f8..4bf4939714975 100644 --- a/src/plugins/kibana_utils/public/index.ts +++ b/src/plugins/kibana_utils/public/index.ts @@ -6,7 +6,6 @@ * Side Public License, v 1. */ -import { PluginInitializerContext } from '@kbn/core/public'; import { KibanaUtilsPublicPlugin } from './plugin'; export type { Get, Set } from '../common'; @@ -114,6 +113,6 @@ export { applyDiff } from './state_management/utils/diff_object'; export type { KibanaUtilsPublicSetup as KibanaUtilsSetup, KibanaUtilsPublicStart } from './plugin'; -export function plugin(initializerContext: PluginInitializerContext) { - return new KibanaUtilsPublicPlugin(initializerContext); +export function plugin() { + return new KibanaUtilsPublicPlugin(); } diff --git a/src/plugins/kibana_utils/public/mocks.ts b/src/plugins/kibana_utils/public/mocks.ts index cb872838af4b4..e30587d71772a 100644 --- a/src/plugins/kibana_utils/public/mocks.ts +++ b/src/plugins/kibana_utils/public/mocks.ts @@ -12,9 +12,7 @@ export type Setup = jest.Mocked; export type Start = jest.Mocked; const createSetupContract = (): Setup => { - return { - setVersion: jest.fn(), - }; + return undefined; }; const createStartContract = (): Start => { diff --git a/src/plugins/kibana_utils/public/plugin.ts b/src/plugins/kibana_utils/public/plugin.ts index 05d8ede256498..f9c1e37928ba5 100644 --- a/src/plugins/kibana_utils/public/plugin.ts +++ b/src/plugins/kibana_utils/public/plugin.ts @@ -6,13 +6,9 @@ * Side Public License, v 1. */ -import { PluginInitializerContext, CoreSetup, CoreStart, Plugin } from '@kbn/core/public'; -import { History } from 'history'; -import { setVersion } from './set_version'; +import { CoreSetup, CoreStart, Plugin } from '@kbn/core/public'; -export interface KibanaUtilsPublicSetup { - setVersion: (history: Pick) => void; -} +export type KibanaUtilsPublicSetup = undefined; export type KibanaUtilsPublicStart = undefined; @@ -31,16 +27,8 @@ export class KibanaUtilsPublicPlugin KibanaUtilsPublicStartDependencies > { - private readonly version: string; - - constructor(initializerContext: PluginInitializerContext) { - this.version = initializerContext.env.packageInfo.version; - } - public setup(_core: CoreSetup): KibanaUtilsPublicSetup { - return { - setVersion: this.setVersion, - }; + return undefined; } public start(_core: CoreStart): KibanaUtilsPublicStart { @@ -48,8 +36,4 @@ export class KibanaUtilsPublicPlugin } public stop() {} - - private setVersion = (history: Pick) => { - setVersion(history, this.version); - }; } diff --git a/src/plugins/kibana_utils/public/set_version.test.ts b/src/plugins/kibana_utils/public/set_version.test.ts deleted file mode 100644 index eb70d889d0f03..0000000000000 --- a/src/plugins/kibana_utils/public/set_version.test.ts +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { History } from 'history'; -import { setVersion } from './set_version'; - -describe('setVersion', () => { - test('sets version, if one is not set', () => { - const history: Pick = { - location: { - hash: '', - search: '', - pathname: '/', - state: {}, - }, - replace: jest.fn(), - }; - setVersion(history, '1.2.3'); - - expect(history.replace).toHaveBeenCalledTimes(1); - expect(history.replace).toHaveBeenCalledWith('/?_v=1.2.3'); - }); - - test('overwrites, if version already set to a different value', () => { - const history: Pick = { - location: { - hash: '/view/dashboards', - search: 'a=b&_v=7.16.6', - pathname: '/foo/bar', - state: {}, - }, - replace: jest.fn(), - }; - setVersion(history, '8.0.0'); - - expect(history.replace).toHaveBeenCalledTimes(1); - expect(history.replace).toHaveBeenCalledWith('/foo/bar?a=b&_v=8.0.0#/view/dashboards'); - }); - - test('does nothing, if version already set to correct value', () => { - const history: Pick = { - location: { - hash: '/view/dashboards', - search: 'a=b&_v=8.0.0', - pathname: '/foo/bar', - state: {}, - }, - replace: jest.fn(), - }; - setVersion(history, '8.0.0'); - - expect(history.replace).toHaveBeenCalledTimes(0); - }); -}); diff --git a/src/plugins/kibana_utils/public/set_version.ts b/src/plugins/kibana_utils/public/set_version.ts deleted file mode 100644 index b3acb39ed5134..0000000000000 --- a/src/plugins/kibana_utils/public/set_version.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 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 { History } from 'history'; - -export const setVersion = (history: Pick, version: string) => { - const search = new URLSearchParams(history.location.search); - if (search.get('_v') === version) return; - search.set('_v', version); - const path = - history.location.pathname + - '?' + - search.toString() + - (history.location.hash ? '#' + history.location.hash : ''); - history.replace(path); -}; From 23679638f993029382c4d0a2d03b0bbd5c5bac47 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Tue, 2 Jan 2024 18:49:55 +0100 Subject: [PATCH 049/323] [Fleet] Stop caching package archive in memory (#173965) --- .../plugins/fleet/common/types/models/epm.ts | 8 + .../server/routes/epm/file_handler.test.ts | 14 +- .../fleet/server/routes/epm/file_handler.ts | 29 +- .../server/services/epm/archive/cache.ts | 41 --- .../server/services/epm/archive/index.ts | 41 +-- .../server/services/epm/archive/storage.ts | 21 +- .../elasticsearch/datastream_ilm/install.ts | 19 +- .../services/epm/elasticsearch/ilm/install.ts | 15 +- .../ingest_pipeline/install.test.ts | 39 +-- .../elasticsearch/ingest_pipeline/install.ts | 38 +-- .../epm/elasticsearch/ml_model/common.ts | 8 - .../epm/elasticsearch/ml_model/install.ts | 22 +- .../elasticsearch/template/install.test.ts | 94 ++----- .../epm/elasticsearch/template/install.ts | 44 +-- .../epm/elasticsearch/transform/common.ts | 2 - .../epm/elasticsearch/transform/install.ts | 62 +++-- .../transform/legacy_transforms.test.ts | 260 ++++++++++-------- .../transform/transforms.test.ts | 234 ++++++++++------ .../fleet/server/services/epm/fields/field.ts | 13 +- .../services/epm/kibana/assets/install.ts | 29 +- .../services/epm/package_service.test.ts | 20 +- .../server/services/epm/package_service.ts | 29 +- .../epm/packages/_install_package.test.ts | 130 +++++---- .../services/epm/packages/_install_package.ts | 35 ++- .../services/epm/packages/assets.test.ts | 61 ++-- .../server/services/epm/packages/assets.ts | 25 +- .../custom_integrations/assets/cache.ts | 24 -- .../server/services/epm/packages/get.test.ts | 53 +++- .../fleet/server/services/epm/packages/get.ts | 99 +++++-- .../epm/packages/get_template_inputs.ts | 12 +- .../services/epm/packages/install.test.ts | 15 +- .../server/services/epm/packages/install.ts | 140 ++++++---- .../server/services/epm/registry/index.ts | 36 ++- .../experimental_datastream_features.test.ts | 42 ++- .../experimental_datastream_features.ts | 31 ++- .../server/services/package_policy.test.ts | 137 +++++---- .../fleet/server/services/package_policy.ts | 158 +++++++++-- x-pack/plugins/fleet/server/types/index.tsx | 1 + 38 files changed, 1201 insertions(+), 880 deletions(-) delete mode 100644 x-pack/plugins/fleet/server/services/epm/elasticsearch/ml_model/common.ts delete mode 100644 x-pack/plugins/fleet/server/services/epm/packages/custom_integrations/assets/cache.ts diff --git a/x-pack/plugins/fleet/common/types/models/epm.ts b/x-pack/plugins/fleet/common/types/models/epm.ts index 1a7c4cefca34d..b1bea249ee9de 100644 --- a/x-pack/plugins/fleet/common/types/models/epm.ts +++ b/x-pack/plugins/fleet/common/types/models/epm.ts @@ -125,6 +125,14 @@ export type DataType = typeof dataTypes; export type MonitoringType = typeof monitoringTypes; export type InstallablePackage = RegistryPackage | ArchivePackage; +export type AssetsMap = Map; + +export interface PackageInstallContext { + packageInfo: InstallablePackage; + assetsMap: AssetsMap; + paths: string[]; +} + export type ArchivePackage = PackageSpecManifest & // should an uploaded package be able to specify `internal`? Pick; diff --git a/x-pack/plugins/fleet/server/routes/epm/file_handler.test.ts b/x-pack/plugins/fleet/server/routes/epm/file_handler.test.ts index 56d6d8c127bc2..1eb8387f69751 100644 --- a/x-pack/plugins/fleet/server/routes/epm/file_handler.test.ts +++ b/x-pack/plugins/fleet/server/routes/epm/file_handler.test.ts @@ -15,7 +15,7 @@ import { getBundledPackageByPkgKey } from '../../services/epm/packages/bundled_p import { getFile, getInstallation } from '../../services/epm/packages/get'; import type { FleetRequestHandlerContext } from '../..'; import { appContextService } from '../../services'; -import { unpackBufferEntries, getArchiveEntry } from '../../services/epm/archive'; +import { unpackBufferEntries } from '../../services/epm/archive'; import { getAsset } from '../../services/epm/archive/storage'; import { getFileHandler } from './file_handler'; @@ -29,7 +29,6 @@ jest.mock('../../services/epm/packages/get'); const mockedGetBundledPackageByPkgKey = jest.mocked(getBundledPackageByPkgKey); const mockedGetInstallation = jest.mocked(getInstallation); const mockedGetFile = jest.mocked(getFile); -const mockedGetArchiveEntry = jest.mocked(getArchiveEntry); const mockedUnpackBufferEntries = jest.mocked(unpackBufferEntries); const mockedGetAsset = jest.mocked(getAsset); @@ -61,7 +60,6 @@ describe('getFileHandler', () => { mockedUnpackBufferEntries.mockReset(); mockedGetFile.mockReset(); mockedGetInstallation.mockReset(); - mockedGetArchiveEntry.mockReset(); mockedGetAsset.mockReset(); }); @@ -207,7 +205,15 @@ describe('getFileHandler', () => { const context = mockContext(); mockedGetInstallation.mockResolvedValue({ version: '1.0.0' } as any); - mockedGetArchiveEntry.mockReturnValue(Buffer.from('test')); + mockedGetAsset.mockResolvedValue({ + asset_path: '/test/1.0.0/README.md', + data_utf8: 'test', + data_base64: '', + media_type: 'text/markdown; charset=utf-8', + package_name: 'test', + package_version: '1.0.0', + install_source: 'registry', + }); await getFileHandler(context, request, response); diff --git a/x-pack/plugins/fleet/server/routes/epm/file_handler.ts b/x-pack/plugins/fleet/server/routes/epm/file_handler.ts index 4b6b74628aa4e..0f22a31c1aa72 100644 --- a/x-pack/plugins/fleet/server/routes/epm/file_handler.ts +++ b/x-pack/plugins/fleet/server/routes/epm/file_handler.ts @@ -14,7 +14,6 @@ import type { ResponseHeaders, KnownHeaders, HttpResponseOptions } from '@kbn/co import type { GetFileRequestSchema, FleetRequestHandler } from '../../types'; import { getFile, getInstallation } from '../../services/epm/packages'; import { defaultFleetErrorHandler } from '../../errors'; -import { getArchiveEntry } from '../../services/epm/archive'; import { getAsset } from '../../services/epm/archive/storage'; import { getBundledPackageByPkgKey } from '../../services/epm/packages/bundled_packages'; import { pkgToPkgKey } from '../../services/epm/registry'; @@ -31,35 +30,23 @@ export const getFileHandler: FleetRequestHandler< const savedObjectsClient = (await context.fleet).internalSoClient; const installation = await getInstallation({ savedObjectsClient, pkgName }); - const useLocalFile = pkgVersion === installation?.version; + const isPackageInstalled = pkgVersion === installation?.version; const assetPath = `${pkgName}-${pkgVersion}/${filePath}`; - if (useLocalFile) { - const fileBuffer = getArchiveEntry(assetPath); - // only pull local installation if we don't have it cached - const storedAsset = !fileBuffer && (await getAsset({ savedObjectsClient, path: assetPath })); + if (isPackageInstalled) { + const storedAsset = await getAsset({ savedObjectsClient, path: assetPath }); - // error, if neither is available - if (!fileBuffer && !storedAsset) { + if (!storedAsset) { return response.custom({ body: `installed package file not found: ${filePath}`, statusCode: 404, }); } - // if storedAsset is not available, fileBuffer *must* be - // b/c we error if we don't have at least one, and storedAsset is the least likely - const { buffer, contentType } = storedAsset - ? { - contentType: storedAsset.media_type, - buffer: storedAsset.data_utf8 - ? Buffer.from(storedAsset.data_utf8, 'utf8') - : Buffer.from(storedAsset.data_base64, 'base64'), - } - : { - contentType: mime.contentType(path.extname(assetPath)), - buffer: fileBuffer, - }; + const contentType = storedAsset.media_type; + const buffer = storedAsset.data_utf8 + ? Buffer.from(storedAsset.data_utf8, 'utf8') + : Buffer.from(storedAsset.data_base64, 'base64'); if (!contentType) { return response.custom({ diff --git a/x-pack/plugins/fleet/server/services/epm/archive/cache.ts b/x-pack/plugins/fleet/server/services/epm/archive/cache.ts index db0b0d709e683..15f38ccc8a68b 100644 --- a/x-pack/plugins/fleet/server/services/epm/archive/cache.ts +++ b/x-pack/plugins/fleet/server/services/epm/archive/cache.ts @@ -8,19 +8,10 @@ import type { ArchivePackage, RegistryPackage, PackageVerificationResult } from '../../../types'; import { appContextService } from '../..'; -import type { ArchiveEntry } from '.'; - type SharedKeyString = string; const sharedKey = ({ name, version }: SharedKey): SharedKeyString => `${name}-${version}`; -const archiveEntryCache: Map = new Map(); -export const getArchiveEntry = (key: string) => archiveEntryCache.get(key); -export const setArchiveEntry = (key: string, value: Buffer) => archiveEntryCache.set(key, value); -export const hasArchiveEntry = (key: string) => archiveEntryCache.has(key); -export const clearArchiveEntries = () => archiveEntryCache.clear(); -export const deleteArchiveEntry = (key: string) => archiveEntryCache.delete(key); - const verificationResultCache: Map = new Map(); export const getVerificationResult = (key: SharedKey) => verificationResultCache.get(sharedKey(key)); @@ -37,36 +28,12 @@ export interface SharedKey { version: string; } -const archiveFilelistCache: Map = new Map(); -export const getArchiveFilelist = (keyArgs: SharedKey) => - archiveFilelistCache.get(sharedKey(keyArgs)); - -export const setArchiveFilelist = (keyArgs: SharedKey, paths: string[]) => { - const logger = appContextService.getLogger(); - logger.debug(`Setting file list to the cache for ${keyArgs.name}-${keyArgs.version}`); - logger.trace(JSON.stringify(paths)); - return archiveFilelistCache.set(sharedKey(keyArgs), paths); -}; - -export const deleteArchiveFilelist = (keyArgs: SharedKey) => - archiveFilelistCache.delete(sharedKey(keyArgs)); - const packageInfoCache: Map = new Map(); export const getPackageInfo = (args: SharedKey) => { return packageInfoCache.get(sharedKey(args)); }; -export const getArchivePackage = (args: SharedKey) => { - const packageInfo = getPackageInfo(args); - const paths = getArchiveFilelist(args); - if (!paths || !packageInfo) return undefined; - return { - paths, - packageInfo, - }; -}; - /* * This cache should only be used to store "full" package info generated from the package archive. * NOT package info from the EPR API. This is because we parse extra fields from the archive @@ -85,11 +52,3 @@ export const setPackageInfo = ({ }; export const deletePackageInfo = (args: SharedKey) => packageInfoCache.delete(sharedKey(args)); - -export const clearPackageFileCache = (args: SharedKey) => { - const fileList = getArchiveFilelist(args) ?? []; - fileList.forEach((filePath) => { - deleteArchiveEntry(filePath); - }); - deleteArchiveFilelist(args); -}; diff --git a/x-pack/plugins/fleet/server/services/epm/archive/index.ts b/x-pack/plugins/fleet/server/services/epm/archive/index.ts index ec19fbba55a19..5943f8f838fcb 100644 --- a/x-pack/plugins/fleet/server/services/epm/archive/index.ts +++ b/x-pack/plugins/fleet/server/services/epm/archive/index.ts @@ -5,23 +5,14 @@ * 2.0. */ -import type { AssetParts } from '../../../../common/types'; +import type { AssetParts, AssetsMap } from '../../../../common/types'; import { PackageInvalidArchiveError, PackageUnsupportedMediaTypeError, PackageNotFoundError, } from '../../../errors'; -import { - getArchiveEntry, - setArchiveEntry, - deleteArchiveEntry, - getArchiveFilelist, - setArchiveFilelist, - deleteArchiveFilelist, - deletePackageInfo, - clearPackageFileCache, -} from './cache'; +import { deletePackageInfo } from './cache'; import type { SharedKey } from './cache'; import { getBufferExtractor } from './extract'; @@ -34,7 +25,7 @@ export interface ArchiveEntry { buffer?: Buffer; } -export async function unpackBufferToCache({ +export async function unpackBufferToAssetsMap({ name, version, contentType, @@ -44,22 +35,20 @@ export async function unpackBufferToCache({ version: string; contentType: string; archiveBuffer: Buffer; -}): Promise { +}): Promise<{ paths: string[]; assetsMap: AssetsMap }> { + const assetsMap = new Map(); + const paths: string[] = []; const entries = await unpackBufferEntries(archiveBuffer, contentType); - // Make sure any buffers from previous installations from registry or upload are deleted first - clearPackageFileCache({ name, version }); - const paths: string[] = []; entries.forEach((entry) => { const { path, buffer } = entry; if (buffer) { - setArchiveEntry(path, buffer); + assetsMap.set(path, buffer); paths.push(path); } }); - setArchiveFilelist({ name, version }, paths); - return paths; + return { assetsMap, paths }; } export async function unpackBufferEntries( @@ -94,16 +83,6 @@ export async function unpackBufferEntries( } export const deletePackageCache = ({ name, version }: SharedKey) => { - // get cached archive filelist - const paths = getArchiveFilelist({ name, version }); - - // delete cached archive filelist - deleteArchiveFilelist({ name, version }); - - // delete cached archive files - // this has been populated in unpackBufferToCache() - paths?.forEach(deleteArchiveEntry); - deletePackageInfo({ name, version }); }; @@ -151,8 +130,8 @@ export function getPathParts(path: string): AssetParts { } as AssetParts; } -export function getAsset(key: string) { - const buffer = getArchiveEntry(key); +export function getAssetFromAssetsMap(assetsMap: AssetsMap, key: string) { + const buffer = assetsMap.get(key); if (buffer === undefined) throw new PackageNotFoundError(`Cannot find asset ${key}`); return buffer; diff --git a/x-pack/plugins/fleet/server/services/epm/archive/storage.ts b/x-pack/plugins/fleet/server/services/epm/archive/storage.ts index 81d55c5fd3138..dd6321445df75 100644 --- a/x-pack/plugins/fleet/server/services/epm/archive/storage.ts +++ b/x-pack/plugins/fleet/server/services/epm/archive/storage.ts @@ -23,7 +23,7 @@ import { PackageInvalidArchiveError, PackageNotFoundError } from '../../../error import { appContextService } from '../../app_context'; -import { getArchiveEntry, setArchiveEntry, setArchiveFilelist, setPackageInfo } from '.'; +import { setPackageInfo } from '.'; import type { ArchiveEntry } from '.'; import { filterAssetPathForParseAndVerifyArchive, parseAndVerifyArchive } from './parse'; @@ -104,16 +104,17 @@ export async function removeArchiveEntries(opts: { ); } -export async function saveArchiveEntries(opts: { +export async function saveArchiveEntriesFromAssetsMap(opts: { savedObjectsClient: SavedObjectsClientContract; paths: string[]; + assetsMap: Map; packageInfo: InstallablePackage; installSource: InstallSource; }) { - const { savedObjectsClient, paths, packageInfo, installSource } = opts; + const { savedObjectsClient, paths, packageInfo, assetsMap, installSource } = opts; const bulkBody = await Promise.all( paths.map((path) => { - const buffer = getArchiveEntry(path); + const buffer = assetsMap.get(path); if (!buffer) throw new PackageNotFoundError(`Could not find ArchiveEntry at ${path}`); const { name, version } = packageInfo; return archiveEntryToBulkCreateObject({ path, buffer, name, version, installSource }); @@ -208,26 +209,26 @@ export const getEsPackage = async ( return undefined; } - const assetsMap: Record = {}; + const parseAndVerifyAssetsMap: Record = {}; + const assetsMap = new Map(); const entries: ArchiveEntry[] = assets.map(packageAssetToArchiveEntry); const paths: string[] = []; entries.forEach(({ path, buffer }) => { if (path && buffer) { - setArchiveEntry(path, buffer); + assetsMap.set(path, buffer); paths.push(path); } if (buffer && filterAssetPathForParseAndVerifyArchive(path)) { - assetsMap[path] = buffer; + parseAndVerifyAssetsMap[path] = buffer; } }); - // Add asset references to cache - setArchiveFilelist({ name: pkgName, version: pkgVersion }, paths); - const packageInfo = parseAndVerifyArchive(paths, assetsMap); + const packageInfo = parseAndVerifyArchive(paths, parseAndVerifyAssetsMap); setPackageInfo({ name: pkgName, version: pkgVersion, packageInfo }); return { packageInfo, paths, + assetsMap, }; }; diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/datastream_ilm/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/datastream_ilm/install.ts index c6be2dfedb1df..78db39b48cfd6 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/datastream_ilm/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/datastream_ilm/install.ts @@ -7,14 +7,13 @@ import type { ElasticsearchClient, Logger, SavedObjectsClientContract } from '@kbn/core/server'; -import { ElasticsearchAssetType } from '../../../../../common/types/models'; -import type { - EsAssetReference, - InstallablePackage, - RegistryDataStream, +import { + ElasticsearchAssetType, + type PackageInstallContext, } from '../../../../../common/types/models'; +import type { EsAssetReference, RegistryDataStream } from '../../../../../common/types/models'; import { updateEsAssetReferences } from '../../packages/install'; -import { getAsset } from '../transform/common'; +import { getAssetFromAssetsMap } from '../../archive'; import { getESAssetMetadata } from '../meta'; import { retryTransientEsErrors } from '../retry'; @@ -32,13 +31,13 @@ interface IlmPathDataset { } export const installIlmForDataStream = async ( - registryPackage: InstallablePackage, - paths: string[], + packageInstallContext: PackageInstallContext, esClient: ElasticsearchClient, savedObjectsClient: SavedObjectsClientContract, logger: Logger, esReferences: EsAssetReference[] ) => { + const { packageInfo: registryPackage, paths, assetsMap } = packageInstallContext; const previousInstalledIlmEsAssets = esReferences.filter( ({ type }) => type === ElasticsearchAssetType.dataStreamIlmPolicy ); @@ -100,7 +99,9 @@ export const installIlmForDataStream = async ( const ilmInstallations: IlmInstallation[] = ilmPathDatasets.map( (ilmPathDataset: IlmPathDataset) => { - const content = JSON.parse(getAsset(ilmPathDataset.path).toString('utf-8')); + const content = JSON.parse( + getAssetFromAssetsMap(assetsMap, ilmPathDataset.path).toString('utf-8') + ); content.policy._meta = getESAssetMetadata({ packageName: registryPackage.name }); return { diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ilm/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ilm/install.ts index 61a75d28b7999..08feb1e95585a 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ilm/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ilm/install.ts @@ -7,28 +7,31 @@ import type { ElasticsearchClient, Logger, SavedObjectsClientContract } from '@kbn/core/server'; -import type { EsAssetReference, InstallablePackage } from '../../../../types'; +import type { EsAssetReference } from '../../../../types'; import { ElasticsearchAssetType } from '../../../../types'; -import { getAsset, getPathParts } from '../../archive'; +import { getAssetFromAssetsMap, getPathParts } from '../../archive'; import { updateEsAssetReferences } from '../../packages/install'; import { getESAssetMetadata } from '../meta'; import { retryTransientEsErrors } from '../retry'; import { PackageInvalidArchiveError } from '../../../../errors'; +import type { PackageInstallContext } from '../../../../../common/types'; export async function installILMPolicy( - packageInfo: InstallablePackage, - paths: string[], + packageInstallContext: PackageInstallContext, esClient: ElasticsearchClient, savedObjectsClient: SavedObjectsClientContract, logger: Logger, esReferences: EsAssetReference[] ): Promise { - const ilmPaths = paths.filter((path) => isILMPolicy(path)); + const { packageInfo } = packageInstallContext; + const ilmPaths = packageInstallContext.paths.filter((path) => isILMPolicy(path)); if (!ilmPaths.length) return esReferences; const ilmPolicies = ilmPaths.map((path) => { - const body = JSON.parse(getAsset(path).toString('utf-8')); + const body = JSON.parse( + getAssetFromAssetsMap(packageInstallContext.assetsMap, path).toString('utf-8') + ); body.policy._meta = getESAssetMetadata({ packageName: packageInfo.name }); diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.test.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.test.ts index 7ea61bde7a0e8..fb12d58878d1d 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.test.ts @@ -7,19 +7,15 @@ import { elasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; import { loggerMock } from '@kbn/logging-mocks'; -import { getArchiveEntry } from '../../archive/cache'; - import { prepareToInstallPipelines } from './install'; jest.mock('../../archive/cache'); -const mockedGetArchiveEntry = getArchiveEntry as jest.MockedFunction; - describe('Install pipeline tests', () => { describe('prepareToInstallPipelines', () => { it('should work with datastream without ingest pipeline define in the package', async () => { - const res = prepareToInstallPipelines( - { + const res = prepareToInstallPipelines({ + packageInfo: { version: '1.0.0', data_streams: [ { @@ -29,9 +25,10 @@ describe('Install pipeline tests', () => { path: '/datasettest', }, ], - } as any, - [] - ); + }, + paths: [], + assetsMap: new Map(), + } as any); expect(res.assetsToAdd).toEqual([{ id: 'logs-datasettest-1.0.0', type: 'ingest_pipeline' }]); const esClient = elasticsearchClientMock.createInternalClient(); @@ -50,8 +47,8 @@ describe('Install pipeline tests', () => { }); it('should work with datastream with ingest pipelines define in the package', async () => { - const res = prepareToInstallPipelines( - { + const res = prepareToInstallPipelines({ + packageInfo: { version: '1.0.0', data_streams: [ { @@ -62,12 +59,22 @@ describe('Install pipeline tests', () => { ingest_pipeline: 'default', }, ], - } as any, - [ + }, + paths: [ 'packagetest-1.0.0/data_stream/datasettest/elasticsearch/ingest_pipeline/default.yml', 'packagetest-1.0.0/data_stream/datasettest/elasticsearch/ingest_pipeline/standard.yml', - ] - ); + ], + assetsMap: new Map([ + [ + 'packagetest-1.0.0/data_stream/datasettest/elasticsearch/ingest_pipeline/default.yml', + Buffer.from('description: test'), + ], + [ + 'packagetest-1.0.0/data_stream/datasettest/elasticsearch/ingest_pipeline/standard.yml', + Buffer.from('description: test'), + ], + ]), + } as any); expect(res.assetsToAdd).toEqual([ { id: 'logs-datasettest-1.0.0', type: 'ingest_pipeline' }, { id: 'logs-datasettest-1.0.0-standard', type: 'ingest_pipeline' }, @@ -76,8 +83,6 @@ describe('Install pipeline tests', () => { const esClient = elasticsearchClientMock.createInternalClient(); const logger = loggerMock.create(); - mockedGetArchiveEntry.mockReturnValue(Buffer.from(`description: test`)); - await res.install(esClient, logger); expect(esClient.ingest.putPipeline).toBeCalledTimes(2); diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.ts index e30bc5b32a771..a456734747324 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.ts @@ -15,7 +15,7 @@ import type { InstallablePackage, PackageInfo, } from '../../../../types'; -import { getAsset, getPathParts } from '../../archive'; +import { getAssetFromAssetsMap, getPathParts } from '../../archive'; import type { ArchiveEntry } from '../../archive'; import { FLEET_FINAL_PIPELINE_CONTENT, @@ -23,6 +23,7 @@ import { FLEET_FINAL_PIPELINE_VERSION, } from '../../../../constants'; import { getPipelineNameForDatastream } from '../../../../../common/services'; +import type { PackageInstallContext } from '../../../../../common/types'; import { appendMetadataToIngestPipeline } from '../meta'; import { retryTransientEsErrors } from '../retry'; @@ -36,18 +37,18 @@ import { import type { PipelineInstall, RewriteSubstitution } from './types'; export const prepareToInstallPipelines = ( - installablePackage: InstallablePackage | PackageInfo, - paths: string[], + packageInstallContext: PackageInstallContext, onlyForDataStreams?: RegistryDataStream[] ): { assetsToAdd: EsAssetReference[]; install: (esClient: ElasticsearchClient, logger: Logger) => Promise; } => { + const { packageInfo, paths } = packageInstallContext; // unlike other ES assets, pipeline names are versioned so after a template is updated // it can be created pointing to the new template, without removing the old one and effecting data // so do not remove the currently installed pipelines here - const dataStreams = onlyForDataStreams || installablePackage.data_streams; - const { version: pkgVersion } = installablePackage; + const dataStreams = onlyForDataStreams || packageInfo.data_streams; + const { version: pkgVersion } = packageInfo; const pipelinePaths = paths.filter((path) => isPipeline(path)); const topLevelPipelinePaths = paths.filter((path) => isTopLevelPipeline(path)); @@ -108,7 +109,7 @@ export const prepareToInstallPipelines = ( esClient, logger, paths: pipelinePaths, - installablePackage, + packageInstallContext, }) ); @@ -123,7 +124,7 @@ export const prepareToInstallPipelines = ( esClient, logger, paths: topLevelPipelinePaths, - installablePackage, + packageInstallContext, }) ); } @@ -138,13 +139,13 @@ export async function installAllPipelines({ logger, paths, dataStream, - installablePackage, + packageInstallContext, }: { esClient: ElasticsearchClient; logger: Logger; paths: string[]; dataStream?: RegistryDataStream; - installablePackage: InstallablePackage | PackageInfo; + packageInstallContext: PackageInstallContext; }): Promise { const pipelinePaths = dataStream ? paths.filter((path) => isDataStreamPipeline(path, dataStream.path)) @@ -164,9 +165,9 @@ export async function installAllPipelines({ const nameForInstallation = getPipelineNameForInstallation({ pipelineName: name, dataStream, - packageVersion: installablePackage.version, + packageVersion: packageInstallContext.packageInfo.version, }); - const content = getAsset(path).toString('utf-8'); + const content = getAssetFromAssetsMap(packageInstallContext.assetsMap, path).toString('utf-8'); pipelinesInfos.push({ nameForInstallation, shouldInstallCustomPipelines: dataStream && isMainPipeline, @@ -191,7 +192,7 @@ export async function installAllPipelines({ if (!datastreamPipelineCreated && dataStream) { const nameForInstallation = getPipelineNameForDatastream({ dataStream, - packageVersion: installablePackage.version, + packageVersion: packageInstallContext.packageInfo.version, }); pipelinesToInstall.push({ @@ -204,7 +205,12 @@ export async function installAllPipelines({ } const installationPromises = pipelinesToInstall.map(async (pipeline) => { - return installPipeline({ esClient, pipeline, installablePackage, logger }); + return installPipeline({ + esClient, + pipeline, + packageInfo: packageInstallContext.packageInfo, + logger, + }); }); return Promise.all(installationPromises); @@ -214,18 +220,18 @@ async function installPipeline({ esClient, logger, pipeline, - installablePackage, + packageInfo, shouldAddCustomPipelineProcessor = true, }: { esClient: ElasticsearchClient; logger: Logger; pipeline: PipelineInstall; - installablePackage?: InstallablePackage | PackageInfo; + packageInfo?: InstallablePackage | PackageInfo; shouldAddCustomPipelineProcessor?: boolean; }): Promise { let pipelineToInstall = appendMetadataToIngestPipeline({ pipeline, - packageName: installablePackage?.name, + packageName: packageInfo?.name, }); if (shouldAddCustomPipelineProcessor) { diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ml_model/common.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ml_model/common.ts deleted file mode 100644 index e08d973f8df0e..0000000000000 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ml_model/common.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export { getAsset } from '../../archive'; diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ml_model/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ml_model/install.ts index 630433e18ce39..d48a65dc593ef 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ml_model/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ml_model/install.ts @@ -8,33 +8,35 @@ import type { ElasticsearchClient, Logger, SavedObjectsClientContract } from '@kbn/core/server'; import { errors } from '@elastic/elasticsearch'; -import { getPathParts } from '../../archive'; -import { ElasticsearchAssetType } from '../../../../../common/types/models'; -import type { EsAssetReference, InstallablePackage } from '../../../../../common/types/models'; +import { getAssetFromAssetsMap, getPathParts } from '../../archive'; +import { + ElasticsearchAssetType, + type PackageInstallContext, +} from '../../../../../common/types/models'; +import type { EsAssetReference } from '../../../../../common/types/models'; import { retryTransientEsErrors } from '../retry'; import { updateEsAssetReferences } from '../../packages/install'; -import { getAsset } from './common'; - interface MlModelInstallation { installationName: string; content: string; } export const installMlModel = async ( - installablePackage: InstallablePackage, - paths: string[], + packageInstallContext: PackageInstallContext, esClient: ElasticsearchClient, savedObjectsClient: SavedObjectsClientContract, logger: Logger, esReferences: EsAssetReference[] ) => { - const mlModelPath = paths.find((path) => isMlModel(path)); + const mlModelPath = packageInstallContext.paths.find((path) => isMlModel(path)); if (mlModelPath !== undefined) { - const content = getAsset(mlModelPath).toString('utf-8'); + const content = getAssetFromAssetsMap(packageInstallContext.assetsMap, mlModelPath).toString( + 'utf-8' + ); const pathParts = mlModelPath.split('/'); const modelId = pathParts[pathParts.length - 1].replace('.json', ''); @@ -46,7 +48,7 @@ export const installMlModel = async ( // get and save ml model refs before installing ml model esReferences = await updateEsAssetReferences( savedObjectsClient, - installablePackage.name, + packageInstallContext.packageInfo.name, esReferences, { assetsToAdd: [mlModelRef] } ); diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.test.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.test.ts index 321e832115cf0..61edf78ec497e 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.test.ts @@ -7,7 +7,7 @@ import { createAppContextStartContractMock } from '../../../../mocks'; import { appContextService } from '../../..'; import { loadFieldsFromYaml } from '../../fields/field'; -import type { ArchivePackage, RegistryDataStream } from '../../../../types'; +import type { PackageInstallContext, RegistryDataStream } from '../../../../../common/types'; import { prepareTemplate, prepareToInstallTemplates } from './install'; @@ -19,6 +19,9 @@ jest.mock('../../fields/field', () => ({ const mockedLoadFieldsFromYaml = loadFieldsFromYaml as jest.MockedFunction< typeof loadFieldsFromYaml >; +const packageInstallContext = { + packageInfo: { name: 'package', version: '0.0.1' }, +} as PackageInstallContext; describe('EPM index template install', () => { beforeEach(async () => { @@ -43,15 +46,12 @@ describe('EPM index template install', () => { path: 'path', ingest_pipeline: 'default', } as RegistryDataStream; - const pkg = { - name: 'package', - version: '0.0.1', - }; + const templateIndexPatternDatasetIsPrefixUnset = 'metrics-package.dataset-*'; const templatePriorityDatasetIsPrefixUnset = 200; const { indexTemplate: { indexTemplate }, - } = prepareTemplate({ pkg, dataStream: dataStreamDatasetIsPrefixUnset }); + } = prepareTemplate({ packageInstallContext, dataStream: dataStreamDatasetIsPrefixUnset }); expect(indexTemplate.priority).toBe(templatePriorityDatasetIsPrefixUnset); expect(indexTemplate.index_patterns).toEqual([templateIndexPatternDatasetIsPrefixUnset]); }); @@ -67,15 +67,12 @@ describe('EPM index template install', () => { ingest_pipeline: 'default', dataset_is_prefix: false, } as RegistryDataStream; - const pkg = { - name: 'package', - version: '0.0.1', - }; + const templateIndexPatternDatasetIsPrefixFalse = 'metrics-package.dataset-*'; const templatePriorityDatasetIsPrefixFalse = 200; const { indexTemplate: { indexTemplate }, - } = prepareTemplate({ pkg, dataStream: dataStreamDatasetIsPrefixFalse }); + } = prepareTemplate({ packageInstallContext, dataStream: dataStreamDatasetIsPrefixFalse }); expect(indexTemplate.priority).toBe(templatePriorityDatasetIsPrefixFalse); expect(indexTemplate.index_patterns).toEqual([templateIndexPatternDatasetIsPrefixFalse]); @@ -92,15 +89,12 @@ describe('EPM index template install', () => { ingest_pipeline: 'default', dataset_is_prefix: true, } as RegistryDataStream; - const pkg = { - name: 'package', - version: '0.0.1', - }; + const templateIndexPatternDatasetIsPrefixTrue = 'metrics-package.dataset.*-*'; const templatePriorityDatasetIsPrefixTrue = 150; const { indexTemplate: { indexTemplate }, - } = prepareTemplate({ pkg, dataStream: dataStreamDatasetIsPrefixTrue }); + } = prepareTemplate({ packageInstallContext, dataStream: dataStreamDatasetIsPrefixTrue }); expect(indexTemplate.priority).toBe(templatePriorityDatasetIsPrefixTrue); expect(indexTemplate.index_patterns).toEqual([templateIndexPatternDatasetIsPrefixTrue]); @@ -120,13 +114,9 @@ describe('EPM index template install', () => { source_mode: 'synthetic', }, } as RegistryDataStream; - const pkg = { - name: 'package', - version: '0.0.1', - }; const { componentTemplates } = prepareTemplate({ - pkg, + packageInstallContext, dataStream: dataStreamDatasetIsPrefixTrue, }); @@ -154,13 +144,9 @@ describe('EPM index template install', () => { index_mode: 'time_series', }, } as RegistryDataStream; - const pkg = { - name: 'package', - version: '0.0.1', - }; const { componentTemplates } = prepareTemplate({ - pkg, + packageInstallContext, dataStream: dataStreamDatasetIsPrefixTrue, }); @@ -188,13 +174,9 @@ describe('EPM index template install', () => { index_mode: 'time_series', }, } as RegistryDataStream; - const pkg = { - name: 'package', - version: '0.0.1', - }; const { componentTemplates } = prepareTemplate({ - pkg, + packageInstallContext, dataStream: dataStreamDatasetIsPrefixTrue, experimentalDataStreamFeature: { data_stream: 'metrics-package.dataset', @@ -230,13 +212,9 @@ describe('EPM index template install', () => { source_mode: 'synthetic', }, } as RegistryDataStream; - const pkg = { - name: 'package', - version: '0.0.1', - }; const { componentTemplates } = prepareTemplate({ - pkg, + packageInstallContext, dataStream: dataStreamDatasetIsPrefixTrue, experimentalDataStreamFeature: { data_stream: 'metrics-package.dataset', @@ -272,13 +250,9 @@ describe('EPM index template install', () => { index_mode: 'time_series', }, } as RegistryDataStream; - const pkg = { - name: 'package', - version: '0.0.1', - }; const { indexTemplate } = prepareTemplate({ - pkg, + packageInstallContext, dataStream: dataStreamDatasetIsPrefixTrue, }); @@ -307,13 +281,8 @@ describe('EPM index template install', () => { }, } as RegistryDataStream; - const pkg = { - name: 'package', - version: '0.0.1', - }; - const { componentTemplates } = prepareTemplate({ - pkg, + packageInstallContext, dataStream, }); @@ -352,13 +321,8 @@ describe('EPM index template install', () => { }, } as RegistryDataStream; - const pkg = { - name: 'package', - version: '0.0.1', - }; - const { componentTemplates } = prepareTemplate({ - pkg, + packageInstallContext, dataStream, }); @@ -401,13 +365,8 @@ describe('EPM index template install', () => { }, } as RegistryDataStream; - const pkg = { - name: 'package', - version: '0.0.1', - }; - const { componentTemplates } = prepareTemplate({ - pkg, + packageInstallContext, dataStream, }); @@ -441,13 +400,8 @@ describe('EPM index template install', () => { }, } as RegistryDataStream; - const pkg = { - name: 'package', - version: '0.0.1', - }; - const { componentTemplates } = prepareTemplate({ - pkg, + packageInstallContext, dataStream, }); @@ -469,10 +423,12 @@ describe('EPM index template install', () => { const { assetsToAdd } = prepareToInstallTemplates( { - name: 'package', - version: '0.0.1', - data_streams: [dataStreamDatasetIsPrefixUnset], - } as ArchivePackage, + packageInfo: { + name: 'package', + version: '0.0.1', + data_streams: [dataStreamDatasetIsPrefixUnset], + }, + } as PackageInstallContext, [], [] ); diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.ts index 2e67c70874e4e..d6825668d1a44 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.ts @@ -23,33 +23,29 @@ import type { RegistryDataStream, IndexTemplateEntry, RegistryElasticsearch, - InstallablePackage, IndexTemplate, IndexTemplateMappings, TemplateMapEntry, TemplateMap, EsAssetReference, - PackageInfo, ExperimentalDataStreamFeature, } from '../../../../types'; import { loadFieldsFromYaml, processFields } from '../../fields/field'; -import { getAsset, getPathParts } from '../../archive'; +import { getAssetFromAssetsMap, getPathParts } from '../../archive'; import { FLEET_COMPONENT_TEMPLATES, PACKAGE_TEMPLATE_SUFFIX, USER_SETTINGS_TEMPLATE_SUFFIX, STACK_COMPONENT_TEMPLATES, } from '../../../../constants'; - import { getESAssetMetadata } from '../meta'; import { retryTransientEsErrors } from '../retry'; - import { applyDocOnlyValueToMapping, forEachMappings, } from '../../../experimental_datastream_features_helper'; - import { appContextService } from '../../../app_context'; +import type { PackageInstallContext } from '../../../../../common/types'; import { generateMappings, @@ -63,8 +59,7 @@ import { buildDefaultSettings } from './default_settings'; const FLEET_COMPONENT_TEMPLATE_NAMES = FLEET_COMPONENT_TEMPLATES.map((tmpl) => tmpl.name); export const prepareToInstallTemplates = ( - installablePackage: InstallablePackage | PackageInfo, - paths: string[], + packageInstallContext: PackageInstallContext, esReferences: EsAssetReference[], experimentalDataStreamFeatures: ExperimentalDataStreamFeature[] = [], onlyForDataStreams?: RegistryDataStream[] @@ -73,6 +68,7 @@ export const prepareToInstallTemplates = ( assetsToRemove: EsAssetReference[]; install: (esClient: ElasticsearchClient, logger: Logger) => Promise; } => { + const { packageInfo } = packageInstallContext; // remove package installation's references to index templates const assetsToRemove = esReferences.filter( ({ type }) => @@ -81,7 +77,7 @@ export const prepareToInstallTemplates = ( ); // build templates per data stream from yml files - const dataStreams = onlyForDataStreams || installablePackage.data_streams; + const dataStreams = onlyForDataStreams || packageInfo.data_streams; if (!dataStreams) return { assetsToAdd: [], assetsToRemove, install: () => Promise.resolve([]) }; const templates = dataStreams.map((dataStream) => { @@ -90,7 +86,7 @@ export const prepareToInstallTemplates = ( datastreamFeature.data_stream === getRegistryDataStreamAssetBaseName(dataStream) ); - return prepareTemplate({ pkg: installablePackage, dataStream, experimentalDataStreamFeature }); + return prepareTemplate({ packageInstallContext, dataStream, experimentalDataStreamFeature }); }); const assetsToAdd = getAllTemplateRefs(templates.map((template) => template.indexTemplate)); @@ -102,8 +98,8 @@ export const prepareToInstallTemplates = ( // install any pre-built index template assets, // atm, this is only the base package's global index templates // Install component templates first, as they are used by the index templates - await installPreBuiltComponentTemplates(paths, esClient, logger); - await installPreBuiltTemplates(paths, esClient, logger); + await installPreBuiltComponentTemplates(packageInstallContext, esClient, logger); + await installPreBuiltTemplates(packageInstallContext, esClient, logger); await Promise.all( templates.map((template) => @@ -122,15 +118,17 @@ export const prepareToInstallTemplates = ( }; const installPreBuiltTemplates = async ( - paths: string[], + packageInstallContext: PackageInstallContext, esClient: ElasticsearchClient, logger: Logger ) => { - const templatePaths = paths.filter((path) => isTemplate(path)); + const templatePaths = packageInstallContext.paths.filter((path) => isTemplate(path)); const templateInstallPromises = templatePaths.map(async (path) => { const { file } = getPathParts(path); const templateName = file.substr(0, file.lastIndexOf('.')); - const content = JSON.parse(getAsset(path).toString('utf8')); + const content = JSON.parse( + getAssetFromAssetsMap(packageInstallContext.assetsMap, path).toString('utf8') + ); const esClientParams = { name: templateName, body: content }; const esClientRequestOptions = { ignore: [404] }; @@ -159,15 +157,17 @@ const installPreBuiltTemplates = async ( }; const installPreBuiltComponentTemplates = async ( - paths: string[], + packageInstallContext: PackageInstallContext, esClient: ElasticsearchClient, logger: Logger ) => { - const templatePaths = paths.filter((path) => isComponentTemplate(path)); + const templatePaths = packageInstallContext.paths.filter((path) => isComponentTemplate(path)); const templateInstallPromises = templatePaths.map(async (path) => { const { file } = getPathParts(path); const templateName = file.substr(0, file.lastIndexOf('.')); - const content = JSON.parse(getAsset(path).toString('utf8')); + const content = JSON.parse( + getAssetFromAssetsMap(packageInstallContext.assetsMap, path).toString('utf8') + ); const esClientParams = { name: templateName, @@ -518,16 +518,16 @@ export async function ensureAliasHasWriteIndex(opts: { } export function prepareTemplate({ - pkg, + packageInstallContext, dataStream, experimentalDataStreamFeature, }: { - pkg: Pick; + packageInstallContext: PackageInstallContext; dataStream: RegistryDataStream; experimentalDataStreamFeature?: ExperimentalDataStreamFeature; }): { componentTemplates: TemplateMap; indexTemplate: IndexTemplateEntry } { - const { name: packageName, version: packageVersion } = pkg; - const fields = loadFieldsFromYaml(pkg, dataStream.path); + const { name: packageName, version: packageVersion } = packageInstallContext.packageInfo; + const fields = loadFieldsFromYaml(packageInstallContext, dataStream.path); const isIndexModeTimeSeries = dataStream.elasticsearch?.index_mode === 'time_series' || diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/common.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/common.ts index 46e85d7f9df62..b3ee4179d1256 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/common.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/common.ts @@ -5,8 +5,6 @@ * 2.0. */ -export { getAsset } from '../../archive'; - // Index alias that points to just one destination index from the latest package version export const TRANSFORM_DEST_IDX_ALIAS_LATEST_SFX = '.latest'; // Index alias that points to all of the destination indices from all the package versions diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts index 984a88d87e61f..2afe341485139 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts @@ -29,8 +29,11 @@ import { isFields, processFields } from '../../fields/field'; import { generateMappings } from '../template/template'; import { getESAssetMetadata } from '../meta'; import { updateEsAssetReferences } from '../../packages/install'; -import { getPathParts } from '../../archive'; -import { ElasticsearchAssetType } from '../../../../../common/types/models'; +import { getAssetFromAssetsMap, getPathParts } from '../../archive'; +import { + ElasticsearchAssetType, + type PackageInstallContext, +} from '../../../../../common/types/models'; import type { EsAssetReference, InstallablePackage, @@ -42,7 +45,6 @@ import { getInstallation } from '../../packages'; import { retryTransientEsErrors } from '../retry'; import { deleteTransforms } from './remove'; -import { getAsset } from './common'; import { getDestinationIndexAliases } from './transform_utils'; const DEFAULT_TRANSFORM_TEMPLATES_PRIORITY = 250; @@ -69,7 +71,7 @@ interface TransformInstallation extends TransformModuleBase { } const installLegacyTransformsAssets = async ( - installablePackage: InstallablePackage, + packageInstallContext: PackageInstallContext, installNameSuffix: string, transformPaths: string[], esClient: ElasticsearchClient, @@ -89,7 +91,11 @@ const installLegacyTransformsAssets = async ( if (transformPaths.length > 0) { const transformRefs = transformPaths.reduce((acc, path) => { acc.push({ - id: getLegacyTransformNameForInstallation(installablePackage, path, installNameSuffix), + id: getLegacyTransformNameForInstallation( + packageInstallContext.packageInfo, + path, + installNameSuffix + ), type: ElasticsearchAssetType.transform, }); @@ -99,7 +105,7 @@ const installLegacyTransformsAssets = async ( // get and save transform refs before installing transforms esReferences = await updateEsAssetReferences( savedObjectsClient, - installablePackage.name, + packageInstallContext.packageInfo.name, esReferences, { assetsToAdd: transformRefs, @@ -107,12 +113,14 @@ const installLegacyTransformsAssets = async ( ); const transforms: TransformInstallation[] = transformPaths.map((path: string) => { - const content = JSON.parse(getAsset(path).toString('utf-8')); - content._meta = getESAssetMetadata({ packageName: installablePackage.name }); + const content = JSON.parse( + getAssetFromAssetsMap(packageInstallContext.assetsMap, path).toString('utf-8') + ); + content._meta = getESAssetMetadata({ packageName: packageInstallContext.packageInfo.name }); return { installationName: getLegacyTransformNameForInstallation( - installablePackage, + packageInstallContext.packageInfo, path, installNameSuffix ), @@ -130,7 +138,7 @@ const installLegacyTransformsAssets = async ( if (previousInstalledTransformEsAssets.length > 0) { esReferences = await updateEsAssetReferences( savedObjectsClient, - installablePackage.name, + packageInstallContext.packageInfo.name, esReferences, { assetsToRemove: previousInstalledTransformEsAssets, @@ -142,13 +150,14 @@ const installLegacyTransformsAssets = async ( }; const processTransformAssetsPerModule = ( - installablePackage: InstallablePackage, + packageInstallContext: PackageInstallContext, installNameSuffix: string, transformPaths: string[], previousInstalledTransformEsAssets: EsAssetReference[] = [], force?: boolean, username?: string ) => { + const { assetsMap, packageInfo: installablePackage } = packageInstallContext; const transformsSpecifications = new Map(); const destinationIndexTemplates: DestinationIndexTemplateInstallation[] = []; const transforms: TransformInstallation[] = []; @@ -169,7 +178,7 @@ const processTransformAssetsPerModule = ( } const packageAssets = transformsSpecifications.get(transformModuleId); - const content = safeLoad(getAsset(path).toString('utf-8')); + const content = safeLoad(getAssetFromAssetsMap(assetsMap, path).toString('utf-8')); // Handling fields.yml and all other files within 'fields' folder if (fileName === TRANSFORM_SPECS_TYPES.FIELDS || isFields(path)) { @@ -399,7 +408,7 @@ const processTransformAssetsPerModule = ( }; const installTransformsAssets = async ( - installablePackage: InstallablePackage, + packageInstallContext: PackageInstallContext, installNameSuffix: string, transformPaths: string[], esClient: ElasticsearchClient, @@ -425,7 +434,7 @@ const installTransformsAssets = async ( transformsToRemove, transformsToRemoveWithDestIndex, } = processTransformAssetsPerModule( - installablePackage, + packageInstallContext, installNameSuffix, transformPaths, previousInstalledTransformEsAssets, @@ -441,8 +450,8 @@ const installTransformsAssets = async ( ? await generateTransformSecondaryAuthHeaders({ authorizationHeader, logger, - pkgName: installablePackage.name, - pkgVersion: installablePackage.version, + pkgName: packageInstallContext.packageInfo.name, + pkgVersion: packageInstallContext.packageInfo.version, username, }) : // No need to generate api key/secondary auth if all transforms are run as kibana_system user @@ -469,7 +478,7 @@ const installTransformsAssets = async ( // get and save refs associated with the transforms before installing esReferences = await updateEsAssetReferences( savedObjectsClient, - installablePackage.name, + packageInstallContext.packageInfo.name, esReferences, { assetsToAdd: [ @@ -504,7 +513,7 @@ const installTransformsAssets = async ( mappings: customMappings, templateName: destinationIndexTemplate.installationName, registryElasticsearch, - packageName: installablePackage.name, + packageName: packageInstallContext.packageInfo.name, defaultSettings: { // Adding destination pipeline here because else these templates will be overridden // by index setting @@ -579,7 +588,7 @@ const installTransformsAssets = async ( // get and save refs associated with the transforms before installing esReferences = await updateEsAssetReferences( savedObjectsClient, - installablePackage.name, + packageInstallContext.packageInfo.name, esReferences, { assetsToRemove: installedTransforms, @@ -593,8 +602,7 @@ const installTransformsAssets = async ( }; interface InstallTransformsParams { - installablePackage: InstallablePackage; - paths: string[]; + packageInstallContext: PackageInstallContext; esClient: ElasticsearchClient; savedObjectsClient: SavedObjectsClientContract; logger: Logger; @@ -611,8 +619,7 @@ interface InstallTransformsParams { authorizationHeader?: HTTPAuthorizationHeader | null; } export const installTransforms = async ({ - installablePackage, - paths, + packageInstallContext, esClient, savedObjectsClient, logger, @@ -620,11 +627,12 @@ export const installTransforms = async ({ esReferences, authorizationHeader, }: InstallTransformsParams) => { + const { paths, packageInfo } = packageInstallContext; const transformPaths = paths.filter((path) => isTransform(path)); const installation = await getInstallation({ savedObjectsClient, - pkgName: installablePackage.name, + pkgName: packageInfo.name, }); esReferences = esReferences ?? installation?.installed_es ?? []; let previousInstalledTransformEsAssets: EsAssetReference[] = []; @@ -641,12 +649,12 @@ export const installTransforms = async ({ } } - const installNameSuffix = `${installablePackage.version}`; + const installNameSuffix = `${packageInfo.version}`; // If package contains legacy transform specifications (i.e. with json instead of yml) if (transformPaths.some((p) => p.endsWith('.json')) || transformPaths.length === 0) { return await installLegacyTransformsAssets( - installablePackage, + packageInstallContext, installNameSuffix, transformPaths, esClient, @@ -659,7 +667,7 @@ export const installTransforms = async ({ // If package contains yml transform specifications return await installTransformsAssets( - installablePackage, + packageInstallContext, installNameSuffix, transformPaths, esClient, diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/legacy_transforms.test.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/legacy_transforms.test.ts index c652bee50d815..72474d3081f39 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/legacy_transforms.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/legacy_transforms.test.ts @@ -12,12 +12,6 @@ jest.mock('../../packages/get', () => { return { getInstallation: jest.fn(), getInstallationObject: jest.fn() }; }); -jest.mock('./common', () => { - return { - getAsset: jest.fn(), - }; -}); - import { errors } from '@elastic/elasticsearch'; import type { SavedObject, SavedObjectsClientContract } from '@kbn/core/server'; import { loggerMock } from '@kbn/logging-mocks'; @@ -26,15 +20,15 @@ import { savedObjectsClientMock } from '@kbn/core/server/mocks'; import { elasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; import { getInstallation, getInstallationObject } from '../../packages'; -import type { Installation, RegistryPackage } from '../../../../types'; +import type { Installation } from '../../../../types'; import { ElasticsearchAssetType } from '../../../../types'; import { appContextService } from '../../../app_context'; import { getESAssetMetadata } from '../meta'; +import type { PackageInstallContext } from '../../../../../common/types'; import { PACKAGES_SAVED_OBJECT_TYPE } from '../../../../constants'; -import { getAsset } from './common'; import { installTransforms } from './install'; describe('test transform install with legacy schema', () => { @@ -92,10 +86,6 @@ describe('test transform install with legacy schema', () => { }, ], } as unknown as Installation; - (getAsset as jest.MockedFunction) - .mockReturnValueOnce(Buffer.from('{"content": "data"}', 'utf8')) - .mockReturnValueOnce(Buffer.from('{"content": "data"}', 'utf8')); - (getInstallation as jest.MockedFunction) .mockReturnValueOnce(Promise.resolve(previousInstallation)) .mockReturnValueOnce(Promise.resolve(currentInstallation)); @@ -123,45 +113,61 @@ describe('test transform install with legacy schema', () => { }); await installTransforms({ - installablePackage: { - name: 'endpoint', - version: '0.16.0-dev.0', - data_streams: [ - { - type: 'metrics', - dataset: 'endpoint.metadata', - title: 'Endpoint Metadata', - release: 'experimental', - package: 'endpoint', - ingest_pipeline: 'default', - elasticsearch: { - 'index_template.mappings': { - dynamic: false, + packageInstallContext: { + packageInfo: { + name: 'endpoint', + version: '0.16.0-dev.0', + data_streams: [ + { + type: 'metrics', + dataset: 'endpoint.metadata', + title: 'Endpoint Metadata', + release: 'experimental', + package: 'endpoint', + ingest_pipeline: 'default', + elasticsearch: { + 'index_template.mappings': { + dynamic: false, + }, }, + path: 'metadata', }, - path: 'metadata', - }, - { - type: 'metrics', - dataset: 'endpoint.metadata_current', - title: 'Endpoint Metadata Current', - release: 'experimental', - package: 'endpoint', - ingest_pipeline: 'default', - elasticsearch: { - 'index_template.mappings': { - dynamic: false, + { + type: 'metrics', + dataset: 'endpoint.metadata_current', + title: 'Endpoint Metadata Current', + release: 'experimental', + package: 'endpoint', + ingest_pipeline: 'default', + elasticsearch: { + 'index_template.mappings': { + dynamic: false, + }, }, + path: 'metadata_current', }, - path: 'metadata_current', - }, + ], + }, + paths: [ + 'endpoint-0.16.0-dev.0/data_stream/policy/elasticsearch/ingest_pipeline/default.json', + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata/default.json', + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/default.json', ], - } as unknown as RegistryPackage, - paths: [ - 'endpoint-0.16.0-dev.0/data_stream/policy/elasticsearch/ingest_pipeline/default.json', - 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata/default.json', - 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/default.json', - ], + assetsMap: new Map([ + [ + 'endpoint-0.16.0-dev.0/data_stream/policy/elasticsearch/ingest_pipeline/default.json', + Buffer.from('{"content": "data"}'), + ], + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata/default.json', + Buffer.from('{"content": "data"}'), + ], + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/default.json', + Buffer.from('{"content": "data"}'), + ], + ]), + } as unknown as PackageInstallContext, esClient, savedObjectsClient, logger: loggerMock.create(), @@ -288,9 +294,6 @@ describe('test transform install with legacy schema', () => { }, ], } as unknown as Installation; - (getAsset as jest.MockedFunction).mockReturnValueOnce( - Buffer.from('{"content": "data"}', 'utf8') - ); (getInstallation as jest.MockedFunction) .mockReturnValueOnce(Promise.resolve(previousInstallation)) .mockReturnValueOnce(Promise.resolve(currentInstallation)); @@ -304,27 +307,35 @@ describe('test transform install with legacy schema', () => { ); await installTransforms({ - installablePackage: { - name: 'endpoint', - version: '0.16.0-dev.0', - data_streams: [ - { - type: 'metrics', - dataset: 'endpoint.metadata_current', - title: 'Endpoint Metadata', - release: 'experimental', - package: 'endpoint', - ingest_pipeline: 'default', - elasticsearch: { - 'index_template.mappings': { - dynamic: false, + packageInstallContext: { + packageInfo: { + name: 'endpoint', + version: '0.16.0-dev.0', + data_streams: [ + { + type: 'metrics', + dataset: 'endpoint.metadata_current', + title: 'Endpoint Metadata', + release: 'experimental', + package: 'endpoint', + ingest_pipeline: 'default', + elasticsearch: { + 'index_template.mappings': { + dynamic: false, + }, }, + path: 'metadata_current', }, - path: 'metadata_current', - }, - ], - } as unknown as RegistryPackage, - paths: ['endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/default.json'], + ], + }, + paths: ['endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/default.json'], + assetsMap: new Map([ + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/default.json', + Buffer.from('{"content": "data"}'), + ], + ]), + } as unknown as PackageInstallContext, esClient, savedObjectsClient, logger: loggerMock.create(), @@ -406,41 +417,43 @@ describe('test transform install with legacy schema', () => { }); await installTransforms({ - installablePackage: { - name: 'endpoint', - version: '0.16.0-dev.0', - data_streams: [ - { - type: 'metrics', - dataset: 'endpoint.metadata', - title: 'Endpoint Metadata', - release: 'experimental', - package: 'endpoint', - ingest_pipeline: 'default', - elasticsearch: { - 'index_template.mappings': { - dynamic: false, + packageInstallContext: { + packageInfo: { + name: 'endpoint', + version: '0.16.0-dev.0', + data_streams: [ + { + type: 'metrics', + dataset: 'endpoint.metadata', + title: 'Endpoint Metadata', + release: 'experimental', + package: 'endpoint', + ingest_pipeline: 'default', + elasticsearch: { + 'index_template.mappings': { + dynamic: false, + }, }, + path: 'metadata', }, - path: 'metadata', - }, - { - type: 'metrics', - dataset: 'endpoint.metadata_current', - title: 'Endpoint Metadata Current', - release: 'experimental', - package: 'endpoint', - ingest_pipeline: 'default', - elasticsearch: { - 'index_template.mappings': { - dynamic: false, + { + type: 'metrics', + dataset: 'endpoint.metadata_current', + title: 'Endpoint Metadata Current', + release: 'experimental', + package: 'endpoint', + ingest_pipeline: 'default', + elasticsearch: { + 'index_template.mappings': { + dynamic: false, + }, }, + path: 'metadata_current', }, - path: 'metadata_current', - }, - ], - } as unknown as RegistryPackage, - paths: [], + ], + }, + paths: [], + } as unknown as PackageInstallContext, esClient, savedObjectsClient, logger: loggerMock.create(), @@ -495,9 +508,6 @@ describe('test transform install with legacy schema', () => { }, ], } as unknown as Installation; - (getAsset as jest.MockedFunction).mockReturnValueOnce( - Buffer.from('{"content": "data"}', 'utf8') - ); (getInstallation as jest.MockedFunction) .mockReturnValueOnce(Promise.resolve(previousInstallation)) .mockReturnValueOnce(Promise.resolve(currentInstallation)); @@ -522,27 +532,35 @@ describe('test transform install with legacy schema', () => { ); await installTransforms({ - installablePackage: { - name: 'endpoint', - version: '0.16.0-dev.0', - data_streams: [ - { - type: 'metrics', - dataset: 'endpoint.metadata_current', - title: 'Endpoint Metadata', - release: 'experimental', - package: 'endpoint', - ingest_pipeline: 'default', - elasticsearch: { - 'index_template.mappings': { - dynamic: false, + packageInstallContext: { + packageInfo: { + name: 'endpoint', + version: '0.16.0-dev.0', + data_streams: [ + { + type: 'metrics', + dataset: 'endpoint.metadata_current', + title: 'Endpoint Metadata', + release: 'experimental', + package: 'endpoint', + ingest_pipeline: 'default', + elasticsearch: { + 'index_template.mappings': { + dynamic: false, + }, }, + path: 'metadata_current', }, - path: 'metadata_current', - }, - ], - } as unknown as RegistryPackage, - paths: ['endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/default.json'], + ], + }, + paths: ['endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/default.json'], + assetsMap: new Map([ + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/default.json', + Buffer.from('{"content": "data"}'), + ], + ]), + } as unknown as PackageInstallContext, esClient, savedObjectsClient, logger: loggerMock.create(), diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transforms.test.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transforms.test.ts index 6ab6f20669baf..80efd5a08e446 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transforms.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/transforms.test.ts @@ -14,7 +14,7 @@ import { elasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-m import { HTTPAuthorizationHeader } from '../../../../../common/http_authorization_header'; import { getInstallation, getInstallationObject } from '../../packages'; -import type { Installation, RegistryPackage } from '../../../../types'; +import type { Installation } from '../../../../types'; import { ElasticsearchAssetType } from '../../../../types'; import { appContextService } from '../../../app_context'; @@ -23,20 +23,14 @@ import { PACKAGES_SAVED_OBJECT_TYPE } from '../../../../constants'; import { getESAssetMetadata } from '../meta'; import { createAppContextStartContractMock } from '../../../../mocks'; +import type { PackageInstallContext } from '../../../../../common/types'; import { installTransforms } from './install'; -import { getAsset } from './common'; jest.mock('../../packages/get', () => { return { getInstallation: jest.fn(), getInstallationObject: jest.fn() }; }); -jest.mock('./common', () => { - return { - getAsset: jest.fn(), - }; -}); - const meta = getESAssetMetadata({ packageName: 'endpoint' }); describe('test transform install', () => { @@ -236,13 +230,6 @@ _meta: }, ], } as unknown as Installation; - (getAsset as jest.MockedFunction) - .mockReturnValueOnce(Buffer.from(sourceData.BEATS_FIELDS, 'utf8')) - .mockReturnValueOnce(Buffer.from(sourceData.AGENT_FIELDS, 'utf8')) - .mockReturnValueOnce(Buffer.from(sourceData.FIELDS, 'utf8')) - .mockReturnValueOnce(Buffer.from(sourceData.MANIFEST, 'utf8')) - .mockReturnValueOnce(Buffer.from(sourceData.TRANSFORM, 'utf8')); - (getInstallation as jest.MockedFunction) .mockReturnValueOnce(Promise.resolve(previousInstallation)) .mockReturnValueOnce(Promise.resolve(currentInstallation)); @@ -271,17 +258,41 @@ _meta: }); await installTransforms({ - installablePackage: { - name: 'endpoint', - version: '0.16.0-dev.0', - } as unknown as RegistryPackage, - paths: [ - 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/fields/beats.yml', - 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/fields/agent.yml', - 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/fields/fields.yml', - 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/manifest.yml', - 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/transform.yml', - ], + packageInstallContext: { + packageInfo: { + name: 'endpoint', + version: '0.16.0-dev.0', + }, + paths: [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/fields/beats.yml', + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/fields/agent.yml', + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/fields/fields.yml', + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/manifest.yml', + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/transform.yml', + ], + assetsMap: new Map([ + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/fields/beats.yml', + sourceData.BEATS_FIELDS, + ], + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/fields/agent.yml', + sourceData.AGENT_FIELDS, + ], + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/fields/fields.yml', + sourceData.FIELDS, + ], + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/manifest.yml', + sourceData.MANIFEST, + ], + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/transform.yml', + sourceData.TRANSFORM, + ], + ]), + } as unknown as PackageInstallContext, esClient, savedObjectsClient, logger: loggerMock.create(), @@ -530,10 +541,6 @@ _meta: }, ], } as unknown as Installation; - (getAsset as jest.MockedFunction) - .mockReturnValueOnce(Buffer.from(sourceData.FIELDS, 'utf8')) - .mockReturnValueOnce(Buffer.from(sourceData.MANIFEST, 'utf8')) - .mockReturnValueOnce(Buffer.from(sourceData.TRANSFORM, 'utf8')); (getInstallation as jest.MockedFunction) .mockReturnValueOnce(Promise.resolve(previousInstallation)) @@ -563,15 +570,31 @@ _meta: }); await installTransforms({ - installablePackage: { - name: 'endpoint', - version: '0.16.0-dev.0', - } as unknown as RegistryPackage, - paths: [ - 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/fields/fields.yml', - 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/manifest.yml', - 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/transform.yml', - ], + packageInstallContext: { + packageInfo: { + name: 'endpoint', + version: '0.16.0-dev.0', + }, + paths: [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/fields/fields.yml', + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/manifest.yml', + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/transform.yml', + ], + assetsMap: new Map([ + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/fields/fields.yml', + Buffer.from(sourceData.FIELDS), + ], + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/manifest.yml', + Buffer.from(sourceData.MANIFEST), + ], + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/transform.yml', + Buffer.from(sourceData.TRANSFORM), + ], + ]), + } as unknown as PackageInstallContext, esClient, savedObjectsClient, logger: loggerMock.create(), @@ -810,10 +833,6 @@ _meta: }, ], } as unknown as Installation; - (getAsset as jest.MockedFunction) - .mockReturnValueOnce(Buffer.from(sourceData.FIELDS, 'utf8')) - .mockReturnValueOnce(Buffer.from(sourceData.TRANSFORM, 'utf8')); - (getInstallation as jest.MockedFunction) .mockReturnValueOnce(Promise.resolve(previousInstallation)) .mockReturnValueOnce(Promise.resolve(currentInstallation)); @@ -842,14 +861,26 @@ _meta: }); await installTransforms({ - installablePackage: { - name: 'endpoint', - version: '0.16.0-dev.0', - } as unknown as RegistryPackage, - paths: [ - 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/fields/fields.yml', - 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/transform.yml', - ], + packageInstallContext: { + packageInfo: { + name: 'endpoint', + version: '0.16.0-dev.0', + }, + paths: [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/fields/fields.yml', + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/transform.yml', + ], + assetsMap: new Map([ + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/fields/fields.yml', + Buffer.from(sourceData.FIELDS), + ], + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/transform.yml', + Buffer.from(sourceData.TRANSFORM), + ], + ]), + } as unknown as PackageInstallContext, esClient, savedObjectsClient, logger: loggerMock.create(), @@ -1052,9 +1083,6 @@ _meta: }, ], } as unknown as Installation; - (getAsset as jest.MockedFunction) - .mockReturnValueOnce(Buffer.from(sourceData.MANIFEST, 'utf8')) - .mockReturnValueOnce(Buffer.from(sourceData.TRANSFORM, 'utf8')); (getInstallation as jest.MockedFunction) .mockReturnValueOnce(Promise.resolve(previousInstallation)) @@ -1069,14 +1097,26 @@ _meta: ); await installTransforms({ - installablePackage: { - name: 'endpoint', - version: '0.16.0-dev.0', - } as unknown as RegistryPackage, - paths: [ - 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/manifest.yml', - 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/transform.yml', - ], + packageInstallContext: { + packageInfo: { + name: 'endpoint', + version: '0.16.0-dev.0', + }, + paths: [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/manifest.yml', + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/transform.yml', + ], + assetsMap: new Map([ + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/manifest.yml', + sourceData.MANIFEST, + ], + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/transform.yml', + sourceData.TRANSFORM, + ], + ]), + } as unknown as PackageInstallContext, esClient, savedObjectsClient, logger: loggerMock.create(), @@ -1134,9 +1174,6 @@ _meta: }, ], } as unknown as Installation; - (getAsset as jest.MockedFunction) - .mockReturnValueOnce(Buffer.from(sourceData.MANIFEST, 'utf8')) - .mockReturnValueOnce(Buffer.from(sourceData.TRANSFORM, 'utf8')); (getInstallation as jest.MockedFunction) .mockReturnValueOnce(Promise.resolve(previousInstallation)) @@ -1162,14 +1199,26 @@ _meta: ); await installTransforms({ - installablePackage: { - name: 'endpoint', - version: '0.16.0-dev.0', - } as unknown as RegistryPackage, - paths: [ - 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/manifest.yml', - 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/transform.yml', - ], + packageInstallContext: { + packageInfo: { + name: 'endpoint', + version: '0.16.0-dev.0', + }, + paths: [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/manifest.yml', + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/transform.yml', + ], + assetsMap: new Map([ + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/manifest.yml', + sourceData.MANIFEST, + ], + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/transform.yml', + sourceData.TRANSFORM, + ], + ]), + } as unknown as PackageInstallContext, esClient, savedObjectsClient, logger: loggerMock.create(), @@ -1229,11 +1278,6 @@ _meta: ], } as unknown as Installation; - (getAsset as jest.MockedFunction) - .mockReturnValueOnce(Buffer.from(sourceData.FIELDS, 'utf8')) - .mockReturnValueOnce(Buffer.from(sourceData.MANIFEST, 'utf8')) - .mockReturnValueOnce(Buffer.from(sourceData.TRANSFORM, 'utf8')); - (getInstallation as jest.MockedFunction) .mockReturnValueOnce(Promise.resolve(previousInstallation)) .mockReturnValueOnce(Promise.resolve(currentInstallation)); @@ -1247,15 +1291,31 @@ _meta: ); await installTransforms({ - installablePackage: { - name: 'endpoint', - version: '0.16.0-dev.0', - } as unknown as RegistryPackage, - paths: [ - 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/fields/fields.yml', - 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/manifest.yml', - 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/transform.yml', - ], + packageInstallContext: { + packageInfo: { + name: 'endpoint', + version: '0.16.0-dev.0', + }, + paths: [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/fields/fields.yml', + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/manifest.yml', + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/transform.yml', + ], + assetsMap: new Map([ + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/fields/fields.yml', + sourceData.FIELDS, + ], + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/manifest.yml', + sourceData.MANIFEST, + ], + [ + 'endpoint-0.16.0-dev.0/elasticsearch/transform/metadata_current/transform.yml', + sourceData.TRANSFORM, + ], + ]), + } as unknown as PackageInstallContext, esClient, savedObjectsClient, logger: loggerMock.create(), diff --git a/x-pack/plugins/fleet/server/services/epm/fields/field.ts b/x-pack/plugins/fleet/server/services/epm/fields/field.ts index 495c0ddcaaf8a..859752d5dead1 100644 --- a/x-pack/plugins/fleet/server/services/epm/fields/field.ts +++ b/x-pack/plugins/fleet/server/services/epm/fields/field.ts @@ -7,8 +7,8 @@ import { safeLoad } from 'js-yaml'; -import type { PackageInfo } from '../../../types'; -import { getAssetsData } from '../packages/assets'; +import type { PackageInstallContext } from '../../../../common/types'; +import { getAssetsDataFromAssetsMap } from '../packages/assets'; // This should become a copy of https://github.com/elastic/beats/blob/d9a4c9c240a9820fab15002592e5bb6db318543b/libbeat/mapping/field.go#L39 export interface Field { @@ -296,11 +296,16 @@ export const isFields = (path: string) => { */ export const loadFieldsFromYaml = ( - pkg: Pick, + packageInstallContext: PackageInstallContext, datasetName?: string ): Field[] => { // Fetch all field definition files - const fieldDefinitionFiles = getAssetsData(pkg, isFields, datasetName); + const fieldDefinitionFiles = getAssetsDataFromAssetsMap( + packageInstallContext.packageInfo, + packageInstallContext.assetsMap, + isFields, + datasetName + ); return fieldDefinitionFiles.reduce((acc, file) => { // Make sure it is defined as it is optional. Should never happen. if (file.buffer) { diff --git a/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts b/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts index 27be17ef2a170..47c4da20b9d05 100644 --- a/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts @@ -22,7 +22,7 @@ import { partition } from 'lodash'; import type { IAssignmentService, ITagsClient } from '@kbn/saved-objects-tagging-plugin/server'; import { PACKAGES_SAVED_OBJECT_TYPE } from '../../../../../common'; -import { getAsset, getPathParts } from '../../archive'; +import { getAssetFromAssetsMap, getPathParts } from '../../archive'; import { KibanaAssetType, KibanaSavedObjectType } from '../../../../types'; import type { AssetType, @@ -32,6 +32,7 @@ import type { PackageSpecTags, } from '../../../../types'; import { savedObjectTypes } from '../../packages'; +import type { PackageInstallContext } from '../../../../../common/types'; import { indexPatternTypes, getIndexPatternSavedObjects, @@ -88,13 +89,6 @@ const AssetFilters: Record ArchiveAsse [KibanaAssetType.indexPattern]: removeReservedIndexPatterns, }; -export async function getKibanaAsset(key: string): Promise { - const buffer = getAsset(key); - - // cache values are buffers. convert to string / JSON - return JSON.parse(buffer.toString('utf8')); -} - export function createSavedObjectKibanaAsset(asset: ArchiveAsset): SavedObjectToBe { // convert that to an object const so: Partial = { @@ -177,6 +171,7 @@ export async function installKibanaAssetsAndReferences({ logger, pkgName, pkgTitle, + packageInstallContext, paths, installedPkg, spaceId, @@ -189,12 +184,13 @@ export async function installKibanaAssetsAndReferences({ logger: Logger; pkgName: string; pkgTitle: string; + packageInstallContext: PackageInstallContext; paths: string[]; installedPkg?: SavedObject; spaceId: string; assetTags?: PackageSpecTags[]; }) { - const kibanaAssets = await getKibanaAssets(paths); + const kibanaAssets = await getKibanaAssets(packageInstallContext); if (installedPkg) await deleteKibanaSavedObjectsAssets({ savedObjectsClient, installedPkg }); // save new kibana refs before installing the assets const installedKibanaAssetsRefs = await saveKibanaAssetsRefs( @@ -241,7 +237,7 @@ export const deleteKibanaInstalledRefs = async ( }); }; export async function getKibanaAssets( - paths: string[] + packageInstallContext: PackageInstallContext ): Promise> { const kibanaAssetTypes = Object.values(KibanaAssetType); const isKibanaAssetType = (path: string) => { @@ -250,7 +246,7 @@ export async function getKibanaAssets( return parts.service === 'kibana' && (kibanaAssetTypes as string[]).includes(parts.type); }; - const filteredPaths = paths + const filteredPaths = packageInstallContext.paths .filter(isKibanaAssetType) .map<[string, AssetParts]>((path) => [path, getPathParts(path)]); @@ -258,7 +254,16 @@ export async function getKibanaAssets( for (const assetType of kibanaAssetTypes) { const matching = filteredPaths.filter(([path, parts]) => parts.type === assetType); - assetArrays.push(Promise.all(matching.map(([path]) => path).map(getKibanaAsset))); + assetArrays.push( + Promise.all( + matching.map(([path]) => { + const buffer = getAssetFromAssetsMap(packageInstallContext.assetsMap, path); + + // cache values are buffers. convert to string / JSON + return JSON.parse(buffer.toString('utf8')); + }) + ) + ); } const resolvedAssets = await Promise.all(assetArrays); diff --git a/x-pack/plugins/fleet/server/services/epm/package_service.test.ts b/x-pack/plugins/fleet/server/services/epm/package_service.test.ts index 9da46439a53c7..8bd2ace1d760c 100644 --- a/x-pack/plugins/fleet/server/services/epm/package_service.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/package_service.test.ts @@ -34,6 +34,9 @@ import * as epmPackagesInstall from './packages/install'; import * as epmRegistry from './registry'; import * as epmTransformsInstall from './elasticsearch/transform/install'; import * as epmArchiveParse from './archive/parse'; +import { getEsPackage } from './archive/storage'; + +jest.mock('./archive/storage'); const mockGetAuthzFromRequest = getAuthzFromRequest as jest.Mock; const testKeys = [ @@ -141,8 +144,9 @@ function getTest( spy: jest.spyOn(epmTransformsInstall, 'installTransforms'), spyArgs: [ { - installablePackage: pkg, - paths, + packageInstallContext: expect.objectContaining({ + paths, + }), esClient: mocks.esClient, savedObjectsClient: mocks.soClient, logger: mocks.logger, @@ -257,6 +261,12 @@ describe('PackageService', () => { testKey ); spy.mockResolvedValue(spyResponse); + if (testKey === 'reinstallEsAssets') { + jest + .mocked(epmPackagesGet.getInstallation) + .mockResolvedValue({ name: 'package name' } as any); + jest.mocked(getEsPackage).mockResolvedValue({ name: 'package name' } as any); + } await expect(method(...args)).resolves.toEqual(expectedReturnValue); expect(spy).toHaveBeenCalledWith(...spyArgs); @@ -277,6 +287,12 @@ describe('PackageService', () => { testKey ); spy.mockResolvedValue(spyResponse); + if (testKey === 'reinstallEsAssets') { + jest + .mocked(epmPackagesGet.getInstallation) + .mockResolvedValue({ name: 'package name' } as any); + jest.mocked(getEsPackage).mockResolvedValue({ name: 'package name' } as any); + } await expect(method(...args)).resolves.toEqual(expectedReturnValue); expect(spy).toHaveBeenCalledWith(...spyArgs); diff --git a/x-pack/plugins/fleet/server/services/epm/package_service.ts b/x-pack/plugins/fleet/server/services/epm/package_service.ts index a535af9636d1a..b7174fa7883e7 100644 --- a/x-pack/plugins/fleet/server/services/epm/package_service.ts +++ b/x-pack/plugins/fleet/server/services/epm/package_service.ts @@ -31,7 +31,7 @@ import type { } from '../../types'; import type { FleetAuthzRouteConfig } from '../security/types'; import { checkSuperuser, doesNotHaveRequiredFleetAuthz, getAuthzFromRequest } from '../security'; -import { FleetError, FleetUnauthorizedError } from '../../errors'; +import { FleetError, FleetUnauthorizedError, PackageNotFoundError } from '../../errors'; import { INSTALL_PACKAGES_AUTHZ, READ_PACKAGE_INFO_AUTHZ } from '../../routes/epm'; import type { InstallResult } from '../../../common'; @@ -43,6 +43,7 @@ import { fetchFindLatestPackageOrThrow, getPackage } from './registry'; import { installTransforms, isTransform } from './elasticsearch/transform/install'; import { ensureInstalledPackage, getInstallation, getPackages, installPackage } from './packages'; import { generatePackageInfoFromArchiveBuffer } from './archive'; +import { getEsPackage } from './archive/storage'; export type InstalledAssetType = EsAssetReference; @@ -265,9 +266,31 @@ class PackageClientImpl implements PackageClient { async #reinstallTransforms(packageInfo: InstallablePackage, paths: string[]) { const authorizationHeader = this.getAuthorizationHeader(); + const installation = await this.getInstallation(packageInfo.name); + + if (!installation) { + throw new PackageNotFoundError(`Installation not found for package: ${packageInfo.name}`); + } + + const esPackage = await getEsPackage( + packageInfo.name, + packageInfo.version, + installation.package_assets ?? [], + this.internalSoClient + ); + + if (!esPackage) { + throw new PackageNotFoundError(`ES package not found for package: ${packageInfo.name}`); + } + + const { assetsMap } = esPackage; + const { installedTransforms } = await installTransforms({ - installablePackage: packageInfo, - paths, + packageInstallContext: { + assetsMap, + packageInfo, + paths, + }, esClient: this.internalEsClient, savedObjectsClient: this.internalSoClient, logger: this.logger, diff --git a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts index 4402db72b86a9..3b06d9b2b3cd8 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts @@ -22,7 +22,7 @@ import { PACKAGES_SAVED_OBJECT_TYPE } from '../../../../common'; import { appContextService } from '../../app_context'; import { createAppContextStartContractMock } from '../../../mocks'; -import { saveArchiveEntries } from '../archive/storage'; +import { saveArchiveEntriesFromAssetsMap } from '../archive/storage'; import { installILMPolicy } from '../elasticsearch/ilm/install'; import { installIlmForDataStream } from '../elasticsearch/datastream_ilm/install'; @@ -78,7 +78,7 @@ describe('_installPackage', () => { esReferences: [], installedIlms: [], }); - jest.mocked(saveArchiveEntries).mockResolvedValue({ + jest.mocked(saveArchiveEntriesFromAssetsMap).mockResolvedValue({ saved_objects: [], }); jest.mocked(restartInstallation).mockReset(); @@ -103,18 +103,21 @@ describe('_installPackage', () => { savedObjectsImporter: jest.fn(), esClient, logger: loggerMock.create(), - paths: [], - packageInfo: { - title: 'title', - name: 'xyz', - version: '4.5.6', - description: 'test', - type: 'integration', - categories: ['cloud', 'custom'], - format_version: 'string', - release: 'experimental', - conditions: { kibana: { version: 'x.y.z' } }, - owner: { github: 'elastic/fleet' }, + packageInstallContext: { + assetsMap: new Map(), + paths: [], + packageInfo: { + title: 'title', + name: 'xyz', + version: '4.5.6', + description: 'test', + type: 'integration', + categories: ['cloud', 'custom'], + format_version: 'string', + release: 'experimental', + conditions: { kibana: { version: 'x.y.z' } }, + owner: { github: 'elastic/fleet' }, + }, }, installType: 'install', installSource: 'registry', @@ -160,18 +163,21 @@ describe('_installPackage', () => { savedObjectsImporter: jest.fn(), esClient, logger: loggerMock.create(), - paths: [], - packageInfo: { - title: 'title', - name: 'xyz', - version: '4.5.6', - description: 'test', - type: 'integration', - categories: ['cloud', 'custom'], - format_version: 'string', - release: 'experimental', - conditions: { kibana: { version: 'x.y.z' } }, - owner: { github: 'elastic/fleet' }, + packageInstallContext: { + assetsMap: new Map(), + paths: [], + packageInfo: { + title: 'title', + name: 'xyz', + version: '4.5.6', + description: 'test', + type: 'integration', + categories: ['cloud', 'custom'], + format_version: 'string', + release: 'experimental', + conditions: { kibana: { version: 'x.y.z' } }, + owner: { github: 'elastic/fleet' }, + }, }, installType: 'install', installSource: 'registry', @@ -219,18 +225,21 @@ describe('_installPackage', () => { savedObjectsImporter: jest.fn(), esClient, logger: loggerMock.create(), - paths: [], - packageInfo: { - title: 'title', - name: 'xyz', - version: '4.5.6', - description: 'test', - type: 'integration', - categories: ['cloud', 'custom'], - format_version: 'string', - release: 'experimental', - conditions: { kibana: { version: 'x.y.z' } }, - owner: { github: 'elastic/fleet' }, + packageInstallContext: { + packageInfo: { + title: 'title', + name: 'xyz', + version: '4.5.6', + description: 'test', + type: 'integration', + categories: ['cloud', 'custom'], + format_version: 'string', + release: 'experimental', + conditions: { kibana: { version: 'x.y.z' } }, + owner: { github: 'elastic/fleet' }, + } as any, + assetsMap: new Map(), + paths: [], }, installType: 'install', installSource: 'registry', @@ -288,12 +297,15 @@ describe('_installPackage', () => { savedObjectsImporter: jest.fn(), esClient, logger: loggerMock.create(), - paths: [], - packageInfo: { - name: mockInstalledPackageSo.attributes.name, - version: mockInstalledPackageSo.attributes.version, - title: mockInstalledPackageSo.attributes.name, - } as any, + packageInstallContext: { + paths: [], + assetsMap: new Map(), + packageInfo: { + name: mockInstalledPackageSo.attributes.name, + version: mockInstalledPackageSo.attributes.version, + title: mockInstalledPackageSo.attributes.name, + } as any, + }, installedPkg: { ...mockInstalledPackageSo, attributes: { @@ -319,12 +331,15 @@ describe('_installPackage', () => { savedObjectsImporter: jest.fn(), esClient, logger: loggerMock.create(), - paths: [], - packageInfo: { - name: mockInstalledPackageSo.attributes.name, - version: mockInstalledPackageSo.attributes.version, - title: mockInstalledPackageSo.attributes.name, - } as any, + packageInstallContext: { + paths: [], + assetsMap: new Map(), + packageInfo: { + name: mockInstalledPackageSo.attributes.name, + version: mockInstalledPackageSo.attributes.version, + title: mockInstalledPackageSo.attributes.name, + } as any, + }, installedPkg: { ...mockInstalledPackageSo, attributes: { @@ -345,12 +360,15 @@ describe('_installPackage', () => { savedObjectsImporter: jest.fn(), esClient, logger: loggerMock.create(), - paths: [], - packageInfo: { - name: mockInstalledPackageSo.attributes.name, - version: mockInstalledPackageSo.attributes.version, - title: mockInstalledPackageSo.attributes.name, - } as any, + packageInstallContext: { + paths: [], + assetsMap: new Map(), + packageInfo: { + name: mockInstalledPackageSo.attributes.name, + version: mockInstalledPackageSo.attributes.version, + title: mockInstalledPackageSo.attributes.name, + } as any, + }, installedPkg: { ...mockInstalledPackageSo, attributes: { diff --git a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts index 8f45e8eee6b13..fdcf51db71867 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts @@ -17,7 +17,7 @@ import { SavedObjectsErrorHelpers } from '@kbn/core/server'; import type { IAssignmentService, ITagsClient } from '@kbn/saved-objects-tagging-plugin/server'; import type { HTTPAuthorizationHeader } from '../../../../common/http_authorization_header'; - +import type { PackageInstallContext } from '../../../../common/types'; import { getNormalizedDataStreams } from '../../../../common/services'; import { @@ -31,7 +31,6 @@ import type { AssetReference, Installation, InstallType, - InstallablePackage, InstallSource, PackageAssetReference, PackageVerificationResult, @@ -45,7 +44,7 @@ import { updateCurrentWriteIndices } from '../elasticsearch/template/template'; import { installTransforms } from '../elasticsearch/transform/install'; import { installMlModel } from '../elasticsearch/ml_model'; import { installIlmForDataStream } from '../elasticsearch/datastream_ilm/install'; -import { saveArchiveEntries } from '../archive/storage'; +import { saveArchiveEntriesFromAssetsMap } from '../archive/storage'; import { ConcurrentInstallOperationError } from '../../../errors'; import { appContextService, packagePolicyService } from '../..'; @@ -70,8 +69,7 @@ export async function _installPackage({ esClient, logger, installedPkg, - paths, - packageInfo, + packageInstallContext, installType, installSource, spaceId, @@ -88,8 +86,7 @@ export async function _installPackage({ esClient: ElasticsearchClient; logger: Logger; installedPkg?: SavedObject; - paths: string[]; - packageInfo: InstallablePackage; + packageInstallContext: PackageInstallContext; installType: InstallType; installSource: InstallSource; spaceId: string; @@ -99,7 +96,9 @@ export async function _installPackage({ ignoreMappingUpdateErrors?: boolean; skipDataStreamRollover?: boolean; }): Promise { + const { packageInfo, paths } = packageInstallContext; const { name: pkgName, version: pkgVersion, title: pkgTitle } = packageInfo; + try { // if some installation already exists if (installedPkg) { @@ -164,6 +163,7 @@ export async function _installPackage({ savedObjectTagClient, pkgName, pkgTitle, + packageInstallContext, paths, installedPkg, logger, @@ -187,13 +187,12 @@ export async function _installPackage({ appContextService.getConfig()?.internal?.disableILMPolicies ?? false; if (!isILMPoliciesDisabled) { esReferences = await withPackageSpan('Install ILM policies', () => - installILMPolicy(packageInfo, paths, esClient, savedObjectsClient, logger, esReferences) + installILMPolicy(packageInstallContext, esClient, savedObjectsClient, logger, esReferences) ); logger.debug(`Package install - Installing Data Stream ILM policies`); ({ esReferences } = await withPackageSpan('Install Data Stream ILM policies', () => installIlmForDataStream( - packageInfo, - paths, + packageInstallContext, esClient, savedObjectsClient, logger, @@ -205,7 +204,7 @@ export async function _installPackage({ // installs ml models logger.debug(`Package install - installing ML models`); esReferences = await withPackageSpan('Install ML models', () => - installMlModel(packageInfo, paths, esClient, savedObjectsClient, logger, esReferences) + installMlModel(packageInstallContext, esClient, savedObjectsClient, logger, esReferences) ); let indexTemplates: IndexTemplateEntry[] = []; @@ -217,8 +216,7 @@ export async function _installPackage({ const { installedTemplates, esReferences: templateEsReferences } = await installIndexTemplatesAndPipelines({ installedPkg: installedPkg ? installedPkg.attributes : undefined, - packageInfo, - paths, + packageInstallContext, esClient, savedObjectsClient, logger, @@ -249,8 +247,7 @@ export async function _installPackage({ const { installedTemplates, esReferences: templateEsReferences } = await installIndexTemplatesAndPipelines({ installedPkg: installedPkg ? installedPkg.attributes : undefined, - packageInfo, - paths, + packageInstallContext, esClient, savedObjectsClient, logger, @@ -280,8 +277,7 @@ export async function _installPackage({ logger.debug(`Package install - Installing transforms`); ({ esReferences } = await withPackageSpan('Install transforms', () => installTransforms({ - installablePackage: packageInfo, - paths, + packageInstallContext, esClient, savedObjectsClient, logger, @@ -331,9 +327,10 @@ export async function _installPackage({ const installedKibanaAssetsRefs = await kibanaAssetPromise; logger.debug(`Package install - Updating archive entries`); const packageAssetResults = await withPackageSpan('Update archive entries', () => - saveArchiveEntries({ + saveArchiveEntriesFromAssetsMap({ savedObjectsClient, - paths, + assetsMap: packageInstallContext.assetsMap, + paths: packageInstallContext.paths, packageInfo, installSource, }) diff --git a/x-pack/plugins/fleet/server/services/epm/packages/assets.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/assets.test.ts index 1ed525a71b14f..fdddadddd46ec 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/assets.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/assets.test.ts @@ -7,19 +7,9 @@ import type { PackageInfo } from '../../../types'; -import { getArchiveFilelist } from '../archive/cache'; +import { getAssetsFromAssetsMap } from './assets'; -import { getAssets } from './assets'; - -jest.mock('../archive/cache', () => { - return { - getArchiveFilelist: jest.fn(), - }; -}); - -const mockedGetArchiveFilelist = getArchiveFilelist as jest.Mock; - -test('testGetAssets integration pkg', () => { +test('test getAssetsFromAssetsMap integration pkg', () => { const tests = [ { package: { @@ -60,27 +50,41 @@ test('testGetAssets integration pkg', () => { }, ]; - mockedGetArchiveFilelist.mockImplementation(() => [ - 'coredns-1.0.1/data_stream/log/elasticsearch/ingest-pipeline/pipeline-plaintext.json', - 'coredns-1.0.1/data_stream/log/elasticsearch/ingest-pipeline/pipeline-json.json', + const assetsMap = new Map([ + [ + 'coredns-1.0.1/data_stream/log/elasticsearch/ingest-pipeline/pipeline-plaintext.json', + Buffer.from('{}'), + ], + [ + 'coredns-1.0.1/data_stream/log/elasticsearch/ingest-pipeline/pipeline-json.json', + Buffer.from('{}'), + ], ]); + for (const value of tests) { // as needed to pretend it is an InstallablePackage - const assets = getAssets(value.package as PackageInfo, value.filter, value.dataset); + const assets = getAssetsFromAssetsMap( + value.package as PackageInfo, + assetsMap, + value.filter, + value.dataset + ); expect(assets).toStrictEqual(value.expected); } }); test('testGetAssets input pkg', () => { - mockedGetArchiveFilelist.mockImplementation(() => [ - 'input_package_upgrade-1.0.0/agent/input/input.yml.hbs', - 'input_package_upgrade-1.0.0/changelog.yml', - 'input_package_upgrade-1.0.0/docs/README.md', - 'input_package_upgrade-1.0.0/fields/input.yml', - 'input_package_upgrade-1.0.0/img/sample-logo.svg', - 'input_package_upgrade-1.0.0/img/sample-screenshot.png', - 'input_package_upgrade-1.0.0/manifest.yml', - ]); + const assetsMap = new Map( + [ + 'input_package_upgrade-1.0.0/agent/input/input.yml.hbs', + 'input_package_upgrade-1.0.0/changelog.yml', + 'input_package_upgrade-1.0.0/docs/README.md', + 'input_package_upgrade-1.0.0/fields/input.yml', + 'input_package_upgrade-1.0.0/img/sample-logo.svg', + 'input_package_upgrade-1.0.0/img/sample-screenshot.png', + 'input_package_upgrade-1.0.0/manifest.yml', + ].map((path) => [path, Buffer.from('{}')]) + ); const tests = [ { @@ -102,7 +106,12 @@ test('testGetAssets input pkg', () => { for (const value of tests) { // as needed to pretend it is an InstallablePackage - const assets = getAssets(value.package as PackageInfo, value.filter, value.dataset); + const assets = getAssetsFromAssetsMap( + value.package as PackageInfo, + assetsMap, + value.filter, + value.dataset + ); expect(assets).toStrictEqual(value.expected); } }); diff --git a/x-pack/plugins/fleet/server/services/epm/packages/assets.ts b/x-pack/plugins/fleet/server/services/epm/packages/assets.ts index 89bd9b25af75a..a82b5c0d103b2 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/assets.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/assets.ts @@ -5,8 +5,8 @@ * 2.0. */ -import type { PackageInfo } from '../../../types'; -import { getArchiveFilelist, getAsset } from '../archive'; +import type { AssetsMap, PackageInfo } from '../../../types'; +import { getAssetFromAssetsMap } from '../archive'; import type { ArchiveEntry } from '../archive'; const maybeFilterByDataset = @@ -21,18 +21,13 @@ const maybeFilterByDataset = return comparePaths.some((comparePath) => path.includes(comparePath)); }; -// paths from RegistryPackage are routes to the assets on EPR -// e.g. `/package/nginx/1.2.0/data_stream/access/fields/fields.yml` -// paths for ArchiveEntry are routes to the assets in the archive -// e.g. `nginx-1.2.0/data_stream/access/fields/fields.yml` -// RegistryPackage paths have a `/package/` prefix compared to ArchiveEntry paths -// and different package and version structure -export function getAssets( +export function getAssetsFromAssetsMap( packageInfo: Pick, + assetsMap: AssetsMap, filter = (path: string): boolean => true, datasetName?: string ): string[] { - const paths = getArchiveFilelist(packageInfo); + const paths = [...assetsMap.keys()]; if (!paths || paths.length === 0) return []; @@ -46,15 +41,15 @@ export function getAssets( return assets.filter(filter); } -export function getAssetsData( +export function getAssetsDataFromAssetsMap( packageInfo: Pick, + assetsMap: AssetsMap, filter = (path: string): boolean => true, datasetName?: string -): ArchiveEntry[] { - // Gather all asset data - const assets = getAssets(packageInfo, filter, datasetName); +) { + const assets = getAssetsFromAssetsMap(packageInfo, assetsMap, filter, datasetName); const entries: ArchiveEntry[] = assets.map((path) => { - const buffer = getAsset(path); + const buffer = getAssetFromAssetsMap(assetsMap, path); return { path, buffer }; }); diff --git a/x-pack/plugins/fleet/server/services/epm/packages/custom_integrations/assets/cache.ts b/x-pack/plugins/fleet/server/services/epm/packages/custom_integrations/assets/cache.ts deleted file mode 100644 index e44f6e2b522d7..0000000000000 --- a/x-pack/plugins/fleet/server/services/epm/packages/custom_integrations/assets/cache.ts +++ /dev/null @@ -1,24 +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 { setArchiveEntry, setArchiveFilelist } from '../../../archive'; - -interface Assets { - path: string; - content: Buffer; -} -export const cacheAssets = (assets: Assets[], name: string, version: string) => { - const paths = assets.map((asset) => asset.path); - - setArchiveFilelist({ name, version }, paths); - - assets.forEach((asset) => { - setArchiveEntry(asset.path, asset.content); - }); - - return paths; -}; diff --git a/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts index b261ccd65b5f9..66e220c328b5f 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts @@ -425,11 +425,53 @@ test: invalid manifest page: 1, }); - soClient.get.mockResolvedValue({ - id: 'elasticsearch', - attributes: {}, - references: [], - type: PACKAGES_SAVED_OBJECT_TYPE, + soClient.get.mockImplementation((type) => { + if (type === 'epm-packages-assets') { + return Promise.resolve({ + attributes: { + data_utf8: ` +name: elasticsearch +version: 0.0.1 +title: Elastic +description: Elasticsearch description`, + }, + } as any); + } else { + return Promise.resolve({ + id: 'elasticsearch', + attributes: { + name: 'elasticsearch', + version: '0.0.1', + install_source: 'upload', + package_assets: [], + data_utf8: ` + name: elasticsearch + version: 0.0.1 + title: Elastic + description: Elasticsearch description`, + }, + }); + } + }); + + soClient.bulkGet.mockResolvedValue({ + saved_objects: [ + { + id: 'test', + references: [], + type: 'epm-package-assets', + attributes: { + asset_path: 'elasticsearch-0.0.1/manifest.yml', + data_utf8: ` +name: elasticsearch +version: 0.0.1 +title: Elastic +description: Elasticsearch description +format_version: 0.0.1 +owner: elastic`, + }, + }, + ], }); await getPackages({ savedObjectsClient: soClient }); @@ -783,6 +825,7 @@ test: invalid manifest } as RegistryPackage); MockRegistry.getPackage.mockResolvedValue({ paths: [], + assetsMap: new Map(), packageInfo: { name: 'my-package', version: '1.0.0', diff --git a/x-pack/plugins/fleet/server/services/epm/packages/get.ts b/x-pack/plugins/fleet/server/services/epm/packages/get.ts index a3ed5f62d7f1e..614fc8d636816 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/get.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/get.ts @@ -33,6 +33,7 @@ import type { PackageList, InstalledPackage, PackageSpecManifest, + AssetsMap, } from '../../../../common/types'; import { PACKAGES_SAVED_OBJECT_TYPE } from '../../../constants'; import type { @@ -53,7 +54,6 @@ import { appContextService } from '../..'; import * as Registry from '../registry'; import type { PackageAsset } from '../archive/storage'; import { getEsPackage } from '../archive/storage'; -import { getArchivePackage } from '../archive'; import { normalizeKuery } from '../../saved_object'; import { auditLoggingService } from '../../audit_logging'; @@ -289,7 +289,7 @@ export async function getPackageSavedObjects( return result; } -export async function getInstalledPackageSavedObjects( +async function getInstalledPackageSavedObjects( savedObjectsClient: SavedObjectsClientContract, options: Omit ) { @@ -544,16 +544,6 @@ export async function getPackageFromSource(options: { // If the package is installed if (installedPkg && installedPkg.version === pkgVersion) { const { install_source: pkgInstallSource } = installedPkg; - // check cache - res = getArchivePackage({ - name: pkgName, - version: pkgVersion, - }); - - if (res) { - logger.debug(`retrieved installed package ${pkgName}-${pkgVersion} from cache`); - } - if (!res && installedPkg.package_assets) { res = await getEsPackage( pkgName, @@ -582,20 +572,14 @@ export async function getPackageFromSource(options: { } } } else { - res = getArchivePackage({ name: pkgName, version: pkgVersion }); - - if (res) { - logger.debug(`retrieved package ${pkgName}-${pkgVersion} from cache`); - } else { - try { - res = await Registry.getPackage(pkgName, pkgVersion, { ignoreUnverified }); - logger.debug(`retrieved package ${pkgName}-${pkgVersion} from registry`); - } catch (err) { - if (err instanceof RegistryResponseError && err.status === 404) { - res = await Registry.getBundledArchive(pkgName, pkgVersion); - } else { - throw err; - } + try { + res = await Registry.getPackage(pkgName, pkgVersion, { ignoreUnverified }); + logger.debug(`retrieved package ${pkgName}-${pkgVersion} from registry`); + } catch (err) { + if (err instanceof RegistryResponseError && err.status === 404) { + res = await Registry.getBundledArchive(pkgName, pkgVersion); + } else { + throw err; } } } @@ -634,7 +618,7 @@ export async function getInstallationObject(options: { return installation; } -export async function getInstallationObjects(options: { +async function getInstallationObjects(options: { savedObjectsClient: SavedObjectsClientContract; pkgNames: string[]; }) { @@ -665,6 +649,37 @@ export async function getInstallation(options: { return savedObject?.attributes; } +/** + * Return an installed package with his related assets + */ +export async function getInstalledPackageWithAssets(options: { + savedObjectsClient: SavedObjectsClientContract; + pkgName: string; + logger?: Logger; +}) { + const installation = await getInstallation(options); + if (!installation) { + return; + } + const esPackage = await getEsPackage( + installation.name, + installation.version, + installation.package_assets ?? [], + options.savedObjectsClient + ); + + if (!esPackage) { + return; + } + + return { + installation, + assetsMap: esPackage.assetsMap, + packageInfo: esPackage.packageInfo, + paths: esPackage.paths, + }; +} + export async function getInstallationsByName(options: { savedObjectsClient: SavedObjectsClientContract; pkgNames: string[]; @@ -682,3 +697,33 @@ function sortByName(a: { name: string }, b: { name: string }) { return 0; } } + +/** + * Return assets for an installed package from ES or from the registry otherwise + */ +export async function getPackageAssetsMap({ + savedObjectsClient, + packageInfo, + logger, +}: { + savedObjectsClient: SavedObjectsClientContract; + packageInfo: PackageInfo; + logger: Logger; +}) { + const installedPackageWithAssets = await getInstalledPackageWithAssets({ + savedObjectsClient, + pkgName: packageInfo.name, + logger, + }); + + let assetsMap: AssetsMap | undefined; + if (installedPackageWithAssets?.installation.version !== packageInfo.version) { + // Try to get from registry + const pkg = await Registry.getPackage(packageInfo.name, packageInfo.version); + assetsMap = pkg.assetsMap; + } else { + assetsMap = installedPackageWithAssets.assetsMap; + } + + return assetsMap; +} diff --git a/x-pack/plugins/fleet/server/services/epm/packages/get_template_inputs.ts b/x-pack/plugins/fleet/server/services/epm/packages/get_template_inputs.ts index 04c65535ad0ad..e81e280c4b943 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/get_template_inputs.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/get_template_inputs.ts @@ -11,7 +11,7 @@ import { safeDump } from 'js-yaml'; import { packageToPackagePolicy } from '../../../../common/services/package_to_package_policy'; import { getInputsWithStreamIds, _compilePackagePolicyInputs } from '../../package_policy'; - +import { appContextService } from '../../app_context'; import type { PackageInfo, NewPackagePolicy, @@ -22,6 +22,7 @@ import type { import { _sortYamlKeys } from '../../../../common/services/full_agent_policy_to_yaml'; import { getPackageInfo } from '.'; +import { getPackageAssetsMap } from './get'; type Format = 'yml' | 'json'; @@ -89,11 +90,16 @@ export async function getTemplateInputs( } const emptyPackagePolicy = packageToPackagePolicy(packageInfo, ''); const inputsWithStreamIds = getInputsWithStreamIds(emptyPackagePolicy, undefined, true); - + const assetsMap = await getPackageAssetsMap({ + logger: appContextService.getLogger(), + packageInfo, + savedObjectsClient: soClient, + }); const compiledInputs = await _compilePackagePolicyInputs( packageInfo, emptyPackagePolicy.vars || {}, - inputsWithStreamIds + inputsWithStreamIds, + assetsMap ); const packagePolicyWithInputs: NewPackagePolicy = { ...emptyPackagePolicy, diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/install.test.ts index 08e006289c7ea..fc85609c4703c 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install.test.ts @@ -77,7 +77,12 @@ jest.mock('../archive', () => { generatePackageInfoFromArchiveBuffer: jest.fn(() => Promise.resolve({ packageInfo: { name: 'apache', version: '1.3.0' } }) ), - unpackBufferToCache: jest.fn(), + unpackBufferToAssetsMap: jest.fn(() => + Promise.resolve({ + assetsMap: new Map(), + paths: [], + }) + ), setPackageInfo: jest.fn(), deleteVerificationResult: jest.fn(), }; @@ -553,7 +558,9 @@ describe('handleInstallPackageFailure', () => { expect(install._installPackage).toBeCalledTimes(1); expect(install._installPackage).toBeCalledWith( expect.objectContaining({ - packageInfo: expect.objectContaining({ name: pkgName, version: '1.0.0' }), + packageInstallContext: expect.objectContaining({ + packageInfo: expect.objectContaining({ name: pkgName, version: '1.0.0' }), + }), }) ); }); @@ -597,7 +604,9 @@ describe('handleInstallPackageFailure', () => { expect(install._installPackage).toBeCalledTimes(1); expect(install._installPackage).toBeCalledWith( expect.objectContaining({ - packageInfo: expect.objectContaining({ name: pkgName, version: '1.0.0' }), + packageInstallContext: expect.objectContaining({ + packageInfo: expect.objectContaining({ name: pkgName, version: '1.0.0' }), + }), }) ); }); diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install.ts b/x-pack/plugins/fleet/server/services/epm/packages/install.ts index 72c4500047e83..8dc9672f01ffc 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install.ts @@ -16,25 +16,16 @@ import type { Logger, } from '@kbn/core/server'; import { SavedObjectsErrorHelpers } from '@kbn/core/server'; - import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common/constants'; - import pRetry from 'p-retry'; - import { uniqBy } from 'lodash'; - import type { LicenseType } from '@kbn/licensing-plugin/server'; -import type { PackageDataStreamTypes } from '../../../../common/types'; - +import type { PackageDataStreamTypes, PackageInstallContext } from '../../../../common/types'; import type { HTTPAuthorizationHeader } from '../../../../common/http_authorization_header'; - import { isPackagePrerelease, getNormalizedDataStreams } from '../../../../common/services'; - import { FLEET_INSTALL_FORMAT_VERSION } from '../../../constants/fleet_es_assets'; - import { generateESIndexPatterns } from '../elasticsearch/template/template'; - import type { ArchivePackage, BulkInstallPackageInfo, @@ -62,7 +53,6 @@ import { PackagePolicyValidationError, ConcurrentInstallOperationError, FleetUnauthorizedError, - PackageInvalidArchiveError, PackageNotFoundError, } from '../../../errors'; import { PACKAGES_SAVED_OBJECT_TYPE, MAX_TIME_COMPLETE_INSTALL } from '../../../constants'; @@ -72,29 +62,22 @@ import * as Registry from '../registry'; import { setPackageInfo, generatePackageInfoFromArchiveBuffer, - unpackBufferToCache, deleteVerificationResult, - getArchiveFilelist, + unpackBufferToAssetsMap, } from '../archive'; import { toAssetReference } from '../kibana/assets/install'; import type { ArchiveAsset } from '../kibana/assets/install'; - import type { PackageUpdateEvent } from '../../upgrade_sender'; import { sendTelemetryEvents, UpdateEventType } from '../../upgrade_sender'; - import { prepareToInstallPipelines } from '../elasticsearch/ingest_pipeline'; - import { prepareToInstallTemplates } from '../elasticsearch/template/install'; - import { auditLoggingService } from '../../audit_logging'; - import { getFilteredInstallPackages } from '../filtered_packages'; import { formatVerificationResultForSO } from './package_verification'; - import { getInstallation, getInstallationObject } from '.'; import { removeInstallation } from './remove'; -import { getPackageSavedObjects } from './get'; +import { getInstalledPackageWithAssets, getPackageSavedObjects } from './get'; import { _installPackage } from './_install_package'; import { removeOldAssets } from './cleanup'; import { getBundledPackageByPkgKey } from './bundled_packages'; @@ -102,7 +85,6 @@ import { withPackageSpan } from './utils'; import { convertStringToTitle, generateDescription } from './custom_integrations/utils'; import { INITIAL_VERSION } from './custom_integrations/constants'; import { createAssets } from './custom_integrations'; -import { cacheAssets } from './custom_integrations/assets/cache'; import { generateDatastreamEntries } from './custom_integrations/assets/dataset/utils'; import { checkForNamingCollision } from './custom_integrations/validation/check_naming_collision'; import { checkDatasetsNameFormat } from './custom_integrations/validation/check_dataset_name_format'; @@ -417,12 +399,19 @@ async function installPackageFromRegistry({ } // get latest package version and requested version in parallel for performance - const [latestPackage, { paths, packageInfo, verificationResult }] = await Promise.all([ - latestPkg ? Promise.resolve(latestPkg) : queryLatest(), - Registry.getPackage(pkgName, pkgVersion, { - ignoreUnverified: force && !neverIgnoreVerificationError, - }), - ]); + const [latestPackage, { paths, packageInfo, assetsMap, verificationResult }] = + await Promise.all([ + latestPkg ? Promise.resolve(latestPkg) : queryLatest(), + Registry.getPackage(pkgName, pkgVersion, { + ignoreUnverified: force && !neverIgnoreVerificationError, + }), + ]); + + const packageInstallContext: PackageInstallContext = { + packageInfo, + assetsMap, + paths, + }; // let the user install if using the force flag or needing to reinstall or install a previous version due to failed update const installOutOfDateVersionOk = @@ -453,7 +442,7 @@ async function installPackageFromRegistry({ esClient, spaceId, force, - packageInfo, + packageInstallContext, paths, verificationResult, authorizationHeader, @@ -489,7 +478,7 @@ async function installPackageCommon(options: { esClient: ElasticsearchClient; spaceId: string; force?: boolean; - packageInfo: ArchivePackage; + packageInstallContext: PackageInstallContext; paths: string[]; verificationResult?: PackageVerificationResult; telemetryEvent?: PackageUpdateEvent; @@ -497,6 +486,8 @@ async function installPackageCommon(options: { ignoreMappingUpdateErrors?: boolean; skipDataStreamRollover?: boolean; }): Promise { + const packageInfo = options.packageInstallContext.packageInfo; + const { pkgName, pkgVersion, @@ -507,12 +498,11 @@ async function installPackageCommon(options: { force, esClient, spaceId, - packageInfo, - paths, verificationResult, authorizationHeader, ignoreMappingUpdateErrors, skipDataStreamRollover, + packageInstallContext, } = options; let { telemetryEvent } = options; const logger = appContextService.getLogger(); @@ -599,8 +589,7 @@ async function installPackageCommon(options: { esClient, logger, installedPkg, - paths, - packageInfo, + packageInstallContext, installType, spaceId, verificationResult, @@ -691,20 +680,28 @@ async function installPackageByUpload({ // as we do not verify uploaded packages, we must invalidate the verification cache deleteVerificationResult(packageInfo); - const paths = await unpackBufferToCache({ + + setPackageInfo({ name: packageInfo.name, version: pkgVersion, - archiveBuffer, - contentType, + packageInfo, }); - setPackageInfo({ + const { assetsMap, paths } = await unpackBufferToAssetsMap({ name: packageInfo.name, version: pkgVersion, - packageInfo, + archiveBuffer, + contentType, }); + const packageInstallContext: PackageInstallContext = { + packageInfo: { ...packageInfo, version: pkgVersion }, + assetsMap, + paths, + }; + return await installPackageCommon({ + packageInstallContext, pkgName, pkgVersion, installSource, @@ -714,7 +711,6 @@ async function installPackageByUpload({ esClient, spaceId, force: true, // upload has implicit force - packageInfo, paths, authorizationHeader, ignoreMappingUpdateErrors, @@ -875,9 +871,20 @@ export async function installCustomPackage( datasets, }); - const paths = cacheAssets(assets, pkgName, INITIAL_VERSION); + const assetsMap = assets.reduce((acc, asset) => { + acc.set(asset.path, asset.content); + return acc; + }, new Map()); + const paths = [...Object.keys(assetsMap)]; + + const packageInstallContext: PackageInstallContext = { + assetsMap, + paths, + packageInfo, + }; return await installPackageCommon({ + packageInstallContext, pkgName, pkgVersion: INITIAL_VERSION, installSource: 'custom', @@ -886,7 +893,6 @@ export async function installCustomPackage( esClient, spaceId, force, - packageInfo, paths, authorizationHeader, }); @@ -1219,8 +1225,7 @@ export async function ensurePackagesCompletedInstall( export async function installIndexTemplatesAndPipelines({ installedPkg, - paths, - packageInfo, + packageInstallContext, esReferences, savedObjectsClient, esClient, @@ -1228,8 +1233,7 @@ export async function installIndexTemplatesAndPipelines({ onlyForDataStreams, }: { installedPkg?: Installation; - paths: string[]; - packageInfo: PackageInfo | InstallablePackage; + packageInstallContext: PackageInstallContext; esReferences: EsAssetReference[]; savedObjectsClient: SavedObjectsClientContract; esClient: ElasticsearchClient; @@ -1247,10 +1251,12 @@ export async function installIndexTemplatesAndPipelines({ */ const experimentalDataStreamFeatures = installedPkg?.experimental_data_stream_features ?? []; - const preparedIngestPipelines = prepareToInstallPipelines(packageInfo, paths, onlyForDataStreams); + const preparedIngestPipelines = prepareToInstallPipelines( + packageInstallContext, + onlyForDataStreams + ); const preparedIndexTemplates = prepareToInstallTemplates( - packageInfo, - paths, + packageInstallContext, esReferences, experimentalDataStreamFeatures, onlyForDataStreams @@ -1268,13 +1274,13 @@ export async function installIndexTemplatesAndPipelines({ // so we need to use optimistic concurrency control newEsReferences = await optimisticallyAddEsAssetReferences( savedObjectsClient, - packageInfo.name, + packageInstallContext.packageInfo.name, [...preparedIngestPipelines.assetsToAdd, ...preparedIndexTemplates.assetsToAdd] ); } else { newEsReferences = await updateEsAssetReferences( savedObjectsClient, - packageInfo.name, + packageInstallContext.packageInfo.name, esReferences, { assetsToRemove: preparedIndexTemplates.assetsToRemove, @@ -1315,9 +1321,6 @@ export async function installAssetsForInputPackagePolicy(opts: { if (pkgInfo.type !== 'input') return; - const paths = await getArchiveFilelist(pkgInfo); - if (!paths) throw new PackageInvalidArchiveError(`No paths found for ${pkgInfo.name}`); - const datasetName = packagePolicy.inputs[0].streams[0].vars?.[DATASET_VAR_NAME]?.value; const [dataStream] = getNormalizedDataStreams(pkgInfo, datasetName); const existingDataStreams = await dataStreamService.getMatchingDataStreams(esClient, { @@ -1373,20 +1376,39 @@ export async function installAssetsForInputPackagePolicy(opts: { } } - const installedPkg = await getInstallation({ + const installedPkgWithAssets = await getInstalledPackageWithAssets({ savedObjectsClient: soClient, pkgName: pkgInfo.name, logger, }); - if (!installedPkg) + let packageInstallContext: PackageInstallContext | undefined; + if (!installedPkgWithAssets) { throw new PackageNotFoundError( `Error while creating index templates: unable to find installed package ${pkgInfo.name}` ); + } + if (installedPkgWithAssets.installation.version !== pkgInfo.version) { + const pkg = await Registry.getPackage(pkgInfo.name, pkgInfo.version, { + ignoreUnverified: force, + }); + + packageInstallContext = { + assetsMap: pkg.assetsMap, + packageInfo: pkg.packageInfo, + paths: pkg.paths, + }; + } else { + packageInstallContext = { + assetsMap: installedPkgWithAssets.assetsMap, + packageInfo: installedPkgWithAssets.packageInfo, + paths: installedPkgWithAssets.paths, + }; + } + await installIndexTemplatesAndPipelines({ - installedPkg, - paths, - packageInfo: pkgInfo, - esReferences: installedPkg.installed_es || [], + installedPkg: installedPkgWithAssets.installation, + packageInstallContext, + esReferences: installedPkgWithAssets.installation.installed_es || [], savedObjectsClient: soClient, esClient, logger, diff --git a/x-pack/plugins/fleet/server/services/epm/registry/index.ts b/x-pack/plugins/fleet/server/services/epm/registry/index.ts index de513062f5873..97402447be716 100644 --- a/x-pack/plugins/fleet/server/services/epm/registry/index.ts +++ b/x-pack/plugins/fleet/server/services/epm/registry/index.ts @@ -26,16 +26,16 @@ import type { PackageVerificationResult, ArchivePackage, BundledPackage, + AssetsMap, } from '../../../types'; import { - getArchiveFilelist, getPathParts, - unpackBufferToCache, setVerificationResult, - getVerificationResult, getPackageInfo, setPackageInfo, generatePackageInfoFromArchiveBuffer, + unpackBufferToAssetsMap, + getVerificationResult, } from '../archive'; import { streamToBuffer, streamToString } from '../streams'; import { appContextService } from '../..'; @@ -319,16 +319,15 @@ export async function getPackage( ): Promise<{ paths: string[]; packageInfo: ArchivePackage; + assetsMap: AssetsMap; verificationResult?: PackageVerificationResult; }> { const verifyPackage = appContextService.getExperimentalFeatures().packageVerification; - let paths = getArchiveFilelist({ name, version }); - let packageInfo = getPackageInfo({ name, version }); - let verificationResult = verifyPackage ? getVerificationResult({ name, version }) : undefined; + let packageInfo: ArchivePackage | undefined = getPackageInfo({ name, version }); + let verificationResult: PackageVerificationResult | undefined = verifyPackage + ? getVerificationResult({ name, version }) + : undefined; - if (paths && packageInfo) { - return { paths, packageInfo, verificationResult }; - } const { archiveBuffer, archivePath, @@ -346,22 +345,19 @@ export async function getPackage( verificationResult = latestVerificationResult; setVerificationResult({ name, version }, latestVerificationResult); } - if (!paths || paths.length === 0) { - paths = await withPackageSpan('Unpack archive', () => - unpackBufferToCache({ - name, - version, - archiveBuffer, - contentType: ensureContentType(archivePath), - }) - ); - } + + const { assetsMap, paths } = await unpackBufferToAssetsMap({ + name, + version, + archiveBuffer, + contentType: ensureContentType(archivePath), + }); if (!packageInfo) { packageInfo = await getPackageInfoFromArchiveOrCache(name, version, archiveBuffer, archivePath); } - return { paths, packageInfo, verificationResult }; + return { paths, packageInfo, assetsMap, verificationResult }; } function ensureContentType(archivePath: string) { diff --git a/x-pack/plugins/fleet/server/services/package_policies/experimental_datastream_features.test.ts b/x-pack/plugins/fleet/server/services/package_policies/experimental_datastream_features.test.ts index 4fb8073ccbf00..fd914e5ce1f80 100644 --- a/x-pack/plugins/fleet/server/services/package_policies/experimental_datastream_features.test.ts +++ b/x-pack/plugins/fleet/server/services/package_policies/experimental_datastream_features.test.ts @@ -12,7 +12,7 @@ import { securityMock } from '@kbn/security-plugin/server/mocks'; import type { NewPackagePolicy, PackagePolicy } from '../../types'; import { appContextService } from '../app_context'; import { updateCurrentWriteIndices } from '../epm/elasticsearch/template/template'; -import { getInstallation } from '../epm/packages'; +import { getInstalledPackageWithAssets } from '../epm/packages/get'; import { handleExperimentalDatastreamFeatureOptIn } from './experimental_datastream_features'; @@ -34,6 +34,35 @@ jest.mock('../epm/packages', () => { }; }); +function mockGetInstalledPackageWithAssets(installation: any) { + jest.mocked(getInstalledPackageWithAssets).mockResolvedValue({ + packageInfo: { + name: 'test', + data_streams: [ + { + dataset: 'test', + type: 'metrics', + }, + ], + }, + installation, + } as any); +} + +jest.mock('../epm/packages/get', () => ({ + getInstalledPackageWithAssets: jest.fn().mockResolvedValue({ + packageInfo: { + name: 'test', + data_streams: [ + { + dataset: 'test', + type: 'metrics', + }, + ], + }, + }), +})); + jest.mock('../app_context'); const mockedAppContextService = appContextService as jest.Mocked; mockedAppContextService.getSecuritySetup.mockImplementation(() => ({ @@ -41,9 +70,6 @@ mockedAppContextService.getSecuritySetup.mockImplementation(() => ({ })); jest.mock('../epm/elasticsearch/template/template'); - -const mockGetInstallation = getInstallation as jest.Mock; - jest.mock('../epm/elasticsearch/template/install', () => { return { prepareTemplate: jest.fn().mockReturnValue({ @@ -214,7 +240,7 @@ describe('experimental_datastream_features', () => { describe('when package policy does not exist (create)', () => { beforeEach(() => { - mockGetInstallation.mockResolvedValueOnce({ + mockGetInstalledPackageWithAssets({ experimental_data_stream_features: [ { data_stream: 'metrics-test.test', @@ -376,7 +402,7 @@ describe('experimental_datastream_features', () => { isDocValueOnlyOther: false, }); - mockGetInstallation.mockResolvedValueOnce({ + mockGetInstalledPackageWithAssets({ experimental_data_stream_features: [ { data_stream: 'metrics-test.test', @@ -404,7 +430,7 @@ describe('experimental_datastream_features', () => { isDocValueOnlyOther: false, }); - mockGetInstallation.mockResolvedValueOnce({ + mockGetInstalledPackageWithAssets({ experimental_data_stream_features: [ { data_stream: 'metrics-test.test', @@ -426,7 +452,7 @@ describe('experimental_datastream_features', () => { describe('when opt in status is changed', () => { beforeEach(() => { - mockGetInstallation.mockResolvedValueOnce({ + mockGetInstalledPackageWithAssets({ experimental_data_stream_features: [ { data_stream: 'metrics-test.test', diff --git a/x-pack/plugins/fleet/server/services/package_policies/experimental_datastream_features.ts b/x-pack/plugins/fleet/server/services/package_policies/experimental_datastream_features.ts index b700618f44762..edf31991634b9 100644 --- a/x-pack/plugins/fleet/server/services/package_policies/experimental_datastream_features.ts +++ b/x-pack/plugins/fleet/server/services/package_policies/experimental_datastream_features.ts @@ -13,6 +13,7 @@ import { merge } from 'lodash'; import { getRegistryDataStreamAssetBaseName } from '../../../common/services'; import type { ExperimentalIndexingFeature } from '../../../common/types'; +import { PackageNotFoundError } from '../../errors'; import type { NewPackagePolicy, PackagePolicy, @@ -22,8 +23,9 @@ import type { import { appContextService } from '../app_context'; import { prepareTemplate } from '../epm/elasticsearch/template/install'; import { updateCurrentWriteIndices } from '../epm/elasticsearch/template/template'; -import { getInstallation, getPackageInfo } from '../epm/packages'; +import { getInstalledPackageWithAssets } from '../epm/packages/get'; import { updateDatastreamExperimentalFeatures } from '../epm/packages/update'; + import { applyDocOnlyValueToMapping, forEachMappings, @@ -38,7 +40,10 @@ export async function handleExperimentalDatastreamFeatureOptIn({ esClient: ElasticsearchClient; packagePolicy: PackagePolicy | NewPackagePolicy; }) { - if (!packagePolicy.package?.experimental_data_stream_features) { + if ( + !packagePolicy.package?.experimental_data_stream_features || + (packagePolicy.package?.experimental_data_stream_features?.length ?? 0) === 0 + ) { return; } @@ -49,16 +54,16 @@ export async function handleExperimentalDatastreamFeatureOptIn({ const templateMappings: { [key: string]: any } = {}; if (packagePolicy.package) { - installation = await getInstallation({ + const installedPackageWithAssets = await getInstalledPackageWithAssets({ savedObjectsClient: soClient, pkgName: packagePolicy.package.name, }); - const packageInfo = await getPackageInfo({ - savedObjectsClient: soClient, - pkgName: packagePolicy.package.name, - pkgVersion: packagePolicy.package.version, - }); + if (!installedPackageWithAssets) { + throw new PackageNotFoundError(`package not found with assets ${packagePolicy.package.name}`); + } + installation = installedPackageWithAssets.installation; + const { packageInfo, paths, assetsMap } = installedPackageWithAssets; // prepare template from package spec to find original index:false values const templates = packageInfo.data_streams?.map((dataStream: any) => { @@ -67,7 +72,15 @@ export async function handleExperimentalDatastreamFeatureOptIn({ (datastreamFeature) => datastreamFeature.data_stream === getRegistryDataStreamAssetBaseName(dataStream) ); - return prepareTemplate({ pkg: packageInfo, dataStream, experimentalDataStreamFeature }); + return prepareTemplate({ + packageInstallContext: { + assetsMap, + packageInfo, + paths, + }, + dataStream, + experimentalDataStreamFeature, + }); }); templates?.forEach((template) => { diff --git a/x-pack/plugins/fleet/server/services/package_policy.test.ts b/x-pack/plugins/fleet/server/services/package_policy.test.ts index 204b3b10e066b..ada094ec9a7d0 100644 --- a/x-pack/plugins/fleet/server/services/package_policy.test.ts +++ b/x-pack/plugins/fleet/server/services/package_policy.test.ts @@ -72,63 +72,56 @@ const mockedSendTelemetryEvents = sendTelemetryEvents as jest.MockedFunction< typeof sendTelemetryEvents >; -async function mockedGetAssetsData(_a: any, _b: any, dataset: string) { - if (dataset === 'dataset1') { - return [ - { - buffer: Buffer.from(` -type: log -metricset: ["dataset1"] -paths: -{{#each paths}} -- {{this}} -{{/each}} -{{#if hosts}} -hosts: -{{#each hosts}} -- {{this}} -{{/each}} -{{/if}} -`), - }, - ]; - } - if (dataset === 'dataset1_level1') { - return [ - { - buffer: Buffer.from(` -type: log -metricset: ["dataset1.level1"] -`), - }, - ]; - } - - return [ - { - buffer: Buffer.from(` -hosts: -{{#each hosts}} -- {{this}} -{{/each}} -`), - }, - ]; -} +const ASSETS_MAP_FIXTURES = new Map([ + [ + '/test-1.0.0/data_stream/dataset1/agent/stream/some_template_path.yml', + Buffer.from(` + type: log + metricset: ["dataset1"] + paths: + {{#each paths}} + - {{this}} + {{/each}} + {{#if hosts}} + hosts: + {{#each hosts}} + - {{this}} + {{/each}} + {{/if}} + `), + ], + [ + '/test-1.0.0/data_stream/dataset1_level1/agent/stream/some_template_path.yml', + Buffer.from(` + type: log + metricset: ["dataset1.level1"] + `), + ], + [ + '/test-1.0.0/agent/input/some_template_path.yml', + Buffer.from(` + hosts: + {{#each hosts}} + - {{this}} + {{/each}} + `), + ], +]); async function mockedGetInstallation(params: any) { let pkg; if (params.pkgName === 'apache') pkg = { version: '1.3.2' }; if (params.pkgName === 'aws') pkg = { version: '0.3.3' }; if (params.pkgName === 'endpoint') pkg = { version: '1.0.0' }; + if (params.pkgName === 'test') pkg = { version: '0.0.1' }; return Promise.resolve(pkg); } async function mockedGetPackageInfo(params: any) { let pkg; if (params.pkgName === 'apache') pkg = { version: '1.3.2' }; - if (params.pkgName === 'aws') pkg = { version: '0.3.3' }; - if (params.pkgName === 'endpoint') pkg = { version: '1.0.0' }; + if (params.pkgName === 'aws') pkg = { name: 'aws', version: '0.3.3' }; + if (params.pkgName === 'endpoint') pkg = { name: 'endpoint', version: params.pkgVersion }; if (params.pkgName === 'test') { pkg = { version: '1.0.2', @@ -162,12 +155,6 @@ async function mockedGetPackageInfo(params: any) { return Promise.resolve(pkg); } -jest.mock('./epm/packages/assets', () => { - return { - getAssetsData: mockedGetAssetsData, - }; -}); - jest.mock('./epm/packages', () => { return { getPackageInfo: jest.fn().mockImplementation(mockedGetPackageInfo), @@ -181,7 +168,13 @@ jest.mock('../../common/services/package_to_package_policy', () => ({ packageToPackagePolicy: jest.fn(), })); -jest.mock('./epm/registry'); +jest.mock('./epm/registry', () => ({ + getPackage: jest.fn().mockResolvedValue({ assetsMap: [] }), +})); + +jest.mock('./epm/packages/get', () => ({ + getPackageAssetsMap: jest.fn().mockResolvedValue(new Map()), +})); jest.mock('./agent_policy'); const mockAgentPolicyService = agentPolicyService as jest.Mocked; @@ -488,6 +481,8 @@ describe('Package policy service', () => { it('should work with config variables from the stream', async () => { const inputs = await _compilePackagePolicyInputs( { + name: 'test', + version: '1.0.0', data_streams: [ { type: 'logs', @@ -520,7 +515,8 @@ describe('Package policy service', () => { }, ], }, - ] + ], + ASSETS_MAP_FIXTURES ); expect(inputs).toEqual([ @@ -551,6 +547,8 @@ describe('Package policy service', () => { it('should work with a two level dataset name', async () => { const inputs = await _compilePackagePolicyInputs( { + name: 'test', + version: '1.0.0', data_streams: [ { type: 'logs', @@ -578,7 +576,8 @@ describe('Package policy service', () => { }, ], }, - ] + ], + ASSETS_MAP_FIXTURES ); expect(inputs).toEqual([ @@ -603,6 +602,8 @@ describe('Package policy service', () => { it('should work with config variables at the input level', async () => { const inputs = await _compilePackagePolicyInputs( { + name: 'test', + version: '1.0.0', data_streams: [ { dataset: 'package.dataset1', @@ -635,7 +636,8 @@ describe('Package policy service', () => { }, ], }, - ] + ], + ASSETS_MAP_FIXTURES ); expect(inputs).toEqual([ @@ -666,6 +668,8 @@ describe('Package policy service', () => { it('should work with config variables at the package level', async () => { const inputs = await _compilePackagePolicyInputs( { + name: 'test', + version: '1.0.0', data_streams: [ { dataset: 'package.dataset1', @@ -702,7 +706,8 @@ describe('Package policy service', () => { }, ], }, - ] + ], + ASSETS_MAP_FIXTURES ); expect(inputs).toEqual([ @@ -734,6 +739,8 @@ describe('Package policy service', () => { it('should work with an input with a template and no streams', async () => { const inputs = await _compilePackagePolicyInputs( { + name: 'test', + version: '1.0.0', data_streams: [], policy_templates: [ { @@ -753,7 +760,8 @@ describe('Package policy service', () => { }, streams: [], }, - ] + ], + ASSETS_MAP_FIXTURES ); expect(inputs).toEqual([ @@ -776,6 +784,8 @@ describe('Package policy service', () => { it('should work with an input with a template and streams', async () => { const inputs = await _compilePackagePolicyInputs( { + name: 'test', + version: '1.0.0', data_streams: [ { dataset: 'package.dataset1', @@ -828,7 +838,8 @@ describe('Package policy service', () => { }, streams: [], }, - ] + ], + ASSETS_MAP_FIXTURES ); expect(inputs).toEqual([ @@ -881,6 +892,8 @@ describe('Package policy service', () => { it('should work with a package without input', async () => { const inputs = await _compilePackagePolicyInputs( { + name: 'test', + version: '1.0.0', policy_templates: [ { inputs: undefined, @@ -888,7 +901,8 @@ describe('Package policy service', () => { ], } as unknown as PackageInfo, {}, - [] + [], + ASSETS_MAP_FIXTURES ); expect(inputs).toEqual([]); @@ -897,6 +911,8 @@ describe('Package policy service', () => { it('should work with a package with a empty inputs array', async () => { const inputs = await _compilePackagePolicyInputs( { + name: 'test', + version: '1.0.0', policy_templates: [ { inputs: [], @@ -904,7 +920,8 @@ describe('Package policy service', () => { ], } as unknown as PackageInfo, {}, - [] + [], + ASSETS_MAP_FIXTURES ); expect(inputs).toEqual([]); diff --git a/x-pack/plugins/fleet/server/services/package_policy.ts b/x-pack/plugins/fleet/server/services/package_policy.ts index d3d49a7f001fc..3f43aaa2d71f2 100644 --- a/x-pack/plugins/fleet/server/services/package_policy.ts +++ b/x-pack/plugins/fleet/server/services/package_policy.ts @@ -68,6 +68,7 @@ import type { ExperimentalDataStreamFeature, DeletePackagePoliciesResponse, PolicySecretReference, + AssetsMap, } from '../../common/types'; import { PACKAGE_POLICY_SAVED_OBJECT_TYPE } from '../constants'; import { @@ -104,7 +105,7 @@ import { storedPackagePolicyToAgentInputs } from './agent_policies'; import { agentPolicyService } from './agent_policy'; import { getDataOutputForAgentPolicy } from './agent_policies'; import { getPackageInfo, getInstallation, ensureInstalledPackage } from './epm/packages'; -import { getAssetsData } from './epm/packages/assets'; +import { getAssetsDataFromAssetsMap } from './epm/packages/assets'; import { compileTemplate } from './epm/agent/agent'; import { escapeSearchQueryPhrase, normalizeKuery } from './saved_object'; import { appContextService } from '.'; @@ -122,6 +123,7 @@ import { deleteSecretsIfNotReferenced as deleteSecrets, isSecretStorageEnabled, } from './secrets'; +import { getPackageAssetsMap } from './epm/packages/get'; export type InputsOverride = Partial & { vars?: Array; @@ -129,6 +131,38 @@ export type InputsOverride = Partial & { const SAVED_OBJECT_TYPE = PACKAGE_POLICY_SAVED_OBJECT_TYPE; +async function getPkgInfoAssetsMap({ + savedObjectsClient, + packageInfos, + logger, +}: { + savedObjectsClient: SavedObjectsClientContract; + packageInfos: PackageInfo[]; + logger: Logger; +}) { + const packageInfosandAssetsMap = new Map< + string, + { assetsMap: AssetsMap; pkgInfo: PackageInfo } + >(); + await pMap( + packageInfos, + async (pkgInfo) => { + const assetsMap = await getPackageAssetsMap({ + logger, + packageInfo: pkgInfo, + savedObjectsClient, + }); + packageInfosandAssetsMap.set(`${pkgInfo.name}-${pkgInfo.version}`, { + assetsMap, + pkgInfo, + }); + }, + { concurrency: 5 } + ); + + return packageInfosandAssetsMap; +} + export const DATA_STREAM_ALLOWED_INDEX_PRIVILEGES = new Set([ 'auto_configure', 'create_doc', @@ -261,7 +295,17 @@ class PackagePolicyClientImpl implements PackagePolicyClient { inputs = enrichedPackagePolicy.inputs as PackagePolicyInput[]; } - inputs = await _compilePackagePolicyInputs(pkgInfo, enrichedPackagePolicy.vars || {}, inputs); + const assetsMap = await getPackageAssetsMap({ + logger, + packageInfo: pkgInfo, + savedObjectsClient: soClient, + }); + inputs = await _compilePackagePolicyInputs( + pkgInfo, + enrichedPackagePolicy.vars || {}, + inputs, + assetsMap + ); elasticsearchPrivileges = pkgInfo.elasticsearch?.privileges; @@ -366,6 +410,12 @@ class PackagePolicyClientImpl implements PackagePolicyClient { return p; }); + const packageInfosandAssetsMap = await getPkgInfoAssetsMap({ + logger, + packageInfos: [...packageInfos.values()], + savedObjectsClient: soClient, + }); + await pMap(packagePoliciesWithIds, async (packagePolicy) => { try { const packagePolicyId = packagePolicy.id ?? uuidv4(); @@ -377,12 +427,24 @@ class PackagePolicyClientImpl implements PackagePolicyClient { let elasticsearch: PackagePolicy['elasticsearch']; if (packagePolicy.package) { - const pkgInfo = packageInfos.get( + const packageInfoAndAsset = packageInfosandAssetsMap.get( `${packagePolicy.package.name}-${packagePolicy.package.version}` ); + if (!packageInfoAndAsset) { + throw new FleetError( + `Package info and assets not found: ${packagePolicy.package.name}-${packagePolicy.package.version}` + ); + } + + const { pkgInfo, assetsMap } = packageInfoAndAsset; inputs = pkgInfo - ? await _compilePackagePolicyInputs(pkgInfo, packagePolicy.vars || {}, inputs) + ? await _compilePackagePolicyInputs( + pkgInfo, + packagePolicy.vars || {}, + inputs, + assetsMap + ) : inputs; elasticsearch = pkgInfo?.elasticsearch; @@ -475,9 +537,18 @@ class PackagePolicyClientImpl implements PackagePolicyClient { const pkgInfo = packageInfos.get( `${packagePolicy.package.name}-${packagePolicy.package.version}` ); - + if (!pkgInfo) { + throw new FleetError( + `Package info and assets not found: ${packagePolicy.package.name}-${packagePolicy.package.version}` + ); + } + const assetsMap = await getPackageAssetsMap({ + logger: appContextService.getLogger(), + packageInfo: pkgInfo, + savedObjectsClient: soClient, + }); inputs = pkgInfo - ? await _compilePackagePolicyInputs(pkgInfo, packagePolicy.vars || {}, inputs) + ? await _compilePackagePolicyInputs(pkgInfo, packagePolicy.vars || {}, inputs, assetsMap) : inputs; elasticsearch = pkgInfo?.elasticsearch; @@ -770,8 +841,17 @@ class PackagePolicyClientImpl implements PackagePolicyClient { secretsToDelete = secretsRes.secretsToDelete; inputs = restOfPackagePolicy.inputs as PackagePolicyInput[]; } - - inputs = await _compilePackagePolicyInputs(pkgInfo, restOfPackagePolicy.vars || {}, inputs); + const assetsMap = await getPackageAssetsMap({ + logger, + packageInfo: pkgInfo, + savedObjectsClient: soClient, + }); + inputs = await _compilePackagePolicyInputs( + pkgInfo, + restOfPackagePolicy.vars || {}, + inputs, + assetsMap + ); elasticsearchPrivileges = pkgInfo.elasticsearch?.privileges; } @@ -891,6 +971,12 @@ class PackagePolicyClientImpl implements PackagePolicyClient { const packageInfos = await getPackageInfoForPackagePolicies(packagePolicyUpdates, soClient); const allSecretsToDelete: PolicySecretReference[] = []; + const packageInfosandAssetsMap = await getPkgInfoAssetsMap({ + logger: appContextService.getLogger(), + packageInfos: [...packageInfos.values()], + savedObjectsClient: soClient, + }); + const policiesToUpdate: Array> = []; const failedPolicies: Array<{ packagePolicy: NewPackagePolicyWithId; @@ -921,10 +1007,11 @@ class PackagePolicyClientImpl implements PackagePolicyClient { inputs = enforceFrozenInputs(oldPackagePolicy.inputs, inputs, options?.force); let elasticsearchPrivileges: NonNullable['privileges']; if (packagePolicy.package?.name) { - const pkgInfo = packageInfos.get( + const pkgInfoAndAsset = packageInfosandAssetsMap.get( `${packagePolicy.package.name}-${packagePolicy.package.version}` ); - if (pkgInfo) { + if (pkgInfoAndAsset) { + const { pkgInfo, assetsMap } = pkgInfoAndAsset; validatePackagePolicyOrThrow(packagePolicy, pkgInfo); if (await isSecretStorageEnabled(esClient, soClient)) { const secretsRes = await extractAndUpdateSecrets({ @@ -939,7 +1026,12 @@ class PackagePolicyClientImpl implements PackagePolicyClient { allSecretsToDelete.push(...secretsRes.secretsToDelete); inputs = restOfPackagePolicy.inputs as PackagePolicyInput[]; } - inputs = await _compilePackagePolicyInputs(pkgInfo, packagePolicy.vars || {}, inputs); + inputs = await _compilePackagePolicyInputs( + pkgInfo, + packagePolicy.vars || {}, + inputs, + assetsMap + ); elasticsearchPrivileges = pkgInfo.elasticsearch?.privileges; } } @@ -1382,10 +1474,16 @@ class PackagePolicyClientImpl implements PackagePolicyClient { packageInfo, packageToPackagePolicyInputs(packageInfo) as InputsOverride[] ); + const assetsMap = await getPackageAssetsMap({ + logger: appContextService.getLogger(), + packageInfo, + savedObjectsClient: soClient, + }); updatePackagePolicy.inputs = await _compilePackagePolicyInputs( packageInfo, updatePackagePolicy.vars || {}, - updatePackagePolicy.inputs as PackagePolicyInput[] + updatePackagePolicy.inputs as PackagePolicyInput[], + assetsMap ); updatePackagePolicy.elasticsearch = packageInfo.elasticsearch; @@ -1422,6 +1520,11 @@ class PackagePolicyClientImpl implements PackagePolicyClient { ({ packagePolicy, packageInfo, experimentalDataStreamFeatures } = await this.getUpgradePackagePolicyInfo(soClient, id, packagePolicy, pkgVersion)); + const assetsMap = await getPackageAssetsMap({ + logger: appContextService.getLogger(), + packageInfo, + savedObjectsClient: soClient, + }); // Ensure the experimental features from the Installation saved object come through on the package policy // during an upgrade dry run @@ -1429,7 +1532,7 @@ class PackagePolicyClientImpl implements PackagePolicyClient { packagePolicy.package.experimental_data_stream_features = experimentalDataStreamFeatures; } - return this.calculateDiff(soClient, packagePolicy, packageInfo); + return this.calculateDiff(soClient, packagePolicy, packageInfo, assetsMap); } catch (error) { return { hasErrors: true, @@ -1441,7 +1544,8 @@ class PackagePolicyClientImpl implements PackagePolicyClient { private async calculateDiff( soClient: SavedObjectsClientContract, packagePolicy: PackagePolicy, - packageInfo: PackageInfo + packageInfo: PackageInfo, + assetsMap: AssetsMap ): Promise { const updatedPackagePolicy = updatePackageInputs( { @@ -1461,7 +1565,8 @@ class PackagePolicyClientImpl implements PackagePolicyClient { updatedPackagePolicy.inputs = await _compilePackagePolicyInputs( packageInfo, updatedPackagePolicy.vars || {}, - updatedPackagePolicy.inputs as PackagePolicyInput[] + updatedPackagePolicy.inputs as PackagePolicyInput[], + assetsMap ); updatedPackagePolicy.elasticsearch = packageInfo.elasticsearch; @@ -1899,11 +2004,12 @@ export function getInputsWithStreamIds( export async function _compilePackagePolicyInputs( pkgInfo: PackageInfo, vars: PackagePolicy['vars'], - inputs: PackagePolicyInput[] + inputs: PackagePolicyInput[], + assetsMap: AssetsMap ): Promise { const inputsPromises = inputs.map(async (input) => { - const compiledInput = await _compilePackagePolicyInput(pkgInfo, vars, input); - const compiledStreams = await _compilePackageStreams(pkgInfo, vars, input); + const compiledInput = await _compilePackagePolicyInput(pkgInfo, vars, input, assetsMap); + const compiledStreams = await _compilePackageStreams(pkgInfo, vars, input, assetsMap); return { ...input, compiled_input: compiledInput, @@ -1917,7 +2023,8 @@ export async function _compilePackagePolicyInputs( async function _compilePackagePolicyInput( pkgInfo: PackageInfo, vars: PackagePolicy['vars'], - input: PackagePolicyInput + input: PackagePolicyInput, + assetsMap: AssetsMap ) { const packagePolicyTemplate = input.policy_template ? pkgInfo.policy_templates?.find( @@ -1945,7 +2052,7 @@ async function _compilePackagePolicyInput( return undefined; } - const [pkgInputTemplate] = await getAssetsData(pkgInfo, (path: string) => + const [pkgInputTemplate] = await getAssetsDataFromAssetsMap(pkgInfo, assetsMap, (path: string) => path.endsWith(`/agent/input/${packageInput.template_path!}`) ); @@ -1965,10 +2072,11 @@ async function _compilePackagePolicyInput( async function _compilePackageStreams( pkgInfo: PackageInfo, vars: PackagePolicy['vars'], - input: PackagePolicyInput + input: PackagePolicyInput, + assetsMap: AssetsMap ) { const streamsPromises = input.streams.map((stream) => - _compilePackageStream(pkgInfo, vars, input, stream) + _compilePackageStream(pkgInfo, vars, input, stream, assetsMap) ); return await Promise.all(streamsPromises); @@ -2026,7 +2134,8 @@ async function _compilePackageStream( pkgInfo: PackageInfo, vars: PackagePolicy['vars'], input: PackagePolicyInput, - streamIn: PackagePolicyInputStream + streamIn: PackagePolicyInputStream, + assetsMap: AssetsMap ) { let stream = streamIn; @@ -2068,8 +2177,9 @@ async function _compilePackageStream( const datasetPath = packageDataStream.path; - const [pkgStreamTemplate] = await getAssetsData( + const [pkgStreamTemplate] = await getAssetsDataFromAssetsMap( pkgInfo, + assetsMap, (path: string) => path.endsWith(streamFromPkg.template_path), datasetPath ); diff --git a/x-pack/plugins/fleet/server/types/index.tsx b/x-pack/plugins/fleet/server/types/index.tsx index d56c92eb7aa8b..bec381d311937 100644 --- a/x-pack/plugins/fleet/server/types/index.tsx +++ b/x-pack/plugins/fleet/server/types/index.tsx @@ -96,6 +96,7 @@ export type { InstallationInfo, ActionStatusOptions, PackageSpecTags, + AssetsMap, } from '../../common/types'; export { ElasticsearchAssetType, KibanaAssetType, KibanaSavedObjectType } from '../../common/types'; export { dataTypes } from '../../common/constants'; From 078884b328fee9676ec6ec4a0a366e673be6822d Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Tue, 2 Jan 2024 10:58:47 -0700 Subject: [PATCH 050/323] [maps] remove duplicated error handling logic (#173847) ### Test instructions 1. install sample web logs data set 2. create new map 3. add heatmap layer. 4. add filter ``` { "error_query": { "indices": [ { "error_type": "exception", "message": "local shard failure message 123", "name": "kibana_sample_data_logs" } ] } } ``` 5. verify error is displayed in legend and clicking "View details" button opens inspector and displays tile error --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../classes/layers/tile_errors_list.tsx | 75 ++++++++++--------- 1 file changed, 39 insertions(+), 36 deletions(-) diff --git a/x-pack/plugins/maps/public/classes/layers/tile_errors_list.tsx b/x-pack/plugins/maps/public/classes/layers/tile_errors_list.tsx index 38bb078cd98d0..9520184d48753 100644 --- a/x-pack/plugins/maps/public/classes/layers/tile_errors_list.tsx +++ b/x-pack/plugins/maps/public/classes/layers/tile_errors_list.tsx @@ -8,9 +8,10 @@ import React, { useEffect, useState } from 'react'; import { Adapters } from '@kbn/inspector-plugin/common/adapters'; import { i18n } from '@kbn/i18n'; -import { EuiButton, EuiButtonEmpty, EuiCodeBlock, EuiContextMenu, EuiPopover } from '@elastic/eui'; +import { EuiButtonEmpty, EuiContextMenu, EuiPopover } from '@elastic/eui'; +import { createEsError } from '@kbn/search-errors'; import type { TileError } from '../../../common/descriptor_types'; -import { getInspector } from '../../kibana_services'; +import { getApplication, getDocLinks, getInspector } from '../../kibana_services'; import { RESPONSE_VIEW_ID } from '../../inspector/vector_tile_adapter/components/vector_tile_inspector'; interface Props { @@ -57,6 +58,41 @@ export function TileErrorsList(props: Props) { }, ]; + function renderError(tileError: TileError) { + if (!props.isESSource || !tileError.error) { + return tileError.message; + } + + const esError = createEsError( + { + statusCode: 400, + message: tileError.message, + attributes: { + error: tileError.error, + }, + }, + () => { + getInspector().open(props.inspectorAdapters, { + options: { + initialLayerId: props.layerId, + initialTileKey: tileError.tileKey, + initialTab: [RESPONSE_VIEW_ID], + }, + }); + }, + { + application: getApplication(), + docLinks: getDocLinks(), + } + ); + return ( + <> + {esError.getErrorMessage()} + {esError.getActions()} + + ); + } + return ( <> - - {getDescription(selectedTileError)} - - {props.isESSource && ( - { - getInspector().open(props.inspectorAdapters, { - options: { - initialLayerId: props.layerId, - initialTileKey: selectedTileError?.tileKey, - initialTab: [RESPONSE_VIEW_ID], - }, - }); - }} - size="s" - > - {i18n.translate('xpack.maps.tileError.viewDetailsButtonLabel', { - defaultMessage: 'View details', - })} - - )} + {renderError(selectedTileError)} ); } @@ -113,15 +128,3 @@ function getTitle(tileKey: string) { values: { tileKey }, }); } - -function getDescription(tileError: TileError) { - if (tileError.error?.root_cause?.[0]?.reason) { - return tileError.error.root_cause[0].reason; - } - - if (tileError.error?.reason) { - return tileError.error.reason; - } - - return tileError.message; -} From 34935a2dcf472f71d1f3c5813dced4995c49a2f1 Mon Sep 17 00:00:00 2001 From: Walter Rafelsberger Date: Tue, 2 Jan 2024 19:18:44 +0100 Subject: [PATCH 051/323] [ML] Transforms: Refactor validators and add unit tests. (#173736) Splits up form validators and adds more unit tests. --- .../common/constants/validation_messages.ts | 45 ----- .../public/app/common/validators.test.ts | 165 ---------------- .../transform/public/app/common/validators.ts | 178 ------------------ .../validators/frequency_validator.test.ts | 48 +++++ .../common/validators/frequency_validator.ts | 23 +++ .../public/app/common/validators/index.ts | 20 ++ .../integer_above_zero_validator.test.ts | 29 +++ .../integer_above_zero_validator.ts | 24 +++ .../integer_range_minus_1_to_100_validator.ts | 24 +++ .../is_continuous_mode_delay.test.ts | 30 +++ .../validators/is_continuous_mode_delay.ts | 15 ++ .../common/validators/is_json_string.test.ts | 34 ++++ .../app/common/validators/is_json_string.ts | 20 ++ .../is_retention_policy_max_age.test.ts | 49 +++++ .../validators/is_retention_policy_max_age.ts | 36 ++++ .../is_transform_wizard_frequency.test.ts | 45 +++++ .../is_transform_wizard_frequency.ts | 38 ++++ .../common/validators/is_valid_frequency.ts | 29 +++ .../public/app/common/validators/messages.ts | 37 ++++ .../parse_duration_above_zero.test.ts | 34 ++++ .../validators/parse_duration_above_zero.ts | 40 ++++ ...retention_policy_max_age_validator.test.ts | 54 ++++++ .../retention_policy_max_age_validator.ts | 28 +++ .../validators/string_validator.test.ts | 18 ++ .../app/common/validators/string_validator.ts | 22 +++ ...rm_settings_number_of_retries_validator.ts | 24 +++ ...orm_settings_page_search_size_validator.ts | 29 +++ .../public/app/common/validators/types.ts | 27 +++ .../step_define/common/filter_agg/config.ts | 6 +- .../step_details/step_details_form.tsx | 14 +- .../use_edit_transform_flyout.test.ts | 112 ----------- .../use_edit_transform_flyout.tsx | 136 ++----------- .../translations/translations/fr-FR.json | 1 - .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - 35 files changed, 806 insertions(+), 630 deletions(-) delete mode 100644 x-pack/plugins/transform/public/app/common/constants/validation_messages.ts delete mode 100644 x-pack/plugins/transform/public/app/common/validators.test.ts delete mode 100644 x-pack/plugins/transform/public/app/common/validators.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/frequency_validator.test.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/frequency_validator.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/index.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/integer_above_zero_validator.test.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/integer_above_zero_validator.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/integer_range_minus_1_to_100_validator.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/is_continuous_mode_delay.test.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/is_continuous_mode_delay.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/is_json_string.test.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/is_json_string.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/is_retention_policy_max_age.test.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/is_retention_policy_max_age.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/is_transform_wizard_frequency.test.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/is_transform_wizard_frequency.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/is_valid_frequency.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/messages.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/parse_duration_above_zero.test.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/parse_duration_above_zero.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/retention_policy_max_age_validator.test.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/retention_policy_max_age_validator.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/string_validator.test.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/string_validator.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/transform_settings_number_of_retries_validator.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/transform_settings_page_search_size_validator.ts create mode 100644 x-pack/plugins/transform/public/app/common/validators/types.ts diff --git a/x-pack/plugins/transform/public/app/common/constants/validation_messages.ts b/x-pack/plugins/transform/public/app/common/constants/validation_messages.ts deleted file mode 100644 index 6d06d3215a895..0000000000000 --- a/x-pack/plugins/transform/public/app/common/constants/validation_messages.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; - -export const numberRangeMinus1To100NotValidErrorMessage = i18n.translate( - 'xpack.transform.transformSettingValidations.numberGreaterThanOrEqualToNegativeOneNotValidErrorMessage', - { - defaultMessage: 'Number of retries needs to be between 0 and 100, or -1 for infinite retries.', - } -); - -export const numberRange10To10000NotValidErrorMessage = i18n.translate( - 'xpack.transform.transformSettingValidations.numberRange10To10000NotValidErrorMessage', - { - defaultMessage: 'Value needs to be an integer between 10 and 10000.', - } -); - -export const pageSearchSizeInvalidErrorMessage = i18n.translate( - 'xpack.transform.transformSettingValidations.maxPageSearchSizeInvalidMessage', - { - defaultMessage: 'Maximum page search size needs to be an integer between 10 and 65536.', - } -); - -// Retention policy max age validator -export const retentionPolicyMaxAgeInvalidErrorMessage = i18n.translate( - 'xpack.transform.transformSettingValidations.retentionPolicyMaxAgeInvalidMessage', - { - defaultMessage: 'Invalid max age format. Minimum of 60s required.', - } -); - -// xpack.transform.transformList.numberOfRetriesInvalidErrorMessage -export const numberOfRetriesInvalidErrorMessage = i18n.translate( - 'xpack.transform.transformSettingsValidations.numberOfRetriesInvalidErrorMessage', - { - defaultMessage: 'Number of retries needs to be between 0 and 100, or -1 for infinite retries.', - } -); diff --git a/x-pack/plugins/transform/public/app/common/validators.test.ts b/x-pack/plugins/transform/public/app/common/validators.test.ts deleted file mode 100644 index 324ce7f8255e1..0000000000000 --- a/x-pack/plugins/transform/public/app/common/validators.test.ts +++ /dev/null @@ -1,165 +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 { - continuousModeDelayValidator, - jsonStringValidator, - parseDuration, - retentionPolicyMaxAgeValidator, - transformFrequencyValidator, -} from './validators'; - -describe('continuousModeDelayValidator', () => { - it('should allow 0 input without unit', () => { - expect(continuousModeDelayValidator('0')).toBe(true); - }); - - it('should allow 0 input with unit provided', () => { - expect(continuousModeDelayValidator('0s')).toBe(true); - }); - - it('should allow integer input with unit provided', () => { - expect(continuousModeDelayValidator('234nanos')).toBe(true); - }); - - it('should not allow integer input without unit provided', () => { - expect(continuousModeDelayValidator('90000')).toBe(false); - }); - - it('should not allow float input', () => { - expect(continuousModeDelayValidator('122.5d')).toBe(false); - }); -}); - -describe('parseDuration', () => { - it('should return undefined when the input is not an integer and valid time unit.', () => { - expect(parseDuration('0')).toBe(undefined); - expect(parseDuration('0.1s')).toBe(undefined); - expect(parseDuration('1.1m')).toBe(undefined); - expect(parseDuration('10.1asdf')).toBe(undefined); - }); - - it('should return parsed data for valid time units nanos|micros|ms|s|m|h|d.', () => { - expect(parseDuration('1a')).toEqual(undefined); - expect(parseDuration('1nanos')).toEqual({ - number: 1, - timeUnit: 'nanos', - }); - expect(parseDuration('1micros')).toEqual({ - number: 1, - timeUnit: 'micros', - }); - expect(parseDuration('1ms')).toEqual({ number: 1, timeUnit: 'ms' }); - expect(parseDuration('1s')).toEqual({ number: 1, timeUnit: 's' }); - expect(parseDuration('1m')).toEqual({ number: 1, timeUnit: 'm' }); - expect(parseDuration('1h')).toEqual({ number: 1, timeUnit: 'h' }); - expect(parseDuration('1d')).toEqual({ number: 1, timeUnit: 'd' }); - }); -}); - -describe('retentionPolicyMaxAgeValidator', () => { - it('should fail when the input is not an integer and valid time unit.', () => { - expect(retentionPolicyMaxAgeValidator('0')).toBe(false); - expect(retentionPolicyMaxAgeValidator('0.1s')).toBe(false); - expect(retentionPolicyMaxAgeValidator('1.1m')).toBe(false); - expect(retentionPolicyMaxAgeValidator('10.1asdf')).toBe(false); - }); - - it('should only allow values equal or above 60s.', () => { - expect(retentionPolicyMaxAgeValidator('0nanos')).toBe(false); - expect(retentionPolicyMaxAgeValidator('59999999999nanos')).toBe(false); - expect(retentionPolicyMaxAgeValidator('60000000000nanos')).toBe(true); - expect(retentionPolicyMaxAgeValidator('60000000001nanos')).toBe(true); - - expect(retentionPolicyMaxAgeValidator('0micros')).toBe(false); - expect(retentionPolicyMaxAgeValidator('59999999micros')).toBe(false); - expect(retentionPolicyMaxAgeValidator('60000000micros')).toBe(true); - expect(retentionPolicyMaxAgeValidator('60000001micros')).toBe(true); - - expect(retentionPolicyMaxAgeValidator('0ms')).toBe(false); - expect(retentionPolicyMaxAgeValidator('59999ms')).toBe(false); - expect(retentionPolicyMaxAgeValidator('60000ms')).toBe(true); - expect(retentionPolicyMaxAgeValidator('60001ms')).toBe(true); - - expect(retentionPolicyMaxAgeValidator('0s')).toBe(false); - expect(retentionPolicyMaxAgeValidator('1s')).toBe(false); - expect(retentionPolicyMaxAgeValidator('59s')).toBe(false); - expect(retentionPolicyMaxAgeValidator('60s')).toBe(true); - expect(retentionPolicyMaxAgeValidator('61s')).toBe(true); - expect(retentionPolicyMaxAgeValidator('10000s')).toBe(true); - - expect(retentionPolicyMaxAgeValidator('0m')).toBe(false); - expect(retentionPolicyMaxAgeValidator('1m')).toBe(true); - expect(retentionPolicyMaxAgeValidator('100m')).toBe(true); - - expect(retentionPolicyMaxAgeValidator('0h')).toBe(false); - expect(retentionPolicyMaxAgeValidator('1h')).toBe(true); - expect(retentionPolicyMaxAgeValidator('2h')).toBe(true); - }); -}); - -describe('transformFrequencyValidator', () => { - it('should fail when the input is not an integer and valid time unit.', () => { - expect(transformFrequencyValidator('0')).toBe(false); - expect(transformFrequencyValidator('0.1s')).toBe(false); - expect(transformFrequencyValidator('1.1m')).toBe(false); - expect(transformFrequencyValidator('10.1asdf')).toBe(false); - }); - - it('should only allow s/m/h as time unit.', () => { - expect(transformFrequencyValidator('1ms')).toBe(false); - expect(transformFrequencyValidator('1s')).toBe(true); - expect(transformFrequencyValidator('1m')).toBe(true); - expect(transformFrequencyValidator('1h')).toBe(true); - expect(transformFrequencyValidator('1d')).toBe(false); - }); - - it('should only allow values above 0 and up to 1 hour.', () => { - expect(transformFrequencyValidator('0s')).toBe(false); - expect(transformFrequencyValidator('1s')).toBe(true); - expect(transformFrequencyValidator('3599s')).toBe(true); - expect(transformFrequencyValidator('3600s')).toBe(true); - expect(transformFrequencyValidator('3601s')).toBe(false); - expect(transformFrequencyValidator('10000s')).toBe(false); - - expect(transformFrequencyValidator('0m')).toBe(false); - expect(transformFrequencyValidator('1m')).toBe(true); - expect(transformFrequencyValidator('59m')).toBe(true); - expect(transformFrequencyValidator('60m')).toBe(true); - expect(transformFrequencyValidator('61m')).toBe(false); - expect(transformFrequencyValidator('100m')).toBe(false); - - expect(transformFrequencyValidator('0h')).toBe(false); - expect(transformFrequencyValidator('1h')).toBe(true); - expect(transformFrequencyValidator('2h')).toBe(false); - }); -}); - -describe('jsonStringValidator', () => { - it('should return false for non-string input', () => { - expect(jsonStringValidator(false)).toBe(false); - expect(jsonStringValidator(undefined)).toBe(false); - expect(jsonStringValidator(null)).toBe(false); - expect(jsonStringValidator(0)).toBe(false); - expect(jsonStringValidator({})).toBe(false); - }); - - it('should return whether string is parsable as valid json', () => { - expect( - jsonStringValidator(`{ - "must": [], - "must_not": [], - "should": [] - }`) - ).toBe(true); - expect( - jsonStringValidator(`{ - "must":, - }`) - ).toBe(false); - }); -}); diff --git a/x-pack/plugins/transform/public/app/common/validators.ts b/x-pack/plugins/transform/public/app/common/validators.ts deleted file mode 100644 index cde8940f6f18e..0000000000000 --- a/x-pack/plugins/transform/public/app/common/validators.ts +++ /dev/null @@ -1,178 +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 { numberValidator } from '@kbn/ml-agg-utils'; -import { - numberOfRetriesInvalidErrorMessage, - numberRange10To10000NotValidErrorMessage, - numberRangeMinus1To100NotValidErrorMessage, - pageSearchSizeInvalidErrorMessage, -} from './constants/validation_messages'; - -const RETENTION_POLICY_MIN_AGE_SECONDS = 60; -const TIME_UNITS = ['nanos', 'micros', 'ms', 's', 'm', 'h', 'd']; - -/** - * Validates continuous mode time delay input. - * Doesn't allow floating intervals. - * @param value User input value. - */ -export function continuousModeDelayValidator(value: string): boolean { - return value.match(/^(0|\d*(nanos|micros|ms|s|m|h|d))$/) !== null; -} - -/** - * Parses a duration uses a string format like `60s`. - * @param value User input value. - */ -export interface ParsedDuration { - number: number; - timeUnit: string; -} -export function parseDuration(value: string): ParsedDuration | undefined { - if (typeof value !== 'string' || value === null) { - return; - } - - // split string by groups of numbers and letters - const regexStr = value.match(/[a-z]+|[^a-z]+/gi); - - // only valid if one group of numbers and one group of letters - if (regexStr === null || (Array.isArray(regexStr) && regexStr.length !== 2)) { - return; - } - - const number = +regexStr[0]; - const timeUnit = regexStr[1]; - - // only valid if number is an integer - if (isNaN(number) || !Number.isInteger(number)) { - return; - } - - if (!TIME_UNITS.includes(timeUnit)) { - return; - } - - return { number, timeUnit }; -} - -export function isValidRetentionPolicyMaxAge({ number, timeUnit }: ParsedDuration): boolean { - // only valid if value is equal or more than 60s - // supported time units: https://www.elastic.co/guide/en/elasticsearch/reference/master/common-options.html#time-units - return ( - (timeUnit === 'nanos' && number >= RETENTION_POLICY_MIN_AGE_SECONDS * 1000000000) || - (timeUnit === 'micros' && number >= RETENTION_POLICY_MIN_AGE_SECONDS * 1000000) || - (timeUnit === 'ms' && number >= RETENTION_POLICY_MIN_AGE_SECONDS * 1000) || - (timeUnit === 's' && number >= RETENTION_POLICY_MIN_AGE_SECONDS) || - ((timeUnit === 'm' || timeUnit === 'h' || timeUnit === 'd') && number >= 1) - ); -} - -/** - * Validates retention policy max age input. - * Doesn't allow floating intervals. - * @param value User input value. Minimum of 60s. - */ -export function retentionPolicyMaxAgeValidator(value: string): boolean { - const parsedValue = parseDuration(value); - - if (parsedValue === undefined) { - return false; - } - - return isValidRetentionPolicyMaxAge(parsedValue); -} - -// only valid if value is up to 1 hour -export function isValidFrequency({ number, timeUnit }: ParsedDuration): boolean { - return ( - (timeUnit === 's' && number <= 3600) || - (timeUnit === 'm' && number <= 60) || - (timeUnit === 'h' && number === 1) - ); -} - -/** - * Validates transform frequency input. - * Allows time units of s/m/h only. - * Must be above 0 and only up to 1h. - * @param value User input value. - */ -export const transformFrequencyValidator = (value: string): boolean => { - if (typeof value !== 'string' || value === null) { - return false; - } - - // split string by groups of numbers and letters - const regexStr = value.match(/[a-z]+|[^a-z]+/gi); - - // only valid if one group of numbers and one group of letters - if (regexStr === null || (Array.isArray(regexStr) && regexStr.length !== 2)) { - return false; - } - - const number = +regexStr[0]; - const timeUnit = regexStr[1]; - - // only valid if number is an integer above 0 - if (isNaN(number) || !Number.isInteger(number) || number === 0) { - return false; - } - - return isValidFrequency({ number, timeUnit }); -}; - -// A Validator function takes in a value to check and returns an array of error messages. -// If no messages (empty array) get returned, the value is valid. -export type Validator = (value: any, isOptional?: boolean) => string[]; - -/** - * Validates transform max_page_search_size input. - * Must be a number between 10 and 65536. - * @param value User input value. - */ -export const transformSettingsPageSearchSizeValidator: Validator = (value) => - !(value + '').includes('.') && - numberValidator({ min: 10, max: 65536, integerOnly: true })(+value) === null - ? [] - : [pageSearchSizeInvalidErrorMessage]; - -export const transformSettingsNumberOfRetriesValidator: Validator = (value) => - !(value + '').includes('.') && - numberValidator({ min: -1, max: 100, integerOnly: true })(+value) === null - ? [] - : [numberOfRetriesInvalidErrorMessage]; - -/** - * Validates whether string input can be parsed as a valid JSON - * @param value User input value. - */ -export function jsonStringValidator(value: unknown): boolean { - if (typeof value !== 'string') return false; - - try { - return !!JSON.parse(value); - } catch (e) { - // eslint-disable-next-line no-console - console.error(`JSON is invalid.\n${e}`); - return false; - } - return true; -} - -export const integerRangeMinus1To100Validator: Validator = (value) => - !(value + '').includes('.') && - numberValidator({ min: -1, max: 100, integerOnly: true })(+value) === null - ? [] - : [numberRangeMinus1To100NotValidErrorMessage]; - -export const integerRange10To10000Validator: Validator = (value) => - !(value + '').includes('.') && - numberValidator({ min: 10, max: 100001, integerOnly: true })(+value) === null - ? [] - : [numberRange10To10000NotValidErrorMessage]; diff --git a/x-pack/plugins/transform/public/app/common/validators/frequency_validator.test.ts b/x-pack/plugins/transform/public/app/common/validators/frequency_validator.test.ts new file mode 100644 index 0000000000000..1ebdd3d41cd57 --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/frequency_validator.test.ts @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { frequencyValidator } from './frequency_validator'; + +describe('Transform: frequencyValidator()', () => { + // frequencyValidator() returns an array of error messages so + // an array with a length of 0 means a successful validation. + + it('should fail when the input is not an integer and valid time unit.', () => { + expect(frequencyValidator('0')).toEqual(['The frequency value is not valid.']); + expect(frequencyValidator('0.1s')).toEqual(['The frequency value is not valid.']); + expect(frequencyValidator('1.1m')).toEqual(['The frequency value is not valid.']); + expect(frequencyValidator('10.1asdf')).toEqual(['The frequency value is not valid.']); + }); + + it('should only allow s/m/h as time unit.', () => { + expect(frequencyValidator('1ms')).toEqual(['The frequency value is not valid.']); + expect(frequencyValidator('1s')).toEqual([]); + expect(frequencyValidator('1m')).toEqual([]); + expect(frequencyValidator('1h')).toEqual([]); + expect(frequencyValidator('1d')).toEqual(['The frequency value is not valid.']); + }); + + it('should only allow values above 0 and up to 1 hour.', () => { + expect(frequencyValidator('0s')).toEqual(['The frequency value is not valid.']); + expect(frequencyValidator('1s')).toEqual([]); + expect(frequencyValidator('3599s')).toEqual([]); + expect(frequencyValidator('3600s')).toEqual([]); + expect(frequencyValidator('3601s')).toEqual(['The frequency value is not valid.']); + expect(frequencyValidator('10000s')).toEqual(['The frequency value is not valid.']); + + expect(frequencyValidator('0m')).toEqual(['The frequency value is not valid.']); + expect(frequencyValidator('1m')).toEqual([]); + expect(frequencyValidator('59m')).toEqual([]); + expect(frequencyValidator('60m')).toEqual([]); + expect(frequencyValidator('61m')).toEqual(['The frequency value is not valid.']); + expect(frequencyValidator('100m')).toEqual(['The frequency value is not valid.']); + + expect(frequencyValidator('0h')).toEqual(['The frequency value is not valid.']); + expect(frequencyValidator('1h')).toEqual([]); + expect(frequencyValidator('2h')).toEqual(['The frequency value is not valid.']); + }); +}); diff --git a/x-pack/plugins/transform/public/app/common/validators/frequency_validator.ts b/x-pack/plugins/transform/public/app/common/validators/frequency_validator.ts new file mode 100644 index 0000000000000..2c007b091462a --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/frequency_validator.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 { frequencyNotValidErrorMessage } from './messages'; + +import { parseDurationAboveZero } from './parse_duration_above_zero'; +import { isValidFrequency } from './is_valid_frequency'; +import type { Validator } from './types'; + +// Only allow frequencies in the form of 1s/1h etc. +export const frequencyValidator: Validator = (arg) => { + const parsedArg = parseDurationAboveZero(arg); + + if (Array.isArray(parsedArg)) { + return parsedArg; + } + + return isValidFrequency(parsedArg) ? [] : [frequencyNotValidErrorMessage]; +}; diff --git a/x-pack/plugins/transform/public/app/common/validators/index.ts b/x-pack/plugins/transform/public/app/common/validators/index.ts new file mode 100644 index 0000000000000..8cf312b828dd3 --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/index.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { frequencyValidator } from './frequency_validator'; +export { integerRangeMinus1To100Validator } from './integer_range_minus_1_to_100_validator'; +export { integerAboveZeroValidator } from './integer_above_zero_validator'; +export { isJsonString } from './is_json_string'; +export { isContinuousModeDelay } from './is_continuous_mode_delay'; +export { isRetentionPolicyMaxAge } from './is_retention_policy_max_age'; +export { isTransformWizardFrequency } from './is_transform_wizard_frequency'; +export { parseDurationAboveZero } from './parse_duration_above_zero'; +export { retentionPolicyMaxAgeValidator } from './retention_policy_max_age_validator'; +export { stringValidator } from './string_validator'; +export { transformSettingsNumberOfRetriesValidator } from './transform_settings_number_of_retries_validator'; +export { transformSettingsPageSearchSizeValidator } from './transform_settings_page_search_size_validator'; +export type { Validator } from './types'; diff --git a/x-pack/plugins/transform/public/app/common/validators/integer_above_zero_validator.test.ts b/x-pack/plugins/transform/public/app/common/validators/integer_above_zero_validator.test.ts new file mode 100644 index 0000000000000..1031e23565933 --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/integer_above_zero_validator.test.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { integerAboveZeroValidator } from './integer_above_zero_validator'; + +describe('Transform: integerAboveZeroValidator()', () => { + it('should only allow integers above zero', () => { + // invalid + expect(integerAboveZeroValidator('a-string')).toEqual([ + 'Value needs to be an integer above zero.', + ]); + expect(integerAboveZeroValidator('0s')).toEqual(['Value needs to be an integer above zero.']); + expect(integerAboveZeroValidator('1m')).toEqual(['Value needs to be an integer above zero.']); + expect(integerAboveZeroValidator('1..')).toEqual(['Value needs to be an integer above zero.']); + expect(integerAboveZeroValidator(-1)).toEqual(['Value needs to be an integer above zero.']); + expect(integerAboveZeroValidator(0)).toEqual(['Value needs to be an integer above zero.']); + expect(integerAboveZeroValidator(0.1)).toEqual(['Value needs to be an integer above zero.']); + + // valid + expect(integerAboveZeroValidator(1)).toEqual([]); + expect(integerAboveZeroValidator('1')).toEqual([]); + expect(integerAboveZeroValidator('1.')).toEqual([]); + expect(integerAboveZeroValidator('1.0')).toEqual([]); + }); +}); diff --git a/x-pack/plugins/transform/public/app/common/validators/integer_above_zero_validator.ts b/x-pack/plugins/transform/public/app/common/validators/integer_above_zero_validator.ts new file mode 100644 index 0000000000000..c7903dcbc7f9e --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/integer_above_zero_validator.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import { numberValidator } from '@kbn/ml-agg-utils'; + +import type { Validator } from './types'; + +const numberAboveZeroNotValidErrorMessage = i18n.translate( + 'xpack.transform.transformList.editFlyoutFormNumberAboveZeroNotValidErrorMessage', + { + defaultMessage: 'Value needs to be an integer above zero.', + } +); + +// memoize validator +const validator = numberValidator({ min: 1, integerOnly: true }); + +export const integerAboveZeroValidator: Validator = (value) => + validator(+value) === null ? [] : [numberAboveZeroNotValidErrorMessage]; diff --git a/x-pack/plugins/transform/public/app/common/validators/integer_range_minus_1_to_100_validator.ts b/x-pack/plugins/transform/public/app/common/validators/integer_range_minus_1_to_100_validator.ts new file mode 100644 index 0000000000000..290ca7e556dda --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/integer_range_minus_1_to_100_validator.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { numberValidator } from '@kbn/ml-agg-utils'; +import { i18n } from '@kbn/i18n'; + +import type { Validator } from './types'; + +const numberRangeMinus1To100NotValidErrorMessage = i18n.translate( + 'xpack.transform.transformSettingValidations.numberGreaterThanOrEqualToNegativeOneNotValidErrorMessage', + { + defaultMessage: 'Number of retries needs to be between 0 and 100, or -1 for infinite retries.', + } +); + +// memoize validator +const validator = numberValidator({ min: -1, max: 100, integerOnly: true }); + +export const integerRangeMinus1To100Validator: Validator = (value) => + validator(+value) === null ? [] : [numberRangeMinus1To100NotValidErrorMessage]; diff --git a/x-pack/plugins/transform/public/app/common/validators/is_continuous_mode_delay.test.ts b/x-pack/plugins/transform/public/app/common/validators/is_continuous_mode_delay.test.ts new file mode 100644 index 0000000000000..934dd39d00683 --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/is_continuous_mode_delay.test.ts @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isContinuousModeDelay } from './is_continuous_mode_delay'; + +describe('isContinuousModeDelay', () => { + it('should allow 0 input without unit', () => { + expect(isContinuousModeDelay('0')).toBe(true); + }); + + it('should allow 0 input with unit provided', () => { + expect(isContinuousModeDelay('0s')).toBe(true); + }); + + it('should allow integer input with unit provided', () => { + expect(isContinuousModeDelay('234nanos')).toBe(true); + }); + + it('should not allow integer input without unit provided', () => { + expect(isContinuousModeDelay('90000')).toBe(false); + }); + + it('should not allow float input', () => { + expect(isContinuousModeDelay('122.5d')).toBe(false); + }); +}); diff --git a/x-pack/plugins/transform/public/app/common/validators/is_continuous_mode_delay.ts b/x-pack/plugins/transform/public/app/common/validators/is_continuous_mode_delay.ts new file mode 100644 index 0000000000000..af3d837db4c92 --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/is_continuous_mode_delay.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. + */ + +/** + * Validates continuous mode time delay input. + * Doesn't allow floating intervals. + * @param value User input value. + */ +export function isContinuousModeDelay(value: string): boolean { + return value.match(/^(0|\d*(nanos|micros|ms|s|m|h|d))$/) !== null; +} diff --git a/x-pack/plugins/transform/public/app/common/validators/is_json_string.test.ts b/x-pack/plugins/transform/public/app/common/validators/is_json_string.test.ts new file mode 100644 index 0000000000000..89e1bb9a14563 --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/is_json_string.test.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isJsonString } from './is_json_string'; + +describe('isJsonString', () => { + it('should return false for non-string input', () => { + expect(isJsonString(true)).toBe(false); + expect(isJsonString(false)).toBe(false); + expect(isJsonString(undefined)).toBe(false); + expect(isJsonString(null)).toBe(false); + expect(isJsonString(0)).toBe(false); + expect(isJsonString({})).toBe(false); + }); + + it('should return whether string is parsable as valid json', () => { + expect( + isJsonString(`{ + "must": [], + "must_not": [], + "should": [] + }`) + ).toBe(true); + expect( + isJsonString(`{ + "must":, + }`) + ).toBe(false); + }); +}); diff --git a/x-pack/plugins/transform/public/app/common/validators/is_json_string.ts b/x-pack/plugins/transform/public/app/common/validators/is_json_string.ts new file mode 100644 index 0000000000000..985374fe1fa80 --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/is_json_string.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/** + * Validates whether string input can be parsed as a valid JSON + * @param value User input value. + */ +export function isJsonString(value: unknown): boolean { + if (typeof value !== 'string') return false; + + try { + return !!JSON.parse(value); + } catch (e) { + return false; + } +} diff --git a/x-pack/plugins/transform/public/app/common/validators/is_retention_policy_max_age.test.ts b/x-pack/plugins/transform/public/app/common/validators/is_retention_policy_max_age.test.ts new file mode 100644 index 0000000000000..bc28b01202705 --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/is_retention_policy_max_age.test.ts @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isRetentionPolicyMaxAge } from './is_retention_policy_max_age'; + +describe('isRetentionPolicyMaxAge', () => { + it('should fail when the input is not an integer and valid time unit.', () => { + expect(isRetentionPolicyMaxAge('0')).toBe(false); + expect(isRetentionPolicyMaxAge('0.1s')).toBe(false); + expect(isRetentionPolicyMaxAge('1.1m')).toBe(false); + expect(isRetentionPolicyMaxAge('10.1asdf')).toBe(false); + }); + + it('should only allow values equal or above 60s.', () => { + expect(isRetentionPolicyMaxAge('0nanos')).toBe(false); + expect(isRetentionPolicyMaxAge('59999999999nanos')).toBe(false); + expect(isRetentionPolicyMaxAge('60000000000nanos')).toBe(true); + expect(isRetentionPolicyMaxAge('60000000001nanos')).toBe(true); + + expect(isRetentionPolicyMaxAge('0micros')).toBe(false); + expect(isRetentionPolicyMaxAge('59999999micros')).toBe(false); + expect(isRetentionPolicyMaxAge('60000000micros')).toBe(true); + expect(isRetentionPolicyMaxAge('60000001micros')).toBe(true); + + expect(isRetentionPolicyMaxAge('0ms')).toBe(false); + expect(isRetentionPolicyMaxAge('59999ms')).toBe(false); + expect(isRetentionPolicyMaxAge('60000ms')).toBe(true); + expect(isRetentionPolicyMaxAge('60001ms')).toBe(true); + + expect(isRetentionPolicyMaxAge('0s')).toBe(false); + expect(isRetentionPolicyMaxAge('1s')).toBe(false); + expect(isRetentionPolicyMaxAge('59s')).toBe(false); + expect(isRetentionPolicyMaxAge('60s')).toBe(true); + expect(isRetentionPolicyMaxAge('61s')).toBe(true); + expect(isRetentionPolicyMaxAge('10000s')).toBe(true); + + expect(isRetentionPolicyMaxAge('0m')).toBe(false); + expect(isRetentionPolicyMaxAge('1m')).toBe(true); + expect(isRetentionPolicyMaxAge('100m')).toBe(true); + + expect(isRetentionPolicyMaxAge('0h')).toBe(false); + expect(isRetentionPolicyMaxAge('1h')).toBe(true); + expect(isRetentionPolicyMaxAge('2h')).toBe(true); + }); +}); diff --git a/x-pack/plugins/transform/public/app/common/validators/is_retention_policy_max_age.ts b/x-pack/plugins/transform/public/app/common/validators/is_retention_policy_max_age.ts new file mode 100644 index 0000000000000..fdd8a4b9e7b72 --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/is_retention_policy_max_age.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; + +import { parseDurationAboveZero } from './parse_duration_above_zero'; + +const RETENTION_POLICY_MIN_AGE_SECONDS = 60; + +export function isRetentionPolicyMaxAge(arg: unknown): boolean { + const parsedArg = parseDurationAboveZero(arg); + + if (!isPopulatedObject(parsedArg, ['number', 'timeUnit'])) { + return false; + } + + const { number, timeUnit } = parsedArg; + + if (typeof number !== 'number' || typeof timeUnit !== 'string') { + return false; + } + + // only valid if value is equal or more than 60s + // supported time units: https://www.elastic.co/guide/en/elasticsearch/reference/master/common-options.html#time-units + return ( + (timeUnit === 'nanos' && number >= RETENTION_POLICY_MIN_AGE_SECONDS * 1000000000) || + (timeUnit === 'micros' && number >= RETENTION_POLICY_MIN_AGE_SECONDS * 1000000) || + (timeUnit === 'ms' && number >= RETENTION_POLICY_MIN_AGE_SECONDS * 1000) || + (timeUnit === 's' && number >= RETENTION_POLICY_MIN_AGE_SECONDS) || + ((timeUnit === 'm' || timeUnit === 'h' || timeUnit === 'd') && number >= 1) + ); +} diff --git a/x-pack/plugins/transform/public/app/common/validators/is_transform_wizard_frequency.test.ts b/x-pack/plugins/transform/public/app/common/validators/is_transform_wizard_frequency.test.ts new file mode 100644 index 0000000000000..8c6d1b79a2eae --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/is_transform_wizard_frequency.test.ts @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isTransformWizardFrequency } from './is_transform_wizard_frequency'; + +describe('isTransformWizardFrequency', () => { + it('should fail when the input is not an integer and valid time unit.', () => { + expect(isTransformWizardFrequency('0')).toBe(false); + expect(isTransformWizardFrequency('0.1s')).toBe(false); + expect(isTransformWizardFrequency('1.1m')).toBe(false); + expect(isTransformWizardFrequency('10.1asdf')).toBe(false); + }); + + it('should only allow s/m/h as time unit.', () => { + expect(isTransformWizardFrequency('1ms')).toBe(false); + expect(isTransformWizardFrequency('1s')).toBe(true); + expect(isTransformWizardFrequency('1m')).toBe(true); + expect(isTransformWizardFrequency('1h')).toBe(true); + expect(isTransformWizardFrequency('1d')).toBe(false); + }); + + it('should only allow values above 0 and up to 1 hour.', () => { + expect(isTransformWizardFrequency('0s')).toBe(false); + expect(isTransformWizardFrequency('1s')).toBe(true); + expect(isTransformWizardFrequency('3599s')).toBe(true); + expect(isTransformWizardFrequency('3600s')).toBe(true); + expect(isTransformWizardFrequency('3601s')).toBe(false); + expect(isTransformWizardFrequency('10000s')).toBe(false); + + expect(isTransformWizardFrequency('0m')).toBe(false); + expect(isTransformWizardFrequency('1m')).toBe(true); + expect(isTransformWizardFrequency('59m')).toBe(true); + expect(isTransformWizardFrequency('60m')).toBe(true); + expect(isTransformWizardFrequency('61m')).toBe(false); + expect(isTransformWizardFrequency('100m')).toBe(false); + + expect(isTransformWizardFrequency('0h')).toBe(false); + expect(isTransformWizardFrequency('1h')).toBe(true); + expect(isTransformWizardFrequency('2h')).toBe(false); + }); +}); diff --git a/x-pack/plugins/transform/public/app/common/validators/is_transform_wizard_frequency.ts b/x-pack/plugins/transform/public/app/common/validators/is_transform_wizard_frequency.ts new file mode 100644 index 0000000000000..4063bac69f02a --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/is_transform_wizard_frequency.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 { isValidFrequency } from './is_valid_frequency'; + +/** + * Validates transform frequency input. + * Allows time units of s/m/h only. + * Must be above 0 and only up to 1h. + * @param value User input value. + */ +export const isTransformWizardFrequency = (value: string): boolean => { + if (typeof value !== 'string' || value === null) { + return false; + } + + // split string by groups of numbers and letters + const regexStr = value.match(/[a-z]+|[^a-z]+/gi); + + // only valid if one group of numbers and one group of letters + if (regexStr === null || (Array.isArray(regexStr) && regexStr.length !== 2)) { + return false; + } + + const number = +regexStr[0]; + const timeUnit = regexStr[1]; + + // only valid if number is an integer above 0 + if (isNaN(number) || !Number.isInteger(number) || number === 0) { + return false; + } + + return isValidFrequency({ number, timeUnit }); +}; diff --git a/x-pack/plugins/transform/public/app/common/validators/is_valid_frequency.ts b/x-pack/plugins/transform/public/app/common/validators/is_valid_frequency.ts new file mode 100644 index 0000000000000..6fe7781a5d6f4 --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/is_valid_frequency.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; + +import type { ParsedDuration } from './types'; + +// only valid if value is up to 1 hour +export function isValidFrequency(arg: unknown): arg is ParsedDuration { + if (!isPopulatedObject(arg, ['number', 'timeUnit'])) { + return false; + } + + const { number, timeUnit } = arg; + + if (typeof number !== 'number' || typeof timeUnit !== 'string') { + return false; + } + + return ( + (timeUnit === 's' && number <= 3600) || + (timeUnit === 'm' && number <= 60) || + (timeUnit === 'h' && number === 1) + ); +} diff --git a/x-pack/plugins/transform/public/app/common/validators/messages.ts b/x-pack/plugins/transform/public/app/common/validators/messages.ts new file mode 100644 index 0000000000000..7355fb2d7022b --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/messages.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +// Retention policy max age validator +export const retentionPolicyMaxAgeInvalidErrorMessage = i18n.translate( + 'xpack.transform.transformSettingValidations.retentionPolicyMaxAgeInvalidMessage', + { + defaultMessage: 'Invalid max age format. Minimum of 60s required.', + } +); + +export const requiredErrorMessage = i18n.translate( + 'xpack.transform.transformList.editFlyoutFormRequiredErrorMessage', + { + defaultMessage: 'Required field.', + } +); + +export const stringNotValidErrorMessage = i18n.translate( + 'xpack.transform.transformList.editFlyoutFormStringNotValidErrorMessage', + { + defaultMessage: 'Value needs to be of type string.', + } +); + +export const frequencyNotValidErrorMessage = i18n.translate( + 'xpack.transform.transformList.editFlyoutFormFrequencyNotValidErrorMessage', + { + defaultMessage: 'The frequency value is not valid.', + } +); diff --git a/x-pack/plugins/transform/public/app/common/validators/parse_duration_above_zero.test.ts b/x-pack/plugins/transform/public/app/common/validators/parse_duration_above_zero.test.ts new file mode 100644 index 0000000000000..6f48aab3e8ff3 --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/parse_duration_above_zero.test.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { parseDurationAboveZero } from './parse_duration_above_zero'; + +describe('parseDurationAboveZero', () => { + it('should return error when the input is not an integer and valid time unit.', () => { + expect(parseDurationAboveZero('0')).toEqual(['The frequency value is not valid.']); + expect(parseDurationAboveZero('0.1s')).toEqual(['The frequency value is not valid.']); + expect(parseDurationAboveZero('1.1m')).toEqual(['The frequency value is not valid.']); + expect(parseDurationAboveZero('10.1asdf')).toEqual(['The frequency value is not valid.']); + }); + + it('should return parsed data for valid time units nanos|micros|ms|s|m|h|d.', () => { + expect(parseDurationAboveZero('1a')).toEqual(['The frequency value is not valid.']); + expect(parseDurationAboveZero('1nanos')).toEqual({ + number: 1, + timeUnit: 'nanos', + }); + expect(parseDurationAboveZero('1micros')).toEqual({ + number: 1, + timeUnit: 'micros', + }); + expect(parseDurationAboveZero('1ms')).toEqual({ number: 1, timeUnit: 'ms' }); + expect(parseDurationAboveZero('1s')).toEqual({ number: 1, timeUnit: 's' }); + expect(parseDurationAboveZero('1m')).toEqual({ number: 1, timeUnit: 'm' }); + expect(parseDurationAboveZero('1h')).toEqual({ number: 1, timeUnit: 'h' }); + expect(parseDurationAboveZero('1d')).toEqual({ number: 1, timeUnit: 'd' }); + }); +}); diff --git a/x-pack/plugins/transform/public/app/common/validators/parse_duration_above_zero.ts b/x-pack/plugins/transform/public/app/common/validators/parse_duration_above_zero.ts new file mode 100644 index 0000000000000..2eb468b9b8aea --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/parse_duration_above_zero.ts @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { frequencyNotValidErrorMessage, stringNotValidErrorMessage } from './messages'; + +import type { ParsedDuration } from './types'; + +const TIME_UNITS = ['nanos', 'micros', 'ms', 's', 'm', 'h', 'd']; + +export function parseDurationAboveZero(arg: unknown): ParsedDuration | string[] { + if (typeof arg !== 'string' || arg === null) { + return [stringNotValidErrorMessage]; + } + + // split string by groups of numbers and letters + const regexStr = arg.match(/[a-z]+|[^a-z]+/gi); + + // only valid if one group of numbers and one group of letters + if (regexStr === null || (Array.isArray(regexStr) && regexStr.length !== 2)) { + return [frequencyNotValidErrorMessage]; + } + + const number = +regexStr[0]; + const timeUnit = regexStr[1]; + + // only valid if number is an integer above 0 + if (isNaN(number) || !Number.isInteger(number) || number === 0) { + return [frequencyNotValidErrorMessage]; + } + + if (!TIME_UNITS.includes(timeUnit)) { + return [frequencyNotValidErrorMessage]; + } + + return { number, timeUnit }; +} diff --git a/x-pack/plugins/transform/public/app/common/validators/retention_policy_max_age_validator.test.ts b/x-pack/plugins/transform/public/app/common/validators/retention_policy_max_age_validator.test.ts new file mode 100644 index 0000000000000..7e1f8a6614b65 --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/retention_policy_max_age_validator.test.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { retentionPolicyMaxAgeValidator } from './retention_policy_max_age_validator'; + +describe('Transform: retentionPolicyMaxAgeValidator()', () => { + it('should only allow values equal or above 60s.', () => { + expect(retentionPolicyMaxAgeValidator('0nanos')).toEqual(['The frequency value is not valid.']); + expect(retentionPolicyMaxAgeValidator('59999999999nanos')).toEqual([ + 'Invalid max age format. Minimum of 60s required.', + ]); + expect(retentionPolicyMaxAgeValidator('60000000000nanos')).toEqual([]); + expect(retentionPolicyMaxAgeValidator('60000000001nanos')).toEqual([]); + + expect(retentionPolicyMaxAgeValidator('0micros')).toEqual([ + 'The frequency value is not valid.', + ]); + expect(retentionPolicyMaxAgeValidator('59999999micros')).toEqual([ + 'Invalid max age format. Minimum of 60s required.', + ]); + expect(retentionPolicyMaxAgeValidator('60000000micros')).toEqual([]); + expect(retentionPolicyMaxAgeValidator('60000001micros')).toEqual([]); + + expect(retentionPolicyMaxAgeValidator('0ms')).toEqual(['The frequency value is not valid.']); + expect(retentionPolicyMaxAgeValidator('59999ms')).toEqual([ + 'Invalid max age format. Minimum of 60s required.', + ]); + expect(retentionPolicyMaxAgeValidator('60000ms')).toEqual([]); + expect(retentionPolicyMaxAgeValidator('60001ms')).toEqual([]); + + expect(retentionPolicyMaxAgeValidator('0s')).toEqual(['The frequency value is not valid.']); + expect(retentionPolicyMaxAgeValidator('1s')).toEqual([ + 'Invalid max age format. Minimum of 60s required.', + ]); + expect(retentionPolicyMaxAgeValidator('59s')).toEqual([ + 'Invalid max age format. Minimum of 60s required.', + ]); + expect(retentionPolicyMaxAgeValidator('60s')).toEqual([]); + expect(retentionPolicyMaxAgeValidator('61s')).toEqual([]); + expect(retentionPolicyMaxAgeValidator('10000s')).toEqual([]); + + expect(retentionPolicyMaxAgeValidator('0m')).toEqual(['The frequency value is not valid.']); + expect(retentionPolicyMaxAgeValidator('1m')).toEqual([]); + expect(retentionPolicyMaxAgeValidator('100m')).toEqual([]); + + expect(retentionPolicyMaxAgeValidator('0h')).toEqual(['The frequency value is not valid.']); + expect(retentionPolicyMaxAgeValidator('1h')).toEqual([]); + expect(retentionPolicyMaxAgeValidator('2h')).toEqual([]); + }); +}); diff --git a/x-pack/plugins/transform/public/app/common/validators/retention_policy_max_age_validator.ts b/x-pack/plugins/transform/public/app/common/validators/retention_policy_max_age_validator.ts new file mode 100644 index 0000000000000..f92e242f0dc89 --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/retention_policy_max_age_validator.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { retentionPolicyMaxAgeInvalidErrorMessage } from './messages'; + +import { parseDurationAboveZero } from './parse_duration_above_zero'; +import { isRetentionPolicyMaxAge } from './is_retention_policy_max_age'; +import type { Validator } from './types'; + +/** + * Validates retention policy max age input. + * Doesn't allow floating intervals. + * @param value User input value. Minimum of 60s. + */ +export const retentionPolicyMaxAgeValidator: Validator = (arg) => { + const parsedArg = parseDurationAboveZero(arg); + + if (Array.isArray(parsedArg)) { + return parsedArg; + } + + // We pass in again the original `arg`, not `parsedArg` since it will parse it again. + return isRetentionPolicyMaxAge(arg) ? [] : [retentionPolicyMaxAgeInvalidErrorMessage]; +}; diff --git a/x-pack/plugins/transform/public/app/common/validators/string_validator.test.ts b/x-pack/plugins/transform/public/app/common/validators/string_validator.test.ts new file mode 100644 index 0000000000000..6956ef305a66a --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/string_validator.test.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { stringValidator } from './string_validator'; + +describe('Transform: stringValidator()', () => { + it('should allow an empty string for optional fields', () => { + expect(stringValidator('')).toEqual([]); + }); + + it('should not allow an empty string for required fields', () => { + expect(stringValidator('', false)).toEqual(['Required field.']); + }); +}); diff --git a/x-pack/plugins/transform/public/app/common/validators/string_validator.ts b/x-pack/plugins/transform/public/app/common/validators/string_validator.ts new file mode 100644 index 0000000000000..e0c417036daec --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/string_validator.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { requiredErrorMessage, stringNotValidErrorMessage } from './messages'; + +import type { Validator } from './types'; + +export const stringValidator: Validator = (value, isOptional = true) => { + if (typeof value !== 'string') { + return [stringNotValidErrorMessage]; + } + + if (value.length === 0 && !isOptional) { + return [requiredErrorMessage]; + } + + return []; +}; diff --git a/x-pack/plugins/transform/public/app/common/validators/transform_settings_number_of_retries_validator.ts b/x-pack/plugins/transform/public/app/common/validators/transform_settings_number_of_retries_validator.ts new file mode 100644 index 0000000000000..c2eb421c56dfd --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/transform_settings_number_of_retries_validator.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import { numberValidator } from '@kbn/ml-agg-utils'; + +import type { Validator } from './types'; + +const numberOfRetriesInvalidErrorMessage = i18n.translate( + 'xpack.transform.transformSettingsValidations.numberOfRetriesInvalidErrorMessage', + { + defaultMessage: 'Number of retries needs to be between 0 and 100, or -1 for infinite retries.', + } +); + +// memoize validator +const validator = numberValidator({ min: -1, max: 100, integerOnly: true }); + +export const transformSettingsNumberOfRetriesValidator: Validator = (value) => + validator(+value) === null ? [] : [numberOfRetriesInvalidErrorMessage]; diff --git a/x-pack/plugins/transform/public/app/common/validators/transform_settings_page_search_size_validator.ts b/x-pack/plugins/transform/public/app/common/validators/transform_settings_page_search_size_validator.ts new file mode 100644 index 0000000000000..b177a3680d948 --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/transform_settings_page_search_size_validator.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import { numberValidator } from '@kbn/ml-agg-utils'; + +import type { Validator } from './types'; + +const pageSearchSizeInvalidErrorMessage = i18n.translate( + 'xpack.transform.transformSettingValidations.maxPageSearchSizeInvalidMessage', + { + defaultMessage: 'Maximum page search size needs to be an integer between 10 and 65536.', + } +); + +// memoize validator +const validator = numberValidator({ min: 10, max: 65536, integerOnly: true }); + +/** + * Validates transform max_page_search_size input. + * Must be a number between 10 and 65536. + * @param value User input value. + */ +export const transformSettingsPageSearchSizeValidator: Validator = (value) => + validator(+value) === null ? [] : [pageSearchSizeInvalidErrorMessage]; diff --git a/x-pack/plugins/transform/public/app/common/validators/types.ts b/x-pack/plugins/transform/public/app/common/validators/types.ts new file mode 100644 index 0000000000000..de1f51aa518c5 --- /dev/null +++ b/x-pack/plugins/transform/public/app/common/validators/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. + */ + +/** + * A Validator function takes in a value to check and returns an array of error messages. + * If no messages (empty array) get returned, the value is valid. + * + * Informal naming convention: + * `is*()` is a plain check that returns a `boolean` + * `*Validator()` implements this type and returns error messages. + * + * @param value The value to be validated + * @param isOptional Optional boolean flag if the provided value is optional + */ +export type Validator = (value: T, isOptional?: boolean) => string[]; + +/** + * Interface for the parsed result of a duration string. + */ +export interface ParsedDuration { + number: number; + timeUnit: string; +} diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/config.ts b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/config.ts index 4003f9f88d40d..0b1d4f1caa521 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/config.ts +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { jsonStringValidator } from '../../../../../../common/validators'; +import { isJsonString } from '../../../../../../common/validators'; import { isPivotAggsConfigWithUiBase, PivotAggsConfigBase, @@ -209,7 +209,7 @@ export function getFilterAggTypeConfig( 2 ), isValid() { - return jsonStringValidator(this.filterAggConfig); + return isJsonString(this.filterAggConfig); }, getEsAggConfig() { return JSON.parse(this.filterAggConfig!); @@ -224,7 +224,7 @@ export function getFilterAggTypeConfig( return this.filterAggConfig !== undefined ? JSON.parse(this.filterAggConfig!) : {}; }, isValid() { - return jsonStringValidator(this.filterAggConfig); + return isJsonString(this.filterAggConfig); }, }; } diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_details/step_details_form.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_details/step_details_form.tsx index 424d6dd820df6..57f9388311210 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_details/step_details_form.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_details/step_details_form.tsx @@ -29,7 +29,7 @@ import { toMountPoint } from '@kbn/react-kibana-mount'; import { CreateDataViewForm } from '@kbn/ml-data-view-utils/components/create_data_view_form_row'; import { DestinationIndexForm } from '@kbn/ml-creation-wizard-utils/components/destination_index_form'; -import { retentionPolicyMaxAgeInvalidErrorMessage } from '../../../../common/constants/validation_messages'; +import { retentionPolicyMaxAgeInvalidErrorMessage } from '../../../../common/validators/messages'; import { DEFAULT_TRANSFORM_FREQUENCY } from '../../../../../../common/constants'; import { TransformId } from '../../../../../../common/types/transform'; import { isValidIndexName } from '../../../../../../common/utils/es_utils'; @@ -54,10 +54,10 @@ import { } from '../../../../common'; import { EsIndexName } from './common'; import { - continuousModeDelayValidator, + isContinuousModeDelay, + isRetentionPolicyMaxAge, + isTransformWizardFrequency, integerRangeMinus1To100Validator, - retentionPolicyMaxAgeValidator, - transformFrequencyValidator, transformSettingsPageSearchSizeValidator, } from '../../../../common/validators'; import { StepDefineExposedState } from '../step_define/common'; @@ -260,7 +260,7 @@ export const StepDetailsForm: FC = React.memo( isContinuousModeAvailable ? sourceIndexDateFieldNames[0] : '' ); const [continuousModeDelay, setContinuousModeDelay] = useState(defaults.continuousModeDelay); - const isContinuousModeDelayValid = continuousModeDelayValidator(continuousModeDelay); + const isContinuousModeDelayValid = isContinuousModeDelay(continuousModeDelay); // Retention Policy const isRetentionPolicyAvailable = destIndexAvailableTimeFields.length > 0; @@ -274,7 +274,7 @@ export const StepDetailsForm: FC = React.memo( defaults.retentionPolicyMaxAge ); const retentionPolicyMaxAgeEmpty = retentionPolicyMaxAge === ''; - const isRetentionPolicyMaxAgeValid = retentionPolicyMaxAgeValidator(retentionPolicyMaxAge); + const isRetentionPolicyMaxAgeValid = isRetentionPolicyMaxAge(retentionPolicyMaxAge); useEffect(() => { // Reset retention policy settings when the user disables the whole option @@ -308,7 +308,7 @@ export const StepDetailsForm: FC = React.memo( const dataViewTitleExists = dataViewTitles?.some((name) => destinationIndex === name) ?? false; const [transformFrequency, setTransformFrequency] = useState(defaults.transformFrequency); - const isTransformFrequencyValid = transformFrequencyValidator(transformFrequency); + const isTransformFrequencyValid = isTransformWizardFrequency(transformFrequency); const [transformSettingsMaxPageSearchSize, setTransformSettingsMaxPageSearchSize] = useState< number | undefined diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/use_edit_transform_flyout.test.ts b/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/use_edit_transform_flyout.test.ts index 1aeb7a425331f..ebea339c44300 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/use_edit_transform_flyout.test.ts +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/use_edit_transform_flyout.test.ts @@ -10,11 +10,7 @@ import { TransformPivotConfig } from '../../../../../../common/types/transform'; import { applyFormStateToTransformConfig, formReducerFactory, - frequencyValidator, getDefaultState, - integerAboveZeroValidator, - retentionPolicyMaxAgeValidator, - stringValidator, } from './use_edit_transform_flyout'; const getTransformConfigMock = (): TransformPivotConfig => ({ @@ -232,111 +228,3 @@ describe('Transform: formReducerFactory()', () => { ]); }); }); - -describe('Transform: stringValidator()', () => { - it('should allow an empty string for optional fields', () => { - expect(stringValidator('')).toHaveLength(0); - }); - - it('should not allow an empty string for required fields', () => { - expect(stringValidator('', false)).toHaveLength(1); - }); -}); - -describe('Transform: frequencyValidator()', () => { - const transformFrequencyValidator = (arg: string) => frequencyValidator(arg).length === 0; - - it('should fail when the input is not an integer and valid time unit.', () => { - expect(transformFrequencyValidator('0')).toBe(false); - expect(transformFrequencyValidator('0.1s')).toBe(false); - expect(transformFrequencyValidator('1.1m')).toBe(false); - expect(transformFrequencyValidator('10.1asdf')).toBe(false); - }); - - it('should only allow s/m/h as time unit.', () => { - expect(transformFrequencyValidator('1ms')).toBe(false); - expect(transformFrequencyValidator('1s')).toBe(true); - expect(transformFrequencyValidator('1m')).toBe(true); - expect(transformFrequencyValidator('1h')).toBe(true); - expect(transformFrequencyValidator('1d')).toBe(false); - }); - - it('should only allow values above 0 and up to 1 hour.', () => { - expect(transformFrequencyValidator('0s')).toBe(false); - expect(transformFrequencyValidator('1s')).toBe(true); - expect(transformFrequencyValidator('3599s')).toBe(true); - expect(transformFrequencyValidator('3600s')).toBe(true); - expect(transformFrequencyValidator('3601s')).toBe(false); - expect(transformFrequencyValidator('10000s')).toBe(false); - - expect(transformFrequencyValidator('0m')).toBe(false); - expect(transformFrequencyValidator('1m')).toBe(true); - expect(transformFrequencyValidator('59m')).toBe(true); - expect(transformFrequencyValidator('60m')).toBe(true); - expect(transformFrequencyValidator('61m')).toBe(false); - expect(transformFrequencyValidator('100m')).toBe(false); - - expect(transformFrequencyValidator('0h')).toBe(false); - expect(transformFrequencyValidator('1h')).toBe(true); - expect(transformFrequencyValidator('2h')).toBe(false); - }); -}); - -describe('Transform: retentionPolicyMaxAgeValidator()', () => { - const transformRetentionPolicyMaxAgeValidator = (arg: string) => - retentionPolicyMaxAgeValidator(arg).length === 0; - - it('should only allow values equal or above 60s.', () => { - expect(transformRetentionPolicyMaxAgeValidator('0nanos')).toBe(false); - expect(transformRetentionPolicyMaxAgeValidator('59999999999nanos')).toBe(false); - expect(transformRetentionPolicyMaxAgeValidator('60000000000nanos')).toBe(true); - expect(transformRetentionPolicyMaxAgeValidator('60000000001nanos')).toBe(true); - - expect(transformRetentionPolicyMaxAgeValidator('0micros')).toBe(false); - expect(transformRetentionPolicyMaxAgeValidator('59999999micros')).toBe(false); - expect(transformRetentionPolicyMaxAgeValidator('60000000micros')).toBe(true); - expect(transformRetentionPolicyMaxAgeValidator('60000001micros')).toBe(true); - - expect(transformRetentionPolicyMaxAgeValidator('0ms')).toBe(false); - expect(transformRetentionPolicyMaxAgeValidator('59999ms')).toBe(false); - expect(transformRetentionPolicyMaxAgeValidator('60000ms')).toBe(true); - expect(transformRetentionPolicyMaxAgeValidator('60001ms')).toBe(true); - - expect(transformRetentionPolicyMaxAgeValidator('0s')).toBe(false); - expect(transformRetentionPolicyMaxAgeValidator('1s')).toBe(false); - expect(transformRetentionPolicyMaxAgeValidator('59s')).toBe(false); - expect(transformRetentionPolicyMaxAgeValidator('60s')).toBe(true); - expect(transformRetentionPolicyMaxAgeValidator('61s')).toBe(true); - expect(transformRetentionPolicyMaxAgeValidator('10000s')).toBe(true); - - expect(transformRetentionPolicyMaxAgeValidator('0m')).toBe(false); - expect(transformRetentionPolicyMaxAgeValidator('1m')).toBe(true); - expect(transformRetentionPolicyMaxAgeValidator('100m')).toBe(true); - - expect(transformRetentionPolicyMaxAgeValidator('0h')).toBe(false); - expect(transformRetentionPolicyMaxAgeValidator('1h')).toBe(true); - expect(transformRetentionPolicyMaxAgeValidator('2h')).toBe(true); - }); -}); - -describe('Transform: integerAboveZeroValidator()', () => { - it('should only allow integers above zero', () => { - // integerAboveZeroValidator() returns an array of error messages so - // an array with a length of 0 means a successful validation. - - // invalid - expect(integerAboveZeroValidator('a-string')).toHaveLength(1); - expect(integerAboveZeroValidator('0s')).toHaveLength(1); - expect(integerAboveZeroValidator('1m')).toHaveLength(1); - expect(integerAboveZeroValidator('1.')).toHaveLength(1); - expect(integerAboveZeroValidator('1..')).toHaveLength(1); - expect(integerAboveZeroValidator('1.0')).toHaveLength(1); - expect(integerAboveZeroValidator(-1)).toHaveLength(1); - expect(integerAboveZeroValidator(0)).toHaveLength(1); - expect(integerAboveZeroValidator(0.1)).toHaveLength(1); - - // valid - expect(integerAboveZeroValidator(1)).toHaveLength(0); - expect(integerAboveZeroValidator('1')).toHaveLength(0); - }); -}); diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/use_edit_transform_flyout.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/use_edit_transform_flyout.tsx index b1aac5e54d259..2e82edb54b6fd 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/use_edit_transform_flyout.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/use_edit_transform_flyout.tsx @@ -9,11 +9,8 @@ import constate from 'constate'; import { isEqual, merge } from 'lodash'; import { useMemo, useReducer } from 'react'; -import { i18n } from '@kbn/i18n'; -import { numberValidator } from '@kbn/ml-agg-utils'; import { getNestedProperty, setNestedProperty } from '@kbn/ml-nested-property'; -import { retentionPolicyMaxAgeInvalidErrorMessage } from '../../../../common/constants/validation_messages'; import { PostTransformsUpdateRequestSchema } from '../../../../../../common/api_schemas/update_transforms'; import { DEFAULT_TRANSFORM_FREQUENCY, @@ -21,13 +18,20 @@ import { } from '../../../../../../common/constants'; import { TransformConfigUnion } from '../../../../../../common/types/transform'; +// Note on the form validation and input components used: +// All inputs use `EuiFieldText` which means all form values will be treated as strings. +// This means we cast other formats like numbers coming from the transform config to strings, +// then revalidate them and cast them again to number before submitting a transform update. +// We do this so we have fine grained control over field validation and the option to +// cast to special values like `null` for disabling `docs_per_second`. import { - isValidFrequency, - isValidRetentionPolicyMaxAge, - ParsedDuration, + frequencyValidator, + integerAboveZeroValidator, transformSettingsNumberOfRetriesValidator, transformSettingsPageSearchSizeValidator, - Validator, + retentionPolicyMaxAgeValidator, + stringValidator, + type Validator, } from '../../../../common/validators'; // This custom hook uses nested reducers to provide a generic framework to manage form state @@ -61,7 +65,7 @@ export interface FormField { isNullable: boolean; isOptional: boolean; section?: EditTransformFormSections; - validator: keyof typeof validate; + validator: Validator; value: string; valueParser: (value: string) => any; } @@ -100,108 +104,6 @@ type EditTransformFlyoutSectionsState = Record - !(value + '').includes('.') && numberValidator({ min: 1, integerOnly: true })(+value) === null - ? [] - : [numberAboveZeroNotValidErrorMessage]; - -const requiredErrorMessage = i18n.translate( - 'xpack.transform.transformList.editFlyoutFormRequiredErrorMessage', - { - defaultMessage: 'Required field.', - } -); -const stringNotValidErrorMessage = i18n.translate( - 'xpack.transform.transformList.editFlyoutFormStringNotValidErrorMessage', - { - defaultMessage: 'Value needs to be of type string.', - } -); -export const stringValidator: Validator = (value, isOptional = true) => { - if (typeof value !== 'string') { - return [stringNotValidErrorMessage]; - } - - if (value.length === 0 && !isOptional) { - return [requiredErrorMessage]; - } - - return []; -}; - -function parseDurationAboveZero(arg: unknown, errorMessage: string): ParsedDuration | string[] { - if (typeof arg !== 'string' || arg === null) { - return [stringNotValidErrorMessage]; - } - - // split string by groups of numbers and letters - const regexStr = arg.match(/[a-z]+|[^a-z]+/gi); - - // only valid if one group of numbers and one group of letters - if (regexStr === null || (Array.isArray(regexStr) && regexStr.length !== 2)) { - return [frequencyNotValidErrorMessage]; - } - - const number = +regexStr[0]; - const timeUnit = regexStr[1]; - - // only valid if number is an integer above 0 - if (isNaN(number) || !Number.isInteger(number) || number === 0) { - return [frequencyNotValidErrorMessage]; - } - - return { number, timeUnit }; -} - -// Only allow frequencies in the form of 1s/1h etc. -const frequencyNotValidErrorMessage = i18n.translate( - 'xpack.transform.transformList.editFlyoutFormFrequencyNotValidErrorMessage', - { - defaultMessage: 'The frequency value is not valid.', - } -); -export const frequencyValidator: Validator = (arg) => { - const parsedArg = parseDurationAboveZero(arg, frequencyNotValidErrorMessage); - - if (Array.isArray(parsedArg)) { - return parsedArg; - } - - return isValidFrequency(parsedArg) ? [] : [frequencyNotValidErrorMessage]; -}; - -export const retentionPolicyMaxAgeValidator: Validator = (arg) => { - const parsedArg = parseDurationAboveZero(arg, retentionPolicyMaxAgeInvalidErrorMessage); - - if (Array.isArray(parsedArg)) { - return parsedArg; - } - - return isValidRetentionPolicyMaxAge(parsedArg) ? [] : [retentionPolicyMaxAgeInvalidErrorMessage]; -}; - -const validate = { - string: stringValidator, - frequency: frequencyValidator, - integerAboveZero: integerAboveZeroValidator, - transformSettingsNumberOfRetriesValidator, - transformSettingsPageSearchSizeValidator, - retentionPolicyMaxAgeValidator, -} as const; - export const initializeField = ( formFieldName: EditTransformFormFields, configFieldName: string, @@ -220,7 +122,7 @@ export const initializeField = ( errorMessages: [], isNullable: false, isOptional: true, - validator: 'string', + validator: stringValidator, value, valueParser: (v) => v, ...(overloads !== undefined ? { ...overloads } : {}), @@ -359,7 +261,7 @@ export const getDefaultState = (config: TransformConfigUnion): EditTransformFlyo description: initializeField('description', 'description', config), frequency: initializeField('frequency', 'frequency', config, { defaultValue: DEFAULT_TRANSFORM_FREQUENCY, - validator: 'frequency', + validator: frequencyValidator, }), // dest.* @@ -381,7 +283,7 @@ export const getDefaultState = (config: TransformConfigUnion): EditTransformFlyo docsPerSecond: initializeField('docsPerSecond', 'settings.docs_per_second', config, { isNullable: true, isOptional: true, - validator: 'integerAboveZero', + validator: integerAboveZeroValidator, valueParser: (v) => (v === '' ? null : +v), }), maxPageSearchSize: initializeField( @@ -392,7 +294,7 @@ export const getDefaultState = (config: TransformConfigUnion): EditTransformFlyo defaultValue: `${DEFAULT_TRANSFORM_SETTINGS_MAX_PAGE_SEARCH_SIZE}`, isNullable: true, isOptional: true, - validator: 'transformSettingsPageSearchSizeValidator', + validator: transformSettingsPageSearchSizeValidator, valueParser: (v) => +v, } ), @@ -404,7 +306,7 @@ export const getDefaultState = (config: TransformConfigUnion): EditTransformFlyo defaultValue: undefined, isNullable: true, isOptional: true, - validator: 'transformSettingsNumberOfRetriesValidator', + validator: transformSettingsNumberOfRetriesValidator, valueParser: (v) => +v, } ), @@ -430,7 +332,7 @@ export const getDefaultState = (config: TransformConfigUnion): EditTransformFlyo isNullable: false, isOptional: true, section: 'retentionPolicy', - validator: 'retentionPolicyMaxAgeValidator', + validator: retentionPolicyMaxAgeValidator, } ), }, @@ -458,7 +360,7 @@ const formFieldReducer = (state: FormField, value: string): FormField => { errorMessages: state.isOptional && typeof value === 'string' && value.length === 0 ? [] - : validate[state.validator](value, state.isOptional), + : state.validator(value, state.isOptional), value, }; }; diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 08dc60171e63e..14a9f8257d1c6 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -40376,7 +40376,6 @@ "xpack.transform.transformSettingsValidations.numberOfRetriesInvalidErrorMessage": "Le nombre de tentatives doit être compris entre 0 et 100, ou égal à -1 pour des tentatives infinies.", "xpack.transform.transformSettingValidations.maxPageSearchSizeInvalidMessage": "La taille maximum de la recherche de pages doit être un nombre entier compris entre 10 et 65 536.", "xpack.transform.transformSettingValidations.numberGreaterThanOrEqualToNegativeOneNotValidErrorMessage": "Le nombre de tentatives doit être compris entre 0 et 100, ou égal à -1 pour des tentatives infinies.", - "xpack.transform.transformSettingValidations.numberRange10To10000NotValidErrorMessage": "La valeur doit être un entier compris entre 10 et 10 000.", "xpack.transform.transformSettingValidations.retentionPolicyMaxAgeInvalidMessage": "Format d'âge maximal non valide. Le minimum requis est de 60 s.", "xpack.transform.transformsTitle": "Transformations", "xpack.transform.transformsWizard.cloneTransformTitle": "Cloner la transformation", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 9b8fea3d7229e..5adebd5547e3f 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -40375,7 +40375,6 @@ "xpack.transform.transformSettingsValidations.numberOfRetriesInvalidErrorMessage": "再試行回数は0~100の範囲でなければなりません。-1を指定すると、再試行回数が無制限に設定されます。", "xpack.transform.transformSettingValidations.maxPageSearchSizeInvalidMessage": "最大ページ検索サイズは10~65536の範囲の整数でなければなりません。", "xpack.transform.transformSettingValidations.numberGreaterThanOrEqualToNegativeOneNotValidErrorMessage": "再試行回数は0~100の範囲でなければなりません。-1を指定すると、再試行回数が無制限に設定されます。", - "xpack.transform.transformSettingValidations.numberRange10To10000NotValidErrorMessage": "値は10~10000の範囲の整数でなければなりません。", "xpack.transform.transformSettingValidations.retentionPolicyMaxAgeInvalidMessage": "無効な最大年齢形式です。60秒以上が必要です。", "xpack.transform.transformsTitle": "トランスフォーム", "xpack.transform.transformsWizard.cloneTransformTitle": "クローントランスフォーム", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 04f220fd704c3..4c063a0848db7 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -40355,7 +40355,6 @@ "xpack.transform.transformSettingsValidations.numberOfRetriesInvalidErrorMessage": "重试次数需要介于 0 和 100 之间,或为 -1(表示无限重试)。", "xpack.transform.transformSettingValidations.maxPageSearchSizeInvalidMessage": "最大页面搜索大小需要是介于 10 到 65536 之间的整数。", "xpack.transform.transformSettingValidations.numberGreaterThanOrEqualToNegativeOneNotValidErrorMessage": "重试次数需要介于 0 和 100 之间,或为 -1(表示无限重试)。", - "xpack.transform.transformSettingValidations.numberRange10To10000NotValidErrorMessage": "值必须是介于 10 到 10000 之间的整数。", "xpack.transform.transformSettingValidations.retentionPolicyMaxAgeInvalidMessage": "最大存在时间格式无效。至少需要 60s。", "xpack.transform.transformsTitle": "转换", "xpack.transform.transformsWizard.cloneTransformTitle": "克隆转换", From 725a21727af57b11bdd709966d20f71f9c9be16c Mon Sep 17 00:00:00 2001 From: Dario Gieselaar Date: Tue, 2 Jan 2024 19:35:49 +0100 Subject: [PATCH 052/323] [Obs AI Assistant] Add guardrails (#174060) Add guardrails against function looping (max 3 calls in a completion request) and long function responses (max 4000 tokens). --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../server/service/client/index.test.ts | 238 ++++++++++++++++-- .../server/service/client/index.ts | 79 ++++-- 2 files changed, 281 insertions(+), 36 deletions(-) diff --git a/x-pack/plugins/observability_ai_assistant/server/service/client/index.test.ts b/x-pack/plugins/observability_ai_assistant/server/service/client/index.test.ts index 7cffaa64d16d3..a0e0a40a4ac89 100644 --- a/x-pack/plugins/observability_ai_assistant/server/service/client/index.test.ts +++ b/x-pack/plugins/observability_ai_assistant/server/service/client/index.test.ts @@ -7,9 +7,11 @@ import type { ActionsClient } from '@kbn/actions-plugin/server/actions_client'; import type { ElasticsearchClient, Logger } from '@kbn/core/server'; import type { DeeplyMockedKeys } from '@kbn/utility-types-jest'; -import { merge } from 'lodash'; +import { waitFor } from '@testing-library/react'; +import { last, merge, repeat } from 'lodash'; +import { ChatCompletionResponseMessage } from 'openai'; import { Subject } from 'rxjs'; -import { PassThrough, type Readable } from 'stream'; +import { EventEmitter, PassThrough, type Readable } from 'stream'; import { finished } from 'stream/promises'; import { ObservabilityAIAssistantClient } from '.'; import { createResourceNamesMap } from '..'; @@ -70,7 +72,7 @@ function createLlmSimulator() { }; } -describe('Observability AI Assistant service', () => { +describe('Observability AI Assistant client', () => { let client: ObservabilityAIAssistantClient; const actionsClientMock: DeeplyMockedKeys = { @@ -84,14 +86,8 @@ describe('Observability AI Assistant service', () => { } as any; const currentUserEsClientMock: DeeplyMockedKeys = { - search: jest.fn().mockResolvedValue({ - hits: { - hits: [], - }, - }), - fieldCaps: jest.fn().mockResolvedValue({ - fields: [], - }), + search: jest.fn(), + fieldCaps: jest.fn(), } as any; const knowledgeBaseServiceMock: DeeplyMockedKeys = { @@ -107,16 +103,29 @@ describe('Observability AI Assistant service', () => { const functionClientMock: DeeplyMockedKeys = { executeFunction: jest.fn(), - getFunctions: jest.fn().mockReturnValue([]), - hasFunction: jest.fn().mockImplementation((name) => { - return name !== 'recall'; - }), + getFunctions: jest.fn(), + hasFunction: jest.fn(), } as any; let llmSimulator: LlmSimulator; function createClient() { - jest.clearAllMocks(); + jest.resetAllMocks(); + + functionClientMock.getFunctions.mockReturnValue([]); + functionClientMock.hasFunction.mockImplementation((name) => { + return name !== 'recall'; + }); + + currentUserEsClientMock.search.mockResolvedValue({ + hits: { + hits: [], + }, + } as any); + + currentUserEsClientMock.fieldCaps.mockResolvedValue({ + fields: [], + } as any); return new ObservabilityAIAssistantClient({ actionsClient: actionsClientMock, @@ -158,6 +167,10 @@ describe('Observability AI Assistant service', () => { ); } + beforeEach(() => { + jest.clearAllMocks(); + }); + describe('when completing a conversation without an initial conversation id', () => { let stream: Readable; @@ -1148,4 +1161,197 @@ describe('Observability AI Assistant service', () => { }); }); }); + + describe('when the LLM keeps on calling a function and the limit has been exceeded', () => { + let stream: Readable; + + let dataHandler: jest.Mock; + + beforeEach(async () => { + client = createClient(); + + const onLlmCall = new EventEmitter(); + + function waitForNextLlmCall() { + return new Promise((resolve) => onLlmCall.addListener('next', resolve)); + } + + actionsClientMock.execute.mockImplementation(async () => { + llmSimulator = createLlmSimulator(); + onLlmCall.emit('next'); + return { + actionId: '', + status: 'ok', + data: llmSimulator.stream, + }; + }); + + functionClientMock.getFunctions.mockImplementation(() => [ + { + definition: { + name: 'get_top_alerts', + contexts: ['core'], + description: '', + parameters: {}, + }, + respond: async () => { + return { content: 'Call this function again' }; + }, + }, + ]); + + functionClientMock.hasFunction.mockImplementation((name) => name === 'get_top_alerts'); + functionClientMock.executeFunction.mockImplementation(async () => ({ + content: 'Call this function again', + })); + + stream = await client.complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('How many alerts do I have?')], + functionClient: functionClientMock, + signal: new AbortController().signal, + title: 'My predefined title', + persist: true, + }); + + dataHandler = jest.fn(); + + stream.on('data', dataHandler); + + async function requestAlertsFunctionCall() { + const body = JSON.parse( + (actionsClientMock.execute.mock.lastCall![0].params as any).subActionParams.body + ); + + let nextLlmCallPromise: Promise; + + if (body.functions?.length) { + nextLlmCallPromise = waitForNextLlmCall(); + await llmSimulator.next({ function_call: { name: 'get_top_alerts' } }); + } else { + nextLlmCallPromise = Promise.resolve(); + await llmSimulator.next({ content: 'Looks like we are done here' }); + } + + await llmSimulator.complete(); + + await nextLlmCallPromise; + } + + await requestAlertsFunctionCall(); + + await requestAlertsFunctionCall(); + + await requestAlertsFunctionCall(); + + await requestAlertsFunctionCall(); + + await finished(stream); + }); + + it('executed the function no more than three times', () => { + expect(functionClientMock.executeFunction).toHaveBeenCalledTimes(3); + }); + + it('does not give the LLM the choice to call a function anymore', () => { + const firstBody = JSON.parse( + (actionsClientMock.execute.mock.calls[0][0].params as any).subActionParams.body + ); + const body = JSON.parse( + (actionsClientMock.execute.mock.lastCall![0].params as any).subActionParams.body + ); + + expect(firstBody.functions.length).toBe(1); + + expect(body.functions).toBeUndefined(); + }); + }); + + describe('when the function response exceeds the max no of tokens for one', () => { + let stream: Readable; + + let dataHandler: jest.Mock; + + beforeEach(async () => { + client = createClient(); + + let functionResponsePromiseResolve: Function | undefined; + + actionsClientMock.execute.mockImplementation(async () => { + llmSimulator = createLlmSimulator(); + return { + actionId: '', + status: 'ok', + data: llmSimulator.stream, + }; + }); + + functionClientMock.getFunctions.mockImplementation(() => [ + { + definition: { + name: 'get_top_alerts', + contexts: ['core'], + description: '', + parameters: {}, + }, + respond: async () => { + return { content: '' }; + }, + }, + ]); + + functionClientMock.hasFunction.mockImplementation((name) => name === 'get_top_alerts'); + + functionClientMock.executeFunction.mockImplementation(() => { + return new Promise((resolve) => { + functionResponsePromiseResolve = resolve; + }); + }); + + stream = await client.complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('How many alerts do I have?')], + functionClient: functionClientMock, + signal: new AbortController().signal, + title: 'My predefined title', + persist: true, + }); + + dataHandler = jest.fn(); + + stream.on('data', dataHandler); + + await llmSimulator.next({ function_call: { name: 'get_top_alerts' } }); + + await llmSimulator.complete(); + + await waitFor(() => functionResponsePromiseResolve !== undefined); + + functionResponsePromiseResolve!({ + content: repeat('word ', 10000), + }); + + await waitFor(() => actionsClientMock.execute.mock.calls.length > 1); + + await llmSimulator.next({ content: 'Looks like this was truncated' }); + + await llmSimulator.complete(); + + await finished(stream); + }); + it('truncates the message', () => { + const body = JSON.parse( + (actionsClientMock.execute.mock.lastCall![0].params as any).subActionParams.body + ); + + const parsed = JSON.parse(last(body.messages as ChatCompletionResponseMessage[])!.content!); + + expect(parsed).toEqual({ + message: 'Function response exceeded the maximum length allowed and was truncated', + truncated: expect.any(String), + }); + + expect(parsed.truncated.includes('word ')).toBe(true); + }); + }); }); diff --git a/x-pack/plugins/observability_ai_assistant/server/service/client/index.ts b/x-pack/plugins/observability_ai_assistant/server/service/client/index.ts index fafb7606a2769..c158d40fbc8a0 100644 --- a/x-pack/plugins/observability_ai_assistant/server/service/client/index.ts +++ b/x-pack/plugins/observability_ai_assistant/server/service/client/index.ts @@ -10,12 +10,13 @@ import type { ActionsClient } from '@kbn/actions-plugin/server'; import type { ElasticsearchClient } from '@kbn/core/server'; import type { Logger } from '@kbn/logging'; import type { PublicMethodsOf } from '@kbn/utility-types'; -import { compact, isEmpty, last, merge, omit, pick } from 'lodash'; import type { ChatCompletionRequestMessage, CreateChatCompletionRequest, CreateChatCompletionResponse, } from 'openai'; +import { decode, encode } from 'gpt-tokenizer'; +import { compact, isEmpty, last, merge, omit, pick, take } from 'lodash'; import { isObservable, lastValueFrom } from 'rxjs'; import { PassThrough, Readable } from 'stream'; import { v4 } from 'uuid'; @@ -176,6 +177,11 @@ export class ObservabilityAIAssistantClient { }); } + let numFunctionsCalled: number = 0; + + const MAX_FUNCTION_CALLS = 3; + const MAX_FUNCTION_RESPONSE_TOKEN_COUNT = 4000; + const next = async (nextMessages: Message[]): Promise => { const lastMessage = last(nextMessages); @@ -222,9 +228,12 @@ export class ObservabilityAIAssistantClient { connectorId, stream: true, signal, - functions: functionClient - .getFunctions() - .map((fn) => pick(fn.definition, 'name', 'description', 'parameters')), + functions: + numFunctionsCalled >= MAX_FUNCTION_CALLS + ? [] + : functionClient + .getFunctions() + .map((fn) => pick(fn.definition, 'name', 'description', 'parameters')), }) ).pipe(processOpenAiStream()), }); @@ -232,22 +241,52 @@ export class ObservabilityAIAssistantClient { } if (isAssistantMessageWithFunctionRequest) { - const functionResponse = await functionClient - .executeFunction({ - connectorId, - name: lastMessage.message.function_call!.name, - messages: nextMessages, - args: lastMessage.message.function_call!.arguments, - signal, - }) - .catch((error): FunctionResponse => { - return { - content: { - message: error.toString(), - error, - }, - }; - }); + const functionResponse = + numFunctionsCalled >= MAX_FUNCTION_CALLS + ? { + content: { + error: {}, + message: 'Function limit exceeded, ask the user what to do next', + }, + } + : await functionClient + .executeFunction({ + connectorId, + name: lastMessage.message.function_call!.name, + messages: nextMessages, + args: lastMessage.message.function_call!.arguments, + signal, + }) + .then((response) => { + if (isObservable(response)) { + return response; + } + + const encoded = encode(JSON.stringify(response.content || {})); + + if (encoded.length <= MAX_FUNCTION_RESPONSE_TOKEN_COUNT) { + return response; + } + + return { + data: response.data, + content: { + message: + 'Function response exceeded the maximum length allowed and was truncated', + truncated: decode(take(encoded, MAX_FUNCTION_RESPONSE_TOKEN_COUNT)), + }, + }; + }) + .catch((error): FunctionResponse => { + return { + content: { + message: error.toString(), + error, + }, + }; + }); + + numFunctionsCalled++; if (signal.aborted) { return; From b0c6cc9777d220b3823ab9b1bbe08c5056f7016e Mon Sep 17 00:00:00 2001 From: Jonathan Budzenski Date: Tue, 2 Jan 2024 12:38:33 -0600 Subject: [PATCH 053/323] fix versions.json --- versions.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/versions.json b/versions.json index ce91f8f76bb7e..8406528bb4428 100644 --- a/versions.json +++ b/versions.json @@ -13,10 +13,16 @@ "currentMajor": true, "previousMinor": true }, + { + "version": "8.11.4", + "branch": "8.11", + "currentMajor": true, + "previousMinor": true + }, { "version": "7.17.17", "branch": "7.17", "previousMajor": true } ] -} +} \ No newline at end of file From ce71d12d3202b3aebf225f4d32619f33afd75464 Mon Sep 17 00:00:00 2001 From: Paul Tavares <56442535+paul-tavares@users.noreply.github.com> Date: Tue, 2 Jan 2024 15:16:29 -0500 Subject: [PATCH 054/323] [Security Solution][Endpoint] Fix index name pattern in SentinelOne dev. script (#174105) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Corrects index name pattern for S1 alerts in the SIEM Rule that the SentinelOne dev script uses 🤦 --- .../scripts/endpoint/sentinelone_host/common.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/scripts/endpoint/sentinelone_host/common.ts b/x-pack/plugins/security_solution/scripts/endpoint/sentinelone_host/common.ts index fe9053795737a..168d2089d9c1e 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/sentinelone_host/common.ts +++ b/x-pack/plugins/security_solution/scripts/endpoint/sentinelone_host/common.ts @@ -265,7 +265,7 @@ export const createDetectionEngineSentinelOneRuleIfNeeded = async ( log: ToolingLog ): Promise => { const ruleName = 'Promote SentinelOne alerts'; - const sentinelOneAlertsIndexPattern = 'logs-sentinel_one.alert'; + const sentinelOneAlertsIndexPattern = 'logs-sentinel_one.alert*'; const ruleQueryValue = 'observer.serial_number:*'; const { data } = await findRules(kbnClient, { From c6f9d9881ee863758ee6b0be576b66f725aca751 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 2 Jan 2024 20:49:19 +0000 Subject: [PATCH 055/323] chore(NA): bump node into v20 (#173461) Closes https://github.com/elastic/kibana/issues/173334 This is a reattempt of doing what was planned on https://github.com/elastic/kibana/pull/162696 after solving the bottlenecks we discovered previously. --------- Co-authored-by: Jonathan Budzenski --- .buildkite/pipelines/artifacts.yml | 2 +- .node-version | 2 +- .nvmrc | 2 +- WORKSPACE.bazel | 12 ++--- package.json | 6 +-- .../discovery/plugin_manifest_parser.test.ts | 2 +- .../src/discovery/plugins_discovery.test.ts | 2 +- .../src/lib/archives/parse.test.ts | 2 +- .../integration_tests/__fixtures__/es_bin.js | 4 +- packages/kbn-es/src/utils/docker.test.ts | 15 +++--- packages/kbn-es/src/utils/docker.ts | 11 ++++- .../build/tasks/patch_native_modules_task.ts | 20 ++++---- .../create_streaming_batched_function.test.ts | 2 +- .../public/search/expressions/esdsl.test.ts | 2 +- src/setup_node_env/exit_on_warning.js | 7 +++ src/setup_node_env/heap_snapshot.js | 46 ------------------- src/setup_node_env/setup_env.js | 2 - .../user_actions/connector_id.test.ts | 6 +-- .../document_creation_logic.test.ts | 2 +- .../server/browsers/download/fetch.test.ts | 4 +- .../server/browsers/download/fetch.ts | 12 ++--- .../server/browsers/download/index.test.ts | 10 ++-- .../server/browsers/download/index.ts | 10 +++- .../server/browsers/extract/unzip.test.ts | 4 +- .../lib/check_for_json_errors.test.ts | 2 +- .../api/rules/import_rules/route.test.ts | 2 +- .../create_rules_stream_from_ndjson.test.ts | 4 +- .../server/saved_objects/migrations.test.ts | 2 +- yarn.lock | 15 ++++-- 29 files changed, 98 insertions(+), 114 deletions(-) delete mode 100644 src/setup_node_env/heap_snapshot.js diff --git a/.buildkite/pipelines/artifacts.yml b/.buildkite/pipelines/artifacts.yml index 64ebe01e9227b..ccef23374d91b 100644 --- a/.buildkite/pipelines/artifacts.yml +++ b/.buildkite/pipelines/artifacts.yml @@ -88,7 +88,7 @@ steps: - exit_status: -1 agents: queue: n2-2 - timeout_in_minutes: 30 + timeout_in_minutes: 60 if: "build.env('RELEASE_BUILD') == null || build.env('RELEASE_BUILD') == '' || build.env('RELEASE_BUILD') == 'false'" retry: automatic: diff --git a/.node-version b/.node-version index 87ec8842b158d..d5a159609d095 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -18.18.2 +20.10.0 diff --git a/.nvmrc b/.nvmrc index 87ec8842b158d..d5a159609d095 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18.18.2 +20.10.0 diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel index 49623728f1afe..5f8cce19705d4 100644 --- a/WORKSPACE.bazel +++ b/WORKSPACE.bazel @@ -22,13 +22,13 @@ load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install # Setup the Node.js toolchain for the architectures we want to support node_repositories( node_repositories = { - "18.18.2-darwin_amd64": ("node-v18.18.2-darwin-x64.tar.gz", "node-v18.18.2-darwin-x64", "5bb8da908ed590e256a69bf2862238c8a67bc4600119f2f7721ca18a7c810c0f"), - "18.18.2-darwin_arm64": ("node-v18.18.2-darwin-arm64.tar.gz", "node-v18.18.2-darwin-arm64", "9f982cc91b28778dd8638e4f94563b0c2a1da7aba62beb72bd427721035ab553"), - "18.18.2-linux_arm64": ("node-v18.18.2-linux-arm64.tar.xz", "node-v18.18.2-linux-arm64", "8a5a03f6a742159c9aa0ae3a99b368cd938cf62f3a5522a2e5acbe6313710efe"), - "18.18.2-linux_amd64": ("node-v18.18.2-linux-x64.tar.xz", "node-v18.18.2-linux-x64", "f7cf590bc7153f3beaa9e1138d00e50d74df223f0bec61f63e7df65f7315b76a"), - "18.18.2-windows_amd64": ("node-v18.18.2-win-x64.zip", "node-v18.18.2-win-x64", "3bb0e51e579a41a22b3bf6cb2f3e79c03801aa17acbe0ca00fc555d1282e7acd"), + "20.10.0-darwin_amd64": ("node-v20.10.0-darwin-x64.tar.gz", "node-v20.10.0-darwin-x64", "5ff5e8abd3eea6e5f507eb6677554f5b2188eedef654096aa4168a9941e91a32"), + "20.10.0-darwin_arm64": ("node-v20.10.0-darwin-arm64.tar.gz", "node-v20.10.0-darwin-arm64", "68b93099451d77aac116cf8fce179cabcf53fec079508dc6b39d3a086fb461a8"), + "20.10.0-linux_arm64": ("node-v20.10.0-linux-arm64.tar.xz", "node-v20.10.0-linux-arm64", "a5c22683890d5d244f3afd488ef44e573b5b8287f8911b9a1b061ed3f20a5e6d"), + "20.10.0-linux_amd64": ("node-v20.10.0-linux-x64.tar.xz", "node-v20.10.0-linux-x64", "9c0fbc8cc7be9a6543af4b9afb05759c538c0f81015c388d63277b0158507697"), + "20.10.0-windows_amd64": ("node-v20.10.0-win-x64.zip", "node-v20.10.0-win-x64", "e5b861814a97e28ae7ac06a34e88fd5e0565b447d270c26e20b5ef60bf0aaaf9"), }, - node_version = "18.18.2", + node_version = "20.10.0", node_urls = [ "https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/dist/v{version}/{filename}", ], diff --git a/package.json b/package.json index 739989d6270c4..ceff814ad5b14 100644 --- a/package.json +++ b/package.json @@ -74,12 +74,12 @@ "url": "https://github.com/elastic/kibana.git" }, "engines": { - "node": "18.18.2", + "node": "20.10.0", "yarn": "^1.22.19" }, "resolutions": { "**/@hello-pangea/dnd": "16.2.0", - "**/@types/node": "18.18.5", + "**/@types/node": "20.10.5", "**/@typescript-eslint/utils": "5.62.0", "**/chokidar": "^3.5.3", "**/globule/minimatch": "^3.1.2", @@ -1413,7 +1413,7 @@ "@types/multistream": "^4.1.0", "@types/mustache": "^0.8.31", "@types/nock": "^10.0.3", - "@types/node": "18.18.5", + "@types/node": "20.10.5", "@types/node-fetch": "2.6.4", "@types/node-forge": "^1.3.10", "@types/nodemailer": "^6.4.0", diff --git a/packages/core/plugins/core-plugins-server-internal/src/discovery/plugin_manifest_parser.test.ts b/packages/core/plugins/core-plugins-server-internal/src/discovery/plugin_manifest_parser.test.ts index f940e49805cd5..202cef2ca09d4 100644 --- a/packages/core/plugins/core-plugins-server-internal/src/discovery/plugin_manifest_parser.test.ts +++ b/packages/core/plugins/core-plugins-server-internal/src/discovery/plugin_manifest_parser.test.ts @@ -59,7 +59,7 @@ test('return error when manifest content is not a valid JSON', async () => { }); await expect(parseManifest(pluginPath, packageInfo)).rejects.toMatchObject({ - message: `Unexpected token o in JSON at position 1 (invalid-manifest, ${pluginManifestPath})`, + message: `Unexpected token 'o', "not-json" is not valid JSON (invalid-manifest, ${pluginManifestPath})`, type: PluginDiscoveryErrorType.InvalidManifest, path: pluginManifestPath, }); diff --git a/packages/core/plugins/core-plugins-server-internal/src/discovery/plugins_discovery.test.ts b/packages/core/plugins/core-plugins-server-internal/src/discovery/plugins_discovery.test.ts index 9ab50d8786cca..93657a1f2533e 100644 --- a/packages/core/plugins/core-plugins-server-internal/src/discovery/plugins_discovery.test.ts +++ b/packages/core/plugins/core-plugins-server-internal/src/discovery/plugins_discovery.test.ts @@ -278,7 +278,7 @@ describe('plugins discovery system', () => { .toPromise(); expect(errors).toContain( - `Error: Unexpected token o in JSON at position 1 (invalid-manifest, ${manifestPath( + `Error: Unexpected token 'o', "not-json" is not valid JSON (invalid-manifest, ${manifestPath( 'plugin_a' )})` ); diff --git a/packages/kbn-es-archiver/src/lib/archives/parse.test.ts b/packages/kbn-es-archiver/src/lib/archives/parse.test.ts index b87e6f71400e0..9e0d5c02238b8 100644 --- a/packages/kbn-es-archiver/src/lib/archives/parse.test.ts +++ b/packages/kbn-es-archiver/src/lib/archives/parse.test.ts @@ -98,7 +98,7 @@ describe('esArchiver createParseArchiveStreams', () => { ] as [Readable, ...Writable[]]); throw new Error('should have failed'); } catch (err) { - expect(err.message).toEqual(expect.stringContaining('Unexpected number')); + expect(err.message).toEqual(`Expected property name or '}' in JSON at position 1`); } }); }); diff --git a/packages/kbn-es/src/integration_tests/__fixtures__/es_bin.js b/packages/kbn-es/src/integration_tests/__fixtures__/es_bin.js index 5ef6145698811..0d44b8a775b25 100644 --- a/packages/kbn-es/src/integration_tests/__fixtures__/es_bin.js +++ b/packages/kbn-es/src/integration_tests/__fixtures__/es_bin.js @@ -87,11 +87,11 @@ const { ES_KEY_PATH, ES_CERT_PATH } = require('@kbn/dev-utils'); } ); - // setup server auto close after 1 second of silence + // setup server auto close after 5 second of silence let serverCloseTimer; const delayServerClose = () => { clearTimeout(serverCloseTimer); - serverCloseTimer = setTimeout(() => server.close(), 1000); + serverCloseTimer = setTimeout(() => server.close(), 5000); }; server.on('request', delayServerClose); server.on('listening', delayServerClose); diff --git a/packages/kbn-es/src/utils/docker.test.ts b/packages/kbn-es/src/utils/docker.test.ts index d877e5bdf8261..122914c3fa667 100644 --- a/packages/kbn-es/src/utils/docker.test.ts +++ b/packages/kbn-es/src/utils/docker.test.ts @@ -7,8 +7,7 @@ */ import mockFs from 'mock-fs'; -import { existsSync } from 'fs'; -import { stat } from 'fs/promises'; +import Fsp from 'fs/promises'; import { basename } from 'path'; import { @@ -115,7 +114,7 @@ const volumeCmdTest = async (volumeCmd: string[]) => { // extract only permission from mode // eslint-disable-next-line no-bitwise - expect((await stat(serverlessObjectStorePath)).mode & 0o777).toBe(0o777); + expect((await Fsp.stat(serverlessObjectStorePath)).mode & 0o777).toBe(0o777); }; describe('resolveDockerImage()', () => { @@ -508,7 +507,7 @@ describe('setupServerlessVolumes()', () => { const volumeCmd = await setupServerlessVolumes(log, { basePath: baseEsPath }); volumeCmdTest(volumeCmd); - expect(existsSync(serverlessObjectStorePath)).toBe(true); + await expect(Fsp.access(serverlessObjectStorePath)).resolves.not.toThrow(); }); test('should use an existing object store', async () => { @@ -517,7 +516,9 @@ describe('setupServerlessVolumes()', () => { const volumeCmd = await setupServerlessVolumes(log, { basePath: baseEsPath }); volumeCmdTest(volumeCmd); - expect(existsSync(`${serverlessObjectStorePath}/cluster_state/lease`)).toBe(true); + await expect( + Fsp.access(`${serverlessObjectStorePath}/cluster_state/lease`) + ).resolves.not.toThrow(); }); test('should remove an existing object store when clean is passed', async () => { @@ -526,7 +527,9 @@ describe('setupServerlessVolumes()', () => { const volumeCmd = await setupServerlessVolumes(log, { basePath: baseEsPath, clean: true }); volumeCmdTest(volumeCmd); - expect(existsSync(`${serverlessObjectStorePath}/cluster_state/lease`)).toBe(false); + await expect( + Fsp.access(`${serverlessObjectStorePath}/cluster_state/lease`) + ).rejects.toThrowError(); }); test('should add SSL and IDP metadata volumes when ssl and kibanaUrl are passed', async () => { diff --git a/packages/kbn-es/src/utils/docker.ts b/packages/kbn-es/src/utils/docker.ts index 31c00beb7a71f..8273d0267b319 100644 --- a/packages/kbn-es/src/utils/docker.ts +++ b/packages/kbn-es/src/utils/docker.ts @@ -542,12 +542,19 @@ export async function setupServerlessVolumes(log: ToolingLog, options: Serverles log.info(chalk.bold(`Checking for local serverless ES object store at ${objectStorePath}`)); log.indent(4); - if (clean && fs.existsSync(objectStorePath)) { + let exists = null; + try { + await Fsp.access(objectStorePath); + exists = true; + } catch (e) { + exists = false; + } + if (clean && exists) { log.info('Cleaning existing object store.'); await Fsp.rm(objectStorePath, { recursive: true, force: true }); } - if (clean || !fs.existsSync(objectStorePath)) { + if (clean || !exists) { await Fsp.mkdir(objectStorePath, { recursive: true }).then(() => log.info('Created new object store.') ); diff --git a/src/dev/build/tasks/patch_native_modules_task.ts b/src/dev/build/tasks/patch_native_modules_task.ts index d36fe4eca01ee..df851036b79ed 100644 --- a/src/dev/build/tasks/patch_native_modules_task.ts +++ b/src/dev/build/tasks/patch_native_modules_task.ts @@ -47,8 +47,8 @@ const packages: Package[] = [ extractMethod: 'gunzip', archives: { 'linux-x64': { - url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/linux-x64-108.gz', - sha256: '136b6cf61b54bf610071a950400518add65d44a4923f11ef658769df1a037f0b', + url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/linux-x64-115.gz', + sha256: 'b88183fe7bc8afa260d22cd909f496ab5636aace7075b54ac345d33ea32aedc0', }, // Linux ARM builds are currently done manually as Github Actions used in upstream project // do not natively support an Linux ARM target. @@ -63,20 +63,20 @@ const packages: Package[] = [ // * capture the sha256 with: `shasum -a 256 linux-arm64-*` // * upload the `linux-arm64-*.gz` artifact to the `yarn-prebuilt-artifacts` bucket in GCS using the correct version number 'linux-arm64': { - url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/linux-arm64-108.gz', - sha256: '311822ac689bd49a534ecf400b4732a288ad218f711b0e593e41dd3a6b739d97', + url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/linux-arm64-115.gz', + sha256: '6c04136a6658df3dcc5b8ac0041641c227d232bed385fe55f62c8470f8db041d', }, 'darwin-x64': { - url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/darwin-x64-108.gz', - sha256: '215b6ffb1e5d124439a7dbdd09e4ed1263e065839354a6ad67091ce00d14ee9b', + url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/darwin-x64-115.gz', + sha256: '1e0d79983c94222c414a5410444ec0ccf37614fd0e45187d0f313a19b203702c', }, 'darwin-arm64': { - url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/darwin-arm64-108.gz', - sha256: '0a8bc28150c9efd04f3b52ac214cc7898bde1b8e1f8e6900ae711b03665ff657', + url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/darwin-arm64-115.gz', + sha256: '192c8e036062504b818941989c44ddb799efe0419d039f7089caedb09d49a597', }, 'win32-x64': { - url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/win32-x64-108.gz', - sha256: '117872144e4a2bb61611aacc51ac9fd24e494c209cf63366f236099a662316eb', + url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/win32-x64-115.gz', + sha256: '01ae2df89f976f4097e50e121d7ec6ac62ec8050c838107dcfb976d037a60d59', }, }, }, diff --git a/src/plugins/bfetch/public/batching/create_streaming_batched_function.test.ts b/src/plugins/bfetch/public/batching/create_streaming_batched_function.test.ts index fb9db4490144b..f4eeca4bc5ba6 100644 --- a/src/plugins/bfetch/public/batching/create_streaming_batched_function.test.ts +++ b/src/plugins/bfetch/public/batching/create_streaming_batched_function.test.ts @@ -744,7 +744,7 @@ describe('createStreamingBatchedFunction()', () => { const [, error1] = await promise1; const [result1] = await promise2; expect(error1).toMatchObject({ - message: 'Unexpected token N in JSON at position 0', + message: `Unexpected token 'N', "Not a JSON\n" is not valid JSON`, code: 'STREAM', }); expect(result1).toMatchObject({ diff --git a/src/plugins/data/public/search/expressions/esdsl.test.ts b/src/plugins/data/public/search/expressions/esdsl.test.ts index 2bf2ef1148507..603dbf1e8f3eb 100644 --- a/src/plugins/data/public/search/expressions/esdsl.test.ts +++ b/src/plugins/data/public/search/expressions/esdsl.test.ts @@ -63,7 +63,7 @@ describe('esdsl', () => { } catch (error) { errorMessage = error.message; } - expect(errorMessage).toEqual('Unexpected token i in JSON at position 0'); + expect(errorMessage).toEqual(`Unexpected token 'i', "invalid json" is not valid JSON`); }); test('adds filters', async () => { diff --git a/src/setup_node_env/exit_on_warning.js b/src/setup_node_env/exit_on_warning.js index 5e7bae8254c04..dc6e321074224 100644 --- a/src/setup_node_env/exit_on_warning.js +++ b/src/setup_node_env/exit_on_warning.js @@ -46,6 +46,13 @@ var IGNORE_WARNINGS = [ // We need to discard that warning name: 'ProductNotSupportedSecurityError', }, + // https://github.com/browserify/browserify-rsa/pull/20 + { + name: 'DeprecationWarning', + code: 'DEP0170', + message: + 'The URL https://github.com:crypto-browserify/browserify-rsa.git is invalid. Future versions of Node.js will throw an error.', + }, ]; if (process.noProcessWarnings !== true) { diff --git a/src/setup_node_env/heap_snapshot.js b/src/setup_node_env/heap_snapshot.js deleted file mode 100644 index 94e4b35e2f887..0000000000000 --- a/src/setup_node_env/heap_snapshot.js +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -var getopts = require('getopts'); -var path = require('path'); -var v8 = require('node:v8'); -var worker = require('node:worker_threads'); - -var execOpts = getopts(process.execArgv); -var envOpts = getopts(process.env.NODE_OPTIONS ? process.env.NODE_OPTIONS.split(/\s+/) : []); -var diagnosticDir = execOpts['diagnostic-dir'] || envOpts['diagnostic-dir']; -var heapSnapshotSignal = execOpts['heapsnapshot-signal'] || envOpts['heapsnapshot-signal']; -var heapSnapshotSerial = 0; - -function getHeapSnapshotPath() { - var now = new Date(); - - var year = now.getFullYear(); - var month = String(now.getMonth() + 1).padStart(2, '0'); - var day = String(now.getDate()).padStart(2, '0'); - var hours = String(now.getHours()).padStart(2, '0'); - var minutes = String(now.getMinutes()).padStart(2, '0'); - var seconds = String(now.getSeconds()).padStart(2, '0'); - - var date = `${year}${month}${day}`; - var time = `${hours}${minutes}${seconds}`; - var pid = process.pid; - var threadId = worker.threadId; - var serial = (++heapSnapshotSerial).toString().padStart(3, '0'); - - return path.join(diagnosticDir, `Heap.${date}.${time}.${pid}.${threadId}.${serial}.heapsnapshot`); -} - -if (diagnosticDir && heapSnapshotSignal) { - process.removeAllListeners(heapSnapshotSignal); - - process.on(heapSnapshotSignal, function () { - var heapSnapshotPath = getHeapSnapshotPath(); - v8.writeHeapSnapshot(heapSnapshotPath); - }); -} diff --git a/src/setup_node_env/setup_env.js b/src/setup_node_env/setup_env.js index d3076a2c3b9cf..7b37d98011cfb 100644 --- a/src/setup_node_env/setup_env.js +++ b/src/setup_node_env/setup_env.js @@ -11,8 +11,6 @@ require('./exit_on_warning'); require('./harden'); // The following require statements MUST be executed before any others - END -// @todo Remove when migrated to Node 20 (#162696) -require('./heap_snapshot'); require('symbol-observable'); require('source-map-support').install(); require('./node_version_validator'); diff --git a/x-pack/plugins/cases/server/saved_object_types/migrations/user_actions/connector_id.test.ts b/x-pack/plugins/cases/server/saved_object_types/migrations/user_actions/connector_id.test.ts index ed43cc40649c6..2ed37837f5100 100644 --- a/x-pack/plugins/cases/server/saved_object_types/migrations/user_actions/connector_id.test.ts +++ b/x-pack/plugins/cases/server/saved_object_types/migrations/user_actions/connector_id.test.ts @@ -254,7 +254,7 @@ describe('user action migrations', () => { const log = context.log as jest.Mocked; expect(log.error.mock.calls[0]).toMatchInlineSnapshot(` Array [ - "Failed to migrate user action connector with doc id: 1 version: 8.0.0 error: Unexpected token a in JSON at position 1", + "Failed to migrate user action connector with doc id: 1 version: 8.0.0 error: Expected property name or '}' in JSON at position 1", Object { "migrations": Object { "userAction": Object { @@ -448,7 +448,7 @@ describe('user action migrations', () => { const log = context.log as jest.Mocked; expect(log.error.mock.calls[0]).toMatchInlineSnapshot(` Array [ - "Failed to migrate user action connector with doc id: 1 version: 8.0.0 error: Unexpected token b in JSON at position 1", + "Failed to migrate user action connector with doc id: 1 version: 8.0.0 error: Expected property name or '}' in JSON at position 1", Object { "migrations": Object { "userAction": Object { @@ -644,7 +644,7 @@ describe('user action migrations', () => { const log = context.log as jest.Mocked; expect(log.error.mock.calls[0]).toMatchInlineSnapshot(` Array [ - "Failed to migrate user action connector with doc id: 1 version: 8.0.0 error: Unexpected token e in JSON at position 1", + "Failed to migrate user action connector with doc id: 1 version: 8.0.0 error: Unexpected token 'e', \\"new json value\\" is not valid JSON", Object { "migrations": Object { "userAction": Object { diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/document_creation/document_creation_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/document_creation/document_creation_logic.test.ts index 3e39c50ff8de7..925f5af35ff48 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/document_creation/document_creation_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/document_creation/document_creation_logic.test.ts @@ -404,7 +404,7 @@ describe('DocumentCreationLogic', () => { DocumentCreationLogic.actions.onSubmitJson(); expect(DocumentCreationLogic.actions.setErrors).toHaveBeenCalledWith([ - 'Unexpected token i in JSON at position 0', + `Unexpected token 'i', "invalid JSON" is not valid JSON`, ]); expect(DocumentCreationLogic.actions.uploadDocuments).not.toHaveBeenCalled(); }); diff --git a/x-pack/plugins/screenshotting/server/browsers/download/fetch.test.ts b/x-pack/plugins/screenshotting/server/browsers/download/fetch.test.ts index 1fc87b7e8b3ea..5e1b5fc771d6d 100644 --- a/x-pack/plugins/screenshotting/server/browsers/download/fetch.test.ts +++ b/x-pack/plugins/screenshotting/server/browsers/download/fetch.test.ts @@ -8,7 +8,7 @@ import mockFs from 'mock-fs'; import axios from 'axios'; import { createHash } from 'crypto'; -import { readFileSync } from 'fs'; +import { readFile } from 'fs/promises'; import { resolve as resolvePath } from 'path'; import { Readable } from 'stream'; import { fetch } from './fetch'; @@ -38,7 +38,7 @@ describe('fetch', () => { test('downloads the url to the path', async () => { await fetch('url', TEMP_FILE); - expect(readFileSync(TEMP_FILE, 'utf8')).toEqual('foobar'); + await expect(readFile(TEMP_FILE, 'utf8')).resolves.toBe('foobar'); }); test('returns the sha1 hex hash of the http body', async () => { diff --git a/x-pack/plugins/screenshotting/server/browsers/download/fetch.ts b/x-pack/plugins/screenshotting/server/browsers/download/fetch.ts index 871eee46c2180..6b05337147c0a 100644 --- a/x-pack/plugins/screenshotting/server/browsers/download/fetch.ts +++ b/x-pack/plugins/screenshotting/server/browsers/download/fetch.ts @@ -7,7 +7,8 @@ import Axios from 'axios'; import { createHash } from 'crypto'; -import { closeSync, mkdirSync, openSync, writeSync } from 'fs'; +import { mkdir, open } from 'fs/promises'; +import { writeSync } from 'fs'; import { dirname } from 'path'; import { Readable } from 'stream'; import { finished } from 'stream/promises'; @@ -21,9 +22,8 @@ export async function fetch(url: string, path: string, logger?: Logger): Promise const hash = createHash('sha256'); - mkdirSync(dirname(path), { recursive: true }); - const handle = openSync(path, 'w'); - + await mkdir(dirname(path), { recursive: true }); + const handle = await open(path, 'w'); try { const response = await Axios.request({ url, @@ -32,7 +32,7 @@ export async function fetch(url: string, path: string, logger?: Logger): Promise }); response.data.on('data', (chunk: Buffer) => { - writeSync(handle, chunk); + writeSync(handle.fd, chunk); hash.update(chunk); }); @@ -43,7 +43,7 @@ export async function fetch(url: string, path: string, logger?: Logger): Promise throw new Error(`Unable to download ${url}: ${error}`); } finally { - closeSync(handle); + await handle.close(); } return hash.digest('hex'); diff --git a/x-pack/plugins/screenshotting/server/browsers/download/index.test.ts b/x-pack/plugins/screenshotting/server/browsers/download/index.test.ts index 303462fc533db..96d9bd0299327 100644 --- a/x-pack/plugins/screenshotting/server/browsers/download/index.test.ts +++ b/x-pack/plugins/screenshotting/server/browsers/download/index.test.ts @@ -7,7 +7,7 @@ import path from 'path'; import mockFs from 'mock-fs'; -import { existsSync, readdirSync } from 'fs'; +import { access, readdir } from 'fs/promises'; import { ChromiumArchivePaths, PackageInfo } from '../chromium'; import { fetch } from './fetch'; import { sha256 } from './checksum'; @@ -55,8 +55,8 @@ describe('ensureDownloaded', () => { await download(paths, pkg); - expect(existsSync(unexpectedPath1)).toBe(false); - expect(existsSync(unexpectedPath2)).toBe(false); + await expect(access(unexpectedPath1)).rejects.toThrow(); + await expect(access(unexpectedPath2)).rejects.toThrow(); }); it('should reject when download fails', async () => { @@ -84,14 +84,14 @@ describe('ensureDownloaded', () => { await download(paths, pkg); expect(fetch).not.toHaveBeenCalled(); - expect(readdirSync(path.resolve(`${paths.archivesPath}/x64`))).toEqual( + await expect(readdir(path.resolve(`${paths.archivesPath}/x64`))).resolves.toEqual( expect.arrayContaining([ 'chrome-mac.zip', 'chrome-win.zip', expect.stringMatching(/^chromium-[0-9a-f]{7}-locales-linux_x64\.zip$/), ]) ); - expect(readdirSync(path.resolve(`${paths.archivesPath}/arm64`))).toEqual( + await expect(readdir(path.resolve(`${paths.archivesPath}/arm64`))).resolves.toEqual( expect.arrayContaining([ 'chrome-mac.zip', expect.stringMatching(/^chromium-[0-9a-f]{7}-locales-linux_arm64\.zip$/), diff --git a/x-pack/plugins/screenshotting/server/browsers/download/index.ts b/x-pack/plugins/screenshotting/server/browsers/download/index.ts index fe6e8c632ebdb..bef22c7c2196a 100644 --- a/x-pack/plugins/screenshotting/server/browsers/download/index.ts +++ b/x-pack/plugins/screenshotting/server/browsers/download/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { existsSync } from 'fs'; +import { access } from 'fs/promises'; import del from 'del'; import type { Logger } from '@kbn/core/server'; import type { ChromiumArchivePaths, PackageInfo } from '../chromium'; @@ -42,7 +42,13 @@ export async function download( const resolvedPath = paths.resolvePath(pkg); const foundChecksum = await sha256(resolvedPath).catch(() => 'MISSING'); - const pathExists = existsSync(resolvedPath); + let pathExists = null; + try { + await access(resolvedPath); + pathExists = true; + } catch (e) { + pathExists = false; + } if (pathExists && foundChecksum === archiveChecksum) { logger?.debug( `Browser archive for ${pkg.platform}/${pkg.architecture} already found in ${resolvedPath} with matching checksum.` diff --git a/x-pack/plugins/screenshotting/server/browsers/extract/unzip.test.ts b/x-pack/plugins/screenshotting/server/browsers/extract/unzip.test.ts index 4af457a0c3a6e..08eac21450f26 100644 --- a/x-pack/plugins/screenshotting/server/browsers/extract/unzip.test.ts +++ b/x-pack/plugins/screenshotting/server/browsers/extract/unzip.test.ts @@ -6,7 +6,7 @@ */ import mockFs from 'mock-fs'; -import { readFileSync } from 'fs'; +import { readFile } from 'fs/promises'; import { ExtractError } from './extract_error'; import { unzip } from './unzip'; @@ -28,7 +28,7 @@ describe('unzip', () => { it('should extract zipped contents', async () => { await unzip('/test.zip', '/output'); - expect(readFileSync('/output/test.txt').toString()).toEqual('test'); + await expect(readFile('/output/test.txt', 'utf8')).resolves.toBe('test'); }); it('should reject on invalid archive', async () => { diff --git a/x-pack/plugins/searchprofiler/public/application/lib/check_for_json_errors.test.ts b/x-pack/plugins/searchprofiler/public/application/lib/check_for_json_errors.test.ts index ccd8761c031b2..606b302fc8559 100644 --- a/x-pack/plugins/searchprofiler/public/application/lib/check_for_json_errors.test.ts +++ b/x-pack/plugins/searchprofiler/public/application/lib/check_for_json_errors.test.ts @@ -12,7 +12,7 @@ describe('checkForParseErrors', function () { it('returns error from bad JSON', function () { const json = '{"foo": {"bar": {"baz": "buzz}}}'; const result = checkForParseErrors(json); - expect(result.error.message).to.be(`Unexpected end of JSON input`); + expect(result.error.message).to.be(`Unterminated string in JSON at position 32`); }); it('returns parsed value from good JSON', function () { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.test.ts index f383a9d11cc00..da4f9e67d7b8f 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.test.ts @@ -167,7 +167,7 @@ describe('Import rules route', () => { errors: [ { error: { - message: 'Unexpected token h in JSON at position 1', + message: `Unexpected token 'h', "this is not"... is not valid JSON`, status_code: 400, }, rule_id: '(unknown id)', diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_rules_stream_from_ndjson.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_rules_stream_from_ndjson.test.ts index b6cffd47a494e..5e37f161c3dde 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_rules_stream_from_ndjson.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/create_rules_stream_from_ndjson.test.ts @@ -234,7 +234,9 @@ describe('create_rules_stream_from_ndjson', () => { type: 'query', immutable: false, }); - expect(resultOrError[1].message).toEqual('Unexpected token , in JSON at position 1'); + expect(resultOrError[1].message).toEqual( + `Expected property name or '}' in JSON at position 1` + ); expect(resultOrError[2]).toEqual({ rule_id: 'rule-2', output_index: '.siem-signals', diff --git a/x-pack/plugins/task_manager/server/saved_objects/migrations.test.ts b/x-pack/plugins/task_manager/server/saved_objects/migrations.test.ts index 081918673d82a..794a9c466906f 100644 --- a/x-pack/plugins/task_manager/server/saved_objects/migrations.test.ts +++ b/x-pack/plugins/task_manager/server/saved_objects/migrations.test.ts @@ -282,7 +282,7 @@ describe('handles errors during migrations', () => { migration800(taskInstance, migrationContext); }).toThrowError(); expect(migrationContext.log.error).toHaveBeenCalledWith( - `savedObject 8.0.0 migration failed for task instance ${taskInstance.id} with error: Unexpected token s in JSON at position 2`, + `savedObject 8.0.0 migration failed for task instance ${taskInstance.id} with error: Expected property name or '}' in JSON at position 2`, { migrations: { taskInstanceDocument: { diff --git a/yarn.lock b/yarn.lock index b195777a41c06..9f4e3861c0889 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9794,10 +9794,12 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@18.18.5", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@>=18.0.0", "@types/node@^10.1.0", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^18.11.18", "@types/node@^18.17.5": - version "18.18.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.5.tgz#afc0fd975df946d6e1add5bbf98264225b212244" - integrity sha512-4slmbtwV59ZxitY4ixUZdy1uRLf9eSIvBWPQxNjhHYWEtn0FryfKpyS2cvADYXTayWdKEIsJengncrVvkI4I6A== +"@types/node@*", "@types/node@20.10.5", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@>=18.0.0", "@types/node@^10.1.0", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^18.11.18", "@types/node@^18.17.5": + version "20.10.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.5.tgz#47ad460b514096b7ed63a1dae26fad0914ed3ab2" + integrity sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw== + dependencies: + undici-types "~5.26.4" "@types/nodemailer@^6.4.0": version "6.4.0" @@ -29500,6 +29502,11 @@ unc-path-regex@^0.1.2: resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + undici@^5.21.2, undici@^5.22.1: version "5.26.3" resolved "https://registry.yarnpkg.com/undici/-/undici-5.26.3.tgz#ab3527b3d5bb25b12f898dfd22165d472dd71b79" From 5f5f22224cb13ce18397e2b2603c18538ed78947 Mon Sep 17 00:00:00 2001 From: Jon Date: Tue, 2 Jan 2024 14:57:17 -0600 Subject: [PATCH 056/323] Upgrade openai to 4.24.1 (#173934) https://github.com/openai/openai-node/releases/tag/v4.0.0 For reviewers: I made a first pass, but I'm unsure on a few of the checks. If there's a ts-expect-error help would be appreciated. Feel free to push directly or whichever workflow is best for you. --------- Co-authored-by: Dario Gieselaar --- package.json | 2 +- .../server/plugin.ts | 4 +-- .../lib/get_token_count_from_openai_stream.ts | 10 +++++--- .../common/types.ts | 9 +++---- .../server/functions/esql/index.ts | 2 ++ .../server/routes/chat/route.ts | 6 ++--- .../server/service/client/index.test.ts | 10 +++++--- .../server/service/client/index.ts | 20 +++++++-------- .../common/create_openai_chunk.ts | 2 ++ .../tests/complete/complete.spec.ts | 10 +++++--- .../tests/conversations/index.spec.ts | 10 +++++--- yarn.lock | 25 ++++--------------- 12 files changed, 55 insertions(+), 55 deletions(-) diff --git a/package.json b/package.json index ceff814ad5b14..68122ca59fc5b 100644 --- a/package.json +++ b/package.json @@ -1010,7 +1010,7 @@ "normalize-path": "^3.0.0", "object-hash": "^1.3.1", "object-path-immutable": "^3.1.1", - "openai": "^3.3.0", + "openai": "^4.24.1", "openpgp": "5.10.1", "opn": "^5.5.0", "ora": "^4.0.4", diff --git a/x-pack/examples/gen_ai_streaming_response_example/server/plugin.ts b/x-pack/examples/gen_ai_streaming_response_example/server/plugin.ts index 05f9612bcf73d..02be370d08e25 100644 --- a/x-pack/examples/gen_ai_streaming_response_example/server/plugin.ts +++ b/x-pack/examples/gen_ai_streaming_response_example/server/plugin.ts @@ -6,7 +6,7 @@ */ import Boom from '@hapi/boom'; -import { CreateChatCompletionResponse } from 'openai'; +import type OpenAI from 'openai'; import { Readable } from 'stream'; import { Plugin, CoreSetup } from '@kbn/core/server'; import { schema } from '@kbn/config-schema'; @@ -112,7 +112,7 @@ export class GenAiStreamingResponseExamplePlugin implements Plugin { } return response.ok({ - body: executeResult.data as CreateChatCompletionResponse | Readable, + body: executeResult.data as OpenAI.ChatCompletion | Readable, }); } ); diff --git a/x-pack/plugins/actions/server/lib/get_token_count_from_openai_stream.ts b/x-pack/plugins/actions/server/lib/get_token_count_from_openai_stream.ts index 0091faca468e3..0aa5fca22d0ff 100644 --- a/x-pack/plugins/actions/server/lib/get_token_count_from_openai_stream.ts +++ b/x-pack/plugins/actions/server/lib/get_token_count_from_openai_stream.ts @@ -9,7 +9,7 @@ import { encode } from 'gpt-tokenizer'; import { isEmpty, omitBy } from 'lodash'; import { Readable } from 'stream'; import { finished } from 'stream/promises'; -import { CreateChatCompletionRequest } from 'openai'; +import type OpenAI from 'openai'; import { Logger } from '@kbn/logging'; export async function getTokenCountFromOpenAIStream({ @@ -25,7 +25,9 @@ export async function getTokenCountFromOpenAIStream({ prompt: number; completion: number; }> { - const chatCompletionRequest = JSON.parse(body) as CreateChatCompletionRequest; + const chatCompletionRequest = JSON.parse( + body + ) as OpenAI.ChatCompletionCreateParams.ChatCompletionCreateParamsStreaming; // per https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb const tokensFromMessages = encode( @@ -33,9 +35,9 @@ export async function getTokenCountFromOpenAIStream({ .map( (msg) => `<|start|>${msg.role}\n${msg.content}\n${ - msg.name + 'name' in msg ? msg.name - : msg.function_call + : 'function_call' in msg && msg.function_call ? msg.function_call.name + '\n' + msg.function_call.arguments : '' }<|end|>` diff --git a/x-pack/plugins/observability_ai_assistant/common/types.ts b/x-pack/plugins/observability_ai_assistant/common/types.ts index 2584a1c7083fd..b7ef771378403 100644 --- a/x-pack/plugins/observability_ai_assistant/common/types.ts +++ b/x-pack/plugins/observability_ai_assistant/common/types.ts @@ -6,15 +6,12 @@ */ import type { JSONSchema } from 'json-schema-to-ts'; -import type { - CreateChatCompletionResponse, - CreateChatCompletionResponseChoicesInner, -} from 'openai'; +import type OpenAI from 'openai'; import type { Observable } from 'rxjs'; -export type CreateChatCompletionResponseChunk = Omit & { +export type CreateChatCompletionResponseChunk = Omit & { choices: Array< - Omit & { + Omit & { delta: { content?: string; function_call?: { name?: string; arguments?: string } }; } >; diff --git a/x-pack/plugins/observability_ai_assistant/server/functions/esql/index.ts b/x-pack/plugins/observability_ai_assistant/server/functions/esql/index.ts index dcc26adc52e43..bbadaa82a8fb3 100644 --- a/x-pack/plugins/observability_ai_assistant/server/functions/esql/index.ts +++ b/x-pack/plugins/observability_ai_assistant/server/functions/esql/index.ts @@ -288,6 +288,8 @@ export function registerEsqlFunction({ delta: { content: cachedContent, }, + index: 0, + finish_reason: null, }, ], }); diff --git a/x-pack/plugins/observability_ai_assistant/server/routes/chat/route.ts b/x-pack/plugins/observability_ai_assistant/server/routes/chat/route.ts index 163b41135b518..87b473e9a320b 100644 --- a/x-pack/plugins/observability_ai_assistant/server/routes/chat/route.ts +++ b/x-pack/plugins/observability_ai_assistant/server/routes/chat/route.ts @@ -7,7 +7,7 @@ import { notImplemented } from '@hapi/boom'; import * as t from 'io-ts'; import { toBooleanRt } from '@kbn/io-ts-utils'; -import type { CreateChatCompletionResponse } from 'openai'; +import type OpenAI from 'openai'; import { Readable } from 'stream'; import { createObservabilityAIAssistantServerRoute } from '../create_observability_ai_assistant_server_route'; import { messageRt } from '../runtime_types'; @@ -38,7 +38,7 @@ const chatRoute = createObservabilityAIAssistantServerRoute({ }), t.partial({ query: t.type({ stream: toBooleanRt }) }), ]), - handler: async (resources): Promise => { + handler: async (resources): Promise => { const { request, params, service } = resources; const client = await service.getClient({ request }); @@ -93,7 +93,7 @@ const chatCompleteRoute = createObservabilityAIAssistantServerRoute({ }), ]), }), - handler: async (resources): Promise => { + handler: async (resources): Promise => { const { request, params, service } = resources; const client = await service.getClient({ request }); diff --git a/x-pack/plugins/observability_ai_assistant/server/service/client/index.test.ts b/x-pack/plugins/observability_ai_assistant/server/service/client/index.test.ts index a0e0a40a4ac89..3e7660c427be7 100644 --- a/x-pack/plugins/observability_ai_assistant/server/service/client/index.test.ts +++ b/x-pack/plugins/observability_ai_assistant/server/service/client/index.test.ts @@ -9,7 +9,7 @@ import type { ElasticsearchClient, Logger } from '@kbn/core/server'; import type { DeeplyMockedKeys } from '@kbn/utility-types-jest'; import { waitFor } from '@testing-library/react'; import { last, merge, repeat } from 'lodash'; -import { ChatCompletionResponseMessage } from 'openai'; +import type OpenAI from 'openai'; import { Subject } from 'rxjs'; import { EventEmitter, PassThrough, type Readable } from 'stream'; import { finished } from 'stream/promises'; @@ -51,6 +51,8 @@ function createLlmSimulator() { choices: [ { delta: msg, + index: 0, + finish_reason: null, }, ], }; @@ -974,6 +976,7 @@ describe('Observability AI Assistant client', () => { model: 'gpt-4', object: 'chat.completion.chunk', choices: [ + // @ts-expect-error { delta: { content: 'Hello', @@ -1024,6 +1027,7 @@ describe('Observability AI Assistant client', () => { model: 'gpt-4', object: 'chat.completion.chunk', choices: [ + // @ts-expect-error { delta: { content: 'Hello', @@ -1342,9 +1346,9 @@ describe('Observability AI Assistant client', () => { it('truncates the message', () => { const body = JSON.parse( (actionsClientMock.execute.mock.lastCall![0].params as any).subActionParams.body - ); + ) as OpenAI.Chat.ChatCompletionCreateParams; - const parsed = JSON.parse(last(body.messages as ChatCompletionResponseMessage[])!.content!); + const parsed = JSON.parse(last(body.messages)!.content! as string); expect(parsed).toEqual({ message: 'Function response exceeded the maximum length allowed and was truncated', diff --git a/x-pack/plugins/observability_ai_assistant/server/service/client/index.ts b/x-pack/plugins/observability_ai_assistant/server/service/client/index.ts index c158d40fbc8a0..0e3927f82370d 100644 --- a/x-pack/plugins/observability_ai_assistant/server/service/client/index.ts +++ b/x-pack/plugins/observability_ai_assistant/server/service/client/index.ts @@ -10,11 +10,7 @@ import type { ActionsClient } from '@kbn/actions-plugin/server'; import type { ElasticsearchClient } from '@kbn/core/server'; import type { Logger } from '@kbn/logging'; import type { PublicMethodsOf } from '@kbn/utility-types'; -import type { - ChatCompletionRequestMessage, - CreateChatCompletionRequest, - CreateChatCompletionResponse, -} from 'openai'; +import type OpenAI from 'openai'; import { decode, encode } from 'gpt-tokenizer'; import { compact, isEmpty, last, merge, omit, pick, take } from 'lodash'; import { isObservable, lastValueFrom } from 'rxjs'; @@ -419,8 +415,12 @@ export class ObservabilityAIAssistantClient { functionCall?: string; stream?: TStream; signal: AbortSignal; - }): Promise => { - const messagesForOpenAI: ChatCompletionRequestMessage[] = compact( + }): Promise => { + const messagesForOpenAI: Array< + Omit & { + role: MessageRole; + } + > = compact( messages .filter((message) => message.message.content || message.message.function_call?.name) .map((message) => { @@ -440,8 +440,8 @@ export class ObservabilityAIAssistantClient { const functionsForOpenAI = functions; - const request: Omit & { model?: string } = { - messages: messagesForOpenAI, + const request: Omit & { model?: string } = { + messages: messagesForOpenAI as OpenAI.ChatCompletionCreateParams['messages'], ...(stream ? { stream: true } : {}), ...(!!functions?.length ? { functions: functionsForOpenAI } : {}), temperature: 0, @@ -468,7 +468,7 @@ export class ObservabilityAIAssistantClient { const response = stream ? (executeResult.data as Readable) - : (executeResult.data as CreateChatCompletionResponse); + : (executeResult.data as OpenAI.ChatCompletion); if (response instanceof Readable) { signal.addEventListener('abort', () => response.destroy()); diff --git a/x-pack/test/observability_ai_assistant_api_integration/common/create_openai_chunk.ts b/x-pack/test/observability_ai_assistant_api_integration/common/create_openai_chunk.ts index 7e39a7d73ce8b..cc83dac4aa1e4 100644 --- a/x-pack/test/observability_ai_assistant_api_integration/common/create_openai_chunk.ts +++ b/x-pack/test/observability_ai_assistant_api_integration/common/create_openai_chunk.ts @@ -21,6 +21,8 @@ export function createOpenAiChunk( choices: [ { delta: msg, + index: 0, + finish_reason: null, }, ], }; diff --git a/x-pack/test/observability_ai_assistant_api_integration/tests/complete/complete.spec.ts b/x-pack/test/observability_ai_assistant_api_integration/tests/complete/complete.spec.ts index 6601dbc213ab4..ae5fc9946674f 100644 --- a/x-pack/test/observability_ai_assistant_api_integration/tests/complete/complete.spec.ts +++ b/x-pack/test/observability_ai_assistant_api_integration/tests/complete/complete.spec.ts @@ -14,7 +14,7 @@ import { StreamingChatResponseEvent, StreamingChatResponseEventType, } from '@kbn/observability-ai-assistant-plugin/common/conversation_complete'; -import { CreateChatCompletionRequest } from 'openai'; +import type OpenAI from 'openai'; import { createLlmProxy, LlmProxy } from '../../common/create_llm_proxy'; import { createOpenAiChunk } from '../../common/create_openai_chunk'; import { FtrProviderContext } from '../../common/ftr_provider_context'; @@ -145,12 +145,16 @@ export default function ApiTest({ getService }: FtrProviderContext) { before(async () => { const titleInterceptor = proxy.intercept( 'title', - (body) => (JSON.parse(body) as CreateChatCompletionRequest).messages.length === 1 + (body) => + (JSON.parse(body) as OpenAI.Chat.ChatCompletionCreateParamsNonStreaming).messages + .length === 1 ); const conversationInterceptor = proxy.intercept( 'conversation', - (body) => (JSON.parse(body) as CreateChatCompletionRequest).messages.length !== 1 + (body) => + (JSON.parse(body) as OpenAI.Chat.ChatCompletionCreateParamsNonStreaming).messages + .length !== 1 ); const responsePromise = new Promise((resolve, reject) => { diff --git a/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts b/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts index 2d2f4c3fc8c33..ce9fc050b5e09 100644 --- a/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts +++ b/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { CreateChatCompletionRequest } from 'openai'; +import type OpenAI from 'openai'; import { createLlmProxy, LlmProxy, @@ -147,12 +147,16 @@ export default function ApiTest({ getService, getPageObjects }: FtrProviderConte before(async () => { const titleInterceptor = proxy.intercept( 'title', - (body) => (JSON.parse(body) as CreateChatCompletionRequest).messages.length === 1 + (body) => + (JSON.parse(body) as OpenAI.Chat.ChatCompletionCreateParamsNonStreaming) + .messages.length === 1 ); const conversationInterceptor = proxy.intercept( 'conversation', - (body) => (JSON.parse(body) as CreateChatCompletionRequest).messages.length !== 1 + (body) => + (JSON.parse(body) as OpenAI.Chat.ChatCompletionCreateParamsNonStreaming) + .messages.length !== 1 ); await testSubjects.setValue(ui.pages.conversations.chatInput, 'hello'); diff --git a/yarn.lock b/yarn.lock index 9f4e3861c0889..340ae8c920995 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11796,13 +11796,6 @@ axe-core@^4.8.2: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.8.2.tgz#2f6f3cde40935825cf4465e3c1c9e77b240ff6ae" integrity sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g== -axios@^0.26.0: - version "0.26.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" - integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA== - dependencies: - follow-redirects "^1.14.8" - axios@^1.3.4, axios@^1.6.0, axios@^1.6.3: version "1.6.3" resolved "https://registry.npmjs.org/axios/-/axios-1.6.3.tgz#7f50f23b3aa246eff43c54834272346c396613f4" @@ -17157,7 +17150,7 @@ folktale@2.3.2: resolved "https://registry.yarnpkg.com/folktale/-/folktale-2.3.2.tgz#38231b039e5ef36989920cbf805bf6b227bf4fd4" integrity sha512-+8GbtQBwEqutP0v3uajDDoN64K2ehmHd0cjlghhxh0WpcfPzAIjPA03e1VvHlxL02FVGR0A6lwXsNQKn3H1RNQ== -follow-redirects@^1.0.0, follow-redirects@^1.14.8, follow-redirects@^1.15.0: +follow-redirects@^1.0.0, follow-redirects@^1.15.0: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== @@ -23450,18 +23443,10 @@ open@^8.0.9, open@^8.4.0: is-docker "^2.1.1" is-wsl "^2.2.0" -openai@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/openai/-/openai-3.3.0.tgz#a6408016ad0945738e1febf43f2fccca83a3f532" - integrity sha512-uqxI/Au+aPRnsaQRe8CojU0eCR7I0mBiKjD3sNMzY6DaC1ZVrc85u98mtJW6voDug8fgGN+DIZmTDxTthxb7dQ== - dependencies: - axios "^0.26.0" - form-data "^4.0.0" - -openai@^4.17.0: - version "4.17.5" - resolved "https://registry.yarnpkg.com/openai/-/openai-4.17.5.tgz#096655741965656ec969731e97d4bce880112d66" - integrity sha512-SDgA933/QOjISCgWRc/JQhY1HweYZ6FOie3bWrCpj09FA5xIlaomldbyzICHNjtkh7SWEmGYFjRHIDtuwr+eTw== +openai@^4.17.0, openai@^4.24.1: + version "4.24.1" + resolved "https://registry.yarnpkg.com/openai/-/openai-4.24.1.tgz#3759001eca835228289fcf18c1bd8d35dae538ba" + integrity sha512-ezm/O3eiZMnyBqirUnWm9N6INJU1WhNtz+nK/Zj/2oyKvRz9pgpViDxa5wYOtyGYXPn1sIKBV0I/S4BDhtydqw== dependencies: "@types/node" "^18.11.18" "@types/node-fetch" "^2.6.4" From f9a4962b4802a520bd7ab3788138cd1c75e7de3a Mon Sep 17 00:00:00 2001 From: Dzmitry Lemechko Date: Tue, 2 Jan 2024 23:01:26 +0200 Subject: [PATCH 057/323] [ftr] abort retry on invalid webdriver session (#174092) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Since many our e2e tests use Retry service, we might have a situation with retry running for some time (**20,30, 120 seconds** ) before reaching timeout while browser already crashed and Webdriver is not functioning properly. This PR updates Retry service with checking error name before retry attempt: if it is the WebDriver critical error, retry is aborted and we fail test fast. It should help with long useless logging messages as well: Before: ``` │ debg --- retry.try error: no such window: target window already closed │ from unknown error: web view not found │ (Session info: chrome=120.0.6099.129) │ debg Find.findByCssSelector('[data-test-subj="canvasExpressionInput"]') with timeout=10000 │ debg --- retry.try failed again with the same message... │ debg Find.findByCssSelector('[data-test-subj="canvasExpressionInput"]') with timeout=10000 │ debg --- retry.try failed again with the same message... ... │ERROR Browser is closed, no artifacts were captured for the failure └- ✖ fail: Canvas Canvas app expression editor shows autocomplete when typing │ retry.try timeout: NoSuchWindowError: no such window: target window already closed │ from unknown error: web view not found │ (Session info: chrome=120.0.6099.129) │ at Object.throwDecodedError (/Users/dmle/github/kibana/node_modules/selenium-webdriver/lib/error.js:524:15) │ at parseHttpResponse (/Users/dmle/github/kibana/node_modules/selenium-webdriver/lib/http.js:601:13) │ at Executor.execute (/Users/dmle/github/kibana/node_modules/selenium-webdriver/lib/http.js:529:28) │ at processTicksAndRejections (node:internal/process/task_queues:95:5) │ at Task.exec (prevent_parallel_calls.ts:28:20) │ Error: retry.try timeout: NoSuchWindowError: no such window: target window already closed │ from unknown error: web view not found │ (Session info: chrome=120.0.6099.129) │ at Object.throwDecodedError (node_modules/selenium-webdriver/lib/error.js:524:15) │ at parseHttpResponse (node_modules/selenium-webdriver/lib/http.js:601:13) │ at Executor.execute (node_modules/selenium-webdriver/lib/http.js:529:28) │ at processTicksAndRejections (node:internal/process/task_queues:95:5) │ at Task.exec (prevent_parallel_calls.ts:28:20) │ at onFailure (retry_for_success.ts:17:9) │ at retryForSuccess (retry_for_success.ts:59:13) │ at RetryService.try (retry.ts:31:12) │ at Proxy.clickByCssSelector (find.ts:417:5) │ at TestSubjects.click (test_subjects.ts:164:5) │ at Context. (expression.ts:92:7) │ at Object.apply (wrap_function.js:73:16) │ │ └-> "after all" hook for "shows autocomplete when typing" │ debg unloading docs from archive at /Users/dmle/github/kibana/x-pack/test/functional/fixtures/kbn_archiver/canvas/default.json │ info deleting 1 objects { space: undefined } │ succ 1 saved objects deleted └-> "after all" hook: afterTestSuite.trigger for "shows autocomplete when typing" │ERROR Browser window is already closed ``` After: ``` │ debg --- retry.try error: no such window: target window already closed │ from unknown error: web view not found │ (Session info: chrome=120.0.6099.129) │ERROR Browser is closed, no artifacts were captured for the failure └- ✖ fail: Canvas Canvas app expression editor shows autocomplete when typing │ Error: WebDriver session is invalid, retry was aborted │ at retryForSuccess (retry_for_success.ts:64:13) │ at RetryService.try (retry.ts:31:12) │ at MonacoEditorService.getCodeEditorValue (monaco_editor.ts:25:5) │ at Context. (expression.ts:83:34) │ at Object.apply (wrap_function.js:73:16) │ │ └-> "after all" hook for "shows autocomplete when typing" │ debg unloading docs from archive at /Users/dmle/github/kibana/x-pack/test/functional/fixtures/kbn_archiver/canvas/default.json │ info deleting 1 objects { space: undefined } │ succ 1 saved objects deleted └-> "after all" hook: afterTestSuite.trigger for "shows autocomplete when typing" │ERROR Browser window is already closed └-> "after all" hook in "Canvas app" │ debg set roles = superuser │ debg creating user test_user │ debg created user test_user └-> "after all" hook: afterTestSuite.trigger in "Canvas app" │ERROR Browser window is already closed └-> "after all" hook: afterTestSuite.trigger in "Canvas" │ERROR Browser window is already closed 5 passing (17.0s) 1 failing 1) Canvas Canvas app expression editor shows autocomplete when typing: Error: WebDriver session is invalid, retry was aborted at retryForSuccess (retry_for_success.ts:64:13) at RetryService.try (retry.ts:31:12) at MonacoEditorService.getCodeEditorValue (monaco_editor.ts:25:5) at Context. (expression.ts:83:34) at Object.apply (wrap_function.js:73:16) ``` --- .../services/retry/retry_for_success.ts | 4 ++++ test/common/services/security/test_user.ts | 5 ++++- test/functional/services/remote/remote.ts | 6 +++++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/kbn-ftr-common-functional-services/services/retry/retry_for_success.ts b/packages/kbn-ftr-common-functional-services/services/retry/retry_for_success.ts index 8b131db4c05e5..088f6fedc85f7 100644 --- a/packages/kbn-ftr-common-functional-services/services/retry/retry_for_success.ts +++ b/packages/kbn-ftr-common-functional-services/services/retry/retry_for_success.ts @@ -52,12 +52,16 @@ export async function retryForSuccess(log: ToolingLog, options: Options) { const start = Date.now(); const retryDelay = 502; + const criticalWebDriverErrors = ['NoSuchSessionError', 'NoSuchWindowError']; let lastError; while (true) { if (Date.now() - start > timeout) { await onFailure(lastError); throw new Error('expected onFailure() option to throw an error'); + } else if (lastError && criticalWebDriverErrors.includes(lastError.name)) { + // Aborting retry since WebDriver session is invalid or browser window is closed + throw new Error('WebDriver session is invalid, retry was aborted'); } else if (lastError && onFailureBlock) { const before = await runAttempt(onFailureBlock); if ('error' in before) { diff --git a/test/common/services/security/test_user.ts b/test/common/services/security/test_user.ts index bc5dbf68698bc..e8d88d81bb167 100644 --- a/test/common/services/security/test_user.ts +++ b/test/common/services/security/test_user.ts @@ -61,7 +61,10 @@ export class TestUser extends FtrService { }); if (this.browser && this.testSubjects && !options?.skipBrowserRefresh) { - if (await this.testSubjects.exists('kibanaChrome', { allowHidden: true })) { + if ( + (await this.browser.hasOpenWindow()) && + (await this.testSubjects.exists('kibanaChrome', { allowHidden: true })) + ) { await this.browser.refresh(); // accept alert if it pops up const alert = await this.browser.getAlert(); diff --git a/test/functional/services/remote/remote.ts b/test/functional/services/remote/remote.ts index b3038130b0187..6ee7b6e8d9085 100644 --- a/test/functional/services/remote/remote.ts +++ b/test/functional/services/remote/remote.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { NoSuchSessionError } from 'selenium-webdriver/lib/error'; +import { NoSuchSessionError, NoSuchWindowError } from 'selenium-webdriver/lib/error'; import { FtrProviderContext } from '../../ftr_provider_context'; import { initWebDriver, BrowserConfig } from './webdriver'; import { Browsers } from './browsers'; @@ -37,6 +37,10 @@ export async function RemoteProvider({ getService }: FtrProviderContext) { // Avoid duplicating NoSuchSessionError error output on each hook // https://developer.mozilla.org/en-US/docs/Web/WebDriver/Errors/InvalidSessionID log.error('WebDriver session is no longer valid'); + } else if (error instanceof NoSuchWindowError) { + // Avoid duplicating NoSuchWindowError error output on each hook + // https://developer.mozilla.org/en-US/docs/Web/WebDriver/Errors + log.error('Browser window is already closed'); } else { throw error; } From e62b7ac30c12c2daca131b95bd7ae879fe85c709 Mon Sep 17 00:00:00 2001 From: Paulo Henrique Date: Tue, 2 Jan 2024 13:03:33 -0800 Subject: [PATCH 058/323] [Cloud Posture] [Quick wins] Enable edit DataView on the Misconfigurations Findings Table (#173870) ## Summary This PR is part of the [Quick Wins](https://github.com/elastic/security-team/issues/8254) improvements for 8.13.0. It enables the Edit DataView option on the Misconfigurations Findings Page. It also adds the following: - Unit tests to test the basic functionality of the `CloudSecurityDataTable` component. - Updated unit tests on the configurations page to reflect the current hook - Added deprecation notice on the `useCloudSecurityTable` hook. - FTR test to check if the option to edit DataView is enabled. - A Check on the `useLatestFindingsDataView` hook to only update when needed (This update logic is [planned](https://github.com/elastic/kibana/issues/172615) to be replaced by a server-side callback when installing the Cloud Security integration. Still, for now, it is an improvement over the current logic). ### Screenshots ![image](https://github.com/elastic/kibana/assets/19270322/b7b738a6-4b90-4c9d-af15-fc91ca4a92d4) ![image](https://github.com/elastic/kibana/assets/19270322/44649e30-7bb3-4eec-83ca-d3ec7924c527) ![image](https://github.com/elastic/kibana/assets/19270322/accf66b1-882f-4c04-837c-24c8953aba2f) --- .../api/use_latest_findings_data_view.ts | 6 +- .../use_cloud_posture_table.ts | 6 +- .../public/common/types.ts | 2 + .../cloud_security_data_table.test.tsx | 102 ++++++++++++++++++ .../cloud_security_data_table.tsx | 32 ++++-- .../configurations/configurations.test.tsx | 9 -- .../pages/configurations/configurations.tsx | 6 +- .../latest_findings_container.tsx | 17 ++- .../latest_findings/latest_findings_table.tsx | 10 +- .../use_latest_findings_table.tsx | 6 +- .../page_objects/findings_page.ts | 7 ++ .../pages/findings.ts | 10 +- 12 files changed, 182 insertions(+), 31 deletions(-) create mode 100644 x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_latest_findings_data_view.ts b/x-pack/plugins/cloud_security_posture/public/common/api/use_latest_findings_data_view.ts index 86b9692cbfc43..c8e98703cdbf0 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_latest_findings_data_view.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/api/use_latest_findings_data_view.ts @@ -62,15 +62,19 @@ export const useLatestFindingsDataView = (dataView: string) => { } if (dataView === LATEST_FINDINGS_INDEX_PATTERN) { + let shouldUpdate = false; Object.entries(cloudSecurityFieldLabels).forEach(([field, label]) => { if ( !dataViewObj.getFieldAttrs()[field]?.customLabel || dataViewObj.getFieldAttrs()[field]?.customLabel === field ) { dataViewObj.setFieldCustomLabel(field, label); + shouldUpdate = true; } }); - await dataViews.updateSavedObject(dataViewObj); + if (shouldUpdate) { + await dataViews.updateSavedObject(dataViewObj); + } } return dataViewObj; diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_table/use_cloud_posture_table.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_table/use_cloud_posture_table.ts index 0becb56e6ec22..d06e29a95e46d 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_table/use_cloud_posture_table.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_table/use_cloud_posture_table.ts @@ -40,9 +40,9 @@ export interface CloudPostureTableResult { getRowsFromPages: (data: Array<{ page: DataTableRecord[] }> | undefined) => DataTableRecord[]; } -/* - Hook for managing common table state and methods for Cloud Posture -*/ +/** + * @deprecated will be replaced by useCloudPostureDataTable + */ export const useCloudPostureTable = ({ defaultQuery = getDefaultQuery, dataView, diff --git a/x-pack/plugins/cloud_security_posture/public/common/types.ts b/x-pack/plugins/cloud_security_posture/public/common/types.ts index a4c26643293fd..ac483445407e4 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/types.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/types.ts @@ -22,6 +22,8 @@ export interface FindingsBaseURLQuery { export interface FindingsBaseProps { dataView: DataView; + dataViewRefetch?: () => void; + dataViewIsRefetching?: boolean; } export interface FindingsBaseESQueryConfig { diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx new file mode 100644 index 0000000000000..7ddbe28a7da07 --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.test.tsx @@ -0,0 +1,102 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { render } from '@testing-library/react'; +import React from 'react'; +import { TestProvider } from '../../test/test_provider'; +import { CloudSecurityDataTable, CloudSecurityDataTableProps } from './cloud_security_data_table'; + +const mockDataView = { + fields: { + getAll: () => [ + { id: 'field1', name: 'field1', customLabel: 'Label 1', visualizable: true }, + { id: 'field2', name: 'field2', customLabel: 'Label 2', visualizable: true }, + ], + getByName: (name: string) => ({ id: name }), + }, + getFieldByName: (name: string) => ({ id: name }), + getFormatterForField: (name: string) => ({ + convert: (value: string) => value, + }), +} as any; + +const mockDefaultColumns = [{ id: 'field1' }, { id: 'field2' }]; + +const mockCloudPostureDataTable = { + setUrlQuery: jest.fn(), + columnsLocalStorageKey: 'test', + filters: [], + onSort: jest.fn(), + sort: [], + query: {}, + queryError: undefined, + pageIndex: 0, + urlQuery: {}, + setTableOptions: jest.fn(), + handleUpdateQuery: jest.fn(), + pageSize: 10, + setPageSize: jest.fn(), + onChangeItemsPerPage: jest.fn(), + onChangePage: jest.fn(), + onResetFilters: jest.fn(), + getRowsFromPages: jest.fn(), +} as any; + +const renderDataTable = (props: Partial = {}) => { + const defaultProps: CloudSecurityDataTableProps = { + dataView: mockDataView, + isLoading: false, + defaultColumns: mockDefaultColumns, + rows: [], + total: 0, + flyoutComponent: () => <>, + cloudPostureDataTable: mockCloudPostureDataTable, + loadMore: jest.fn(), + title: 'Test Table', + }; + + return render( + + + + ); +}; + +describe('CloudSecurityDataTable', () => { + it('renders loading state', () => { + const { getByTestId } = renderDataTable({ isLoading: true }); + expect(getByTestId('unifiedDataTableLoading')).toBeInTheDocument(); + }); + + it('renders empty state when no rows are present', () => { + const { getByTestId } = renderDataTable(); + expect(getByTestId('csp:empty-state')).toBeInTheDocument(); + }); + + it('renders data table with rows', async () => { + const mockRows = [ + { + id: '1', + raw: { + field1: 'Label 1', + field2: 'Label 2', + }, + flattened: { + field1: 'Label 1', + field2: 'Label 2', + }, + }, + ] as any; + const { getByTestId, getByText } = renderDataTable({ + rows: mockRows, + total: mockRows.length, + }); + + expect(getByTestId('discoverDocTable')).toBeInTheDocument(); + expect(getByText('Label 1')).toBeInTheDocument(); + expect(getByText('Label 2')).toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx index 84cea3e64115e..3f0c3da73a986 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx @@ -17,7 +17,7 @@ import { generateFilters } from '@kbn/data-plugin/public'; import { DocViewFilterFn } from '@kbn/unified-doc-viewer/types'; import useLocalStorage from 'react-use/lib/useLocalStorage'; import { useKibana } from '../../common/hooks/use_kibana'; -import { CloudPostureTableResult } from '../../common/hooks/use_cloud_posture_table'; +import { CloudPostureDataTableResult } from '../../common/hooks/use_cloud_posture_data_table'; import { EmptyState } from '../empty_state'; import { MAX_FINDINGS_TO_LOAD } from '../../common/constants'; import { useStyles } from './use_styles'; @@ -40,7 +40,7 @@ const useNewFieldsApi = true; // Hide Checkbox, enable open details Flyout const controlColumnIds = ['openDetails']; -interface CloudSecurityDataGridProps { +export interface CloudSecurityDataTableProps { dataView: DataView; isLoading: boolean; defaultColumns: CloudSecurityDefaultColumn[]; @@ -52,10 +52,10 @@ interface CloudSecurityDataGridProps { */ flyoutComponent: (hit: DataTableRecord, onCloseFlyout: () => void) => JSX.Element; /** - * This is the object that contains all the data and functions from the useCloudPostureTable hook. + * This is the object that contains all the data and functions from the useCloudPostureDataTable hook. * This is also used to manage the table state from the parent component. */ - cloudPostureTable: CloudPostureTableResult; + cloudPostureDataTable: CloudPostureDataTableResult; title: string; /** * This is a function that returns a map of column ids to custom cell renderers. @@ -78,6 +78,16 @@ interface CloudSecurityDataGridProps { * Height override for the data grid. */ height?: number; + /** + * Callback Function when the DataView field is edited. + * Required to enable editing of the field in the data grid. + */ + dataViewRefetch?: () => void; + /** + * Flag to indicate if the data view is refetching. + * Required for smoothing re-rendering the DataTable columns. + */ + dataViewIsRefetching?: boolean; } export const CloudSecurityDataTable = ({ @@ -87,14 +97,16 @@ export const CloudSecurityDataTable = ({ rows, total, flyoutComponent, - cloudPostureTable, + cloudPostureDataTable, loadMore, title, customCellRenderer, groupSelectorComponent, height, + dataViewRefetch, + dataViewIsRefetching, ...rest -}: CloudSecurityDataGridProps) => { +}: CloudSecurityDataTableProps) => { const { columnsLocalStorageKey, pageSize, @@ -104,7 +116,7 @@ export const CloudSecurityDataTable = ({ onResetFilters, filters, sort, - } = cloudPostureTable; + } = cloudPostureDataTable; const [columns, setColumns] = useLocalStorage( columnsLocalStorageKey, @@ -242,6 +254,9 @@ export const CloudSecurityDataTable = ({ opacity: isLoading ? 1 : 0, }; + const loadingState = + isLoading || dataViewIsRefetching ? DataLoadingState.loading : DataLoadingState.loaded; + return (
diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx index d1b35ab617a96..7b7bd42561204 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx @@ -26,7 +26,6 @@ import { render } from '@testing-library/react'; import { expectIdsInDoc } from '../../test/utils'; import { PACKAGE_NOT_INSTALLED_TEST_SUBJECT } from '../../components/cloud_posture_page'; import { useLicenseManagementLocatorApi } from '../../common/api/use_license_management_locator_api'; -import { useCloudPostureTable } from '../../common/hooks/use_cloud_posture_table'; jest.mock('../../common/api/use_latest_findings_data_view'); jest.mock('../../common/api/use_setup_status_api'); @@ -34,7 +33,6 @@ jest.mock('../../common/api/use_license_management_locator_api'); jest.mock('../../common/hooks/use_subscription_status'); jest.mock('../../common/navigation/use_navigate_to_cis_integration_policies'); jest.mock('../../common/navigation/use_csp_integration_link'); -jest.mock('../../common/hooks/use_cloud_posture_table'); const chance = new Chance(); @@ -54,13 +52,6 @@ beforeEach(() => { data: true, }) ); - - (useCloudPostureTable as jest.Mock).mockImplementation(() => ({ - getRowsFromPages: jest.fn(), - columnsLocalStorageKey: 'test', - filters: [], - sort: [], - })); }); const renderFindingsPage = () => { diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.tsx index 9e87d1d8eda6d..7e8bbfeedb832 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.tsx @@ -50,7 +50,11 @@ export const Configurations = () => { path={findingsNavigation.findings_default.path} render={() => ( - + )} /> diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_container.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_container.tsx index 9d536f0f0b180..e070847b6df55 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_container.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_container.tsx @@ -18,7 +18,11 @@ import { groupPanelRenderer, groupStatsRenderer } from './latest_findings_group_ import { FindingsDistributionBar } from '../layout/findings_distribution_bar'; import { ErrorCallout } from '../layout/error_callout'; -export const LatestFindingsContainer = ({ dataView }: FindingsBaseProps) => { +export const LatestFindingsContainer = ({ + dataView, + dataViewRefetch, + dataViewIsRefetching, +}: FindingsBaseProps) => { const renderChildComponent = useCallback( (groupFilters: Filter[]) => { return ( @@ -27,10 +31,12 @@ export const LatestFindingsContainer = ({ dataView }: FindingsBaseProps) => { nonPersistedFilters={groupFilters} height={DEFAULT_TABLE_HEIGHT} showDistributionBar={false} + dataViewRefetch={dataViewRefetch} + dataViewIsRefetching={dataViewIsRefetching} /> ); }, - [dataView] + [dataView, dataViewIsRefetching, dataViewRefetch] ); const { @@ -94,7 +100,12 @@ export const LatestFindingsContainer = ({ dataView }: FindingsBaseProps) => { return ( <> - + ); }; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx index be6d34a1df933..3adb10259871d 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx @@ -27,6 +27,8 @@ type LatestFindingsTableProps = FindingsBaseProps & { height?: number; showDistributionBar?: boolean; nonPersistedFilters?: Filter[]; + dataViewRefetch?: () => void; + dataViewIsRefetching?: boolean; }; /** @@ -87,9 +89,11 @@ export const LatestFindingsTable = ({ height, showDistributionBar = true, nonPersistedFilters, + dataViewRefetch, + dataViewIsRefetching, }: LatestFindingsTableProps) => { const { - cloudPostureTable, + cloudPostureDataTable, rows, error, isFetching, @@ -134,12 +138,14 @@ export const LatestFindingsTable = ({ rows={rows} total={total} flyoutComponent={flyoutComponent} - cloudPostureTable={cloudPostureTable} + cloudPostureDataTable={cloudPostureDataTable} loadMore={fetchNextPage} title={title} customCellRenderer={customCellRenderer} groupSelectorComponent={groupSelectorComponent} height={height} + dataViewRefetch={dataViewRefetch} + dataViewIsRefetching={dataViewIsRefetching} /> )} diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_table.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_table.tsx index 50ebb01f363f0..b60eefac2ac81 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_table.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_table.tsx @@ -28,7 +28,7 @@ export const useLatestFindingsTable = ({ nonPersistedFilters?: Filter[]; showDistributionBar?: boolean; }) => { - const cloudPostureTable = useCloudPostureDataTable({ + const cloudPostureDataTable = useCloudPostureDataTable({ dataView, paginationLocalStorageKey: LOCAL_STORAGE_DATA_TABLE_PAGE_SIZE_KEY, columnsLocalStorageKey, @@ -36,7 +36,7 @@ export const useLatestFindingsTable = ({ nonPersistedFilters, }); - const { query, sort, queryError, setUrlQuery, filters, getRowsFromPages } = cloudPostureTable; + const { query, sort, queryError, setUrlQuery, filters, getRowsFromPages } = cloudPostureDataTable; const { data, @@ -72,7 +72,7 @@ export const useLatestFindingsTable = ({ const canShowDistributionBar = showDistributionBar && total > 0; return { - cloudPostureTable, + cloudPostureDataTable, rows, error, isFetching, diff --git a/x-pack/test/cloud_security_posture_functional/page_objects/findings_page.ts b/x-pack/test/cloud_security_posture_functional/page_objects/findings_page.ts index c711c2300e1be..eb7ea67560154 100644 --- a/x-pack/test/cloud_security_posture_functional/page_objects/findings_page.ts +++ b/x-pack/test/cloud_security_posture_functional/page_objects/findings_page.ts @@ -220,6 +220,13 @@ export function FindingsPageProvider({ getService, getPageObjects }: FtrProvider const flyoutButton = await table.findAllByTestSubject('docTableExpandToggleColumn'); await flyoutButton[rowIndex].click(); }, + + async toggleEditDataViewFieldsOption(columnId: string) { + const element = await this.getElement(); + const column = await element.findByCssSelector(`[data-gridcell-column-id="${columnId}"]`); + const button = await column.findByCssSelector('.euiDataGridHeaderCell__button'); + return await button.click(); + }, }); const createTableObject = (tableTestSubject: string) => ({ diff --git a/x-pack/test/cloud_security_posture_functional/pages/findings.ts b/x-pack/test/cloud_security_posture_functional/pages/findings.ts index 69d100c1fbf62..5f4520277b2f3 100644 --- a/x-pack/test/cloud_security_posture_functional/pages/findings.ts +++ b/x-pack/test/cloud_security_posture_functional/pages/findings.ts @@ -95,7 +95,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const ruleName1 = data[0].rule.name; const ruleName2 = data[1].rule.name; - describe('Findings Page', function () { + describe('Findings Page - DataTable', function () { this.tags(['cloud_security_posture_findings']); let findings: typeof pageObjects.findings; let latestFindingsTable: typeof findings.latestFindingsTable; @@ -211,6 +211,14 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); }); + describe('DataTable features', () => { + it('Edit data view field option is Enabled', async () => { + await latestFindingsTable.toggleEditDataViewFieldsOption('result.evaluation'); + expect(await testSubjects.find('gridEditFieldButton')).to.be.ok(); + await latestFindingsTable.toggleEditDataViewFieldsOption('result.evaluation'); + }); + }); + describe('Findings - Fields selector', () => { const CSP_FIELDS_SELECTOR_MODAL = 'cloudSecurityFieldsSelectorModal'; const CSP_FIELDS_SELECTOR_OPEN_BUTTON = 'cloudSecurityFieldsSelectorOpenButton'; From dc813c351fe111c895e85a188372ad31625d8c8c Mon Sep 17 00:00:00 2001 From: Tim Sullivan Date: Tue, 2 Jan 2024 16:00:53 -0700 Subject: [PATCH 059/323] Handle content stream errors in report pre-deletion (#173792) Re-addresses https://github.com/elastic/kibana/issues/171363 The bug was still evident, especially when using network throttling to add slight lag to the request turnaround times. This PR adds more handling of errors that could be thrown slightly prior to deleting the report document, when we try to clear all chunks of the report using the content stream.
Before https://github.com/elastic/kibana/assets/908371/c27fe314-0f93-42b4-8076-99a1e30b8d2f
After https://github.com/elastic/kibana/assets/908371/4c1f5edd-73f1-4ca4-a40a-f900ca5f9c78
### Checklist - [x] Unit tests --- .../routes/common/jobs/get_job_routes.ts | 44 ++- .../management/integration_tests/jobs.test.ts | 262 ++++++++++-------- .../public/integration_tests/jobs.test.ts | 210 +++++++------- 3 files changed, 295 insertions(+), 221 deletions(-) diff --git a/x-pack/plugins/reporting/server/routes/common/jobs/get_job_routes.ts b/x-pack/plugins/reporting/server/routes/common/jobs/get_job_routes.ts index a88abae999be0..ca25b13990dc8 100644 --- a/x-pack/plugins/reporting/server/routes/common/jobs/get_job_routes.ts +++ b/x-pack/plugins/reporting/server/routes/common/jobs/get_job_routes.ts @@ -81,17 +81,43 @@ export const commonJobsRouteHandlerFactory = (reporting: ReportingCore) => { return jobManagementPreRouting(reporting, res, docId, user, counters, async (doc) => { const docIndex = doc.index; const stream = await getContentStream(reporting, { id: docId, index: docIndex }); - /** @note Overwriting existing content with an empty buffer to remove all the chunks. */ - await new Promise((resolve) => { - stream.end('', 'utf8', () => { - resolve(); - }); + const reportingSetup = reporting.getPluginSetupDeps(); + const logger = reportingSetup.logger.get('delete-report'); + + // An "error" event is emitted if an error is + // passed to the `stream.end` callback from + // the _final method of the ContentStream. + // This event must be handled. + stream.on('error', (err) => { + logger.error(err); }); - await jobsQuery.delete(docIndex, docId); - return res.ok({ - body: { deleted: true }, - }); + try { + // Overwriting existing content with an + // empty buffer to remove all the chunks. + await new Promise((resolve, reject) => { + stream.end('', 'utf8', (error?: Error) => { + if (error) { + // handle error that could be thrown + // from the _write method of the ContentStream + reject(error); + } else { + resolve(); + } + }); + }); + + await jobsQuery.delete(docIndex, docId); + + return res.ok({ + body: { deleted: true }, + }); + } catch (error) { + logger.error(error); + return res.customError({ + statusCode: 500, + }); + } }); }; diff --git a/x-pack/plugins/reporting/server/routes/internal/management/integration_tests/jobs.test.ts b/x-pack/plugins/reporting/server/routes/internal/management/integration_tests/jobs.test.ts index decc2300026e3..6fe086f33faa5 100644 --- a/x-pack/plugins/reporting/server/routes/internal/management/integration_tests/jobs.test.ts +++ b/x-pack/plugins/reporting/server/routes/internal/management/integration_tests/jobs.test.ts @@ -36,7 +36,7 @@ import { registerJobInfoRoutesInternal as registerJobInfoRoutes } from '../jobs' type SetupServerReturn = Awaited>; -describe(`GET ${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}`, () => { +describe(`Reporting Job Management Routes: Internal`, () => { const reportingSymbol = Symbol('reporting'); let server: SetupServerReturn['server']; let usageCounter: IUsageCounter; @@ -144,148 +144,148 @@ describe(`GET ${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}`, () => { await server.stop(); }); - it('fails on malformed download IDs', async () => { - mockEsClient.search.mockResponseOnce(getHits()); - registerJobInfoRoutes(core); + describe('download report', () => { + it('fails on malformed download IDs', async () => { + mockEsClient.search.mockResponseOnce(getHits()); + registerJobInfoRoutes(core); - await server.start(); + await server.start(); - await supertest(httpSetup.server.listener) - .get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/1`) - .expect(400) - .then(({ body }) => - expect(body.message).toMatchInlineSnapshot( - '"[request params.docId]: value has length [1] but it must have a minimum length of [3]."' - ) - ); - }); + await supertest(httpSetup.server.listener) + .get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/1`) + .expect(400) + .then(({ body }) => + expect(body.message).toMatchInlineSnapshot( + '"[request params.docId]: value has length [1] but it must have a minimum length of [3]."' + ) + ); + }); - it('fails on unauthenticated users', async () => { - mockStartDeps = await createMockPluginStart( - { - licensing: { - ...licensingMock.createStart(), - license$: new BehaviorSubject({ isActive: true, isAvailable: true, type: 'gold' }), + it('fails on unauthenticated users', async () => { + mockStartDeps = await createMockPluginStart( + { + licensing: { + ...licensingMock.createStart(), + license$: new BehaviorSubject({ isActive: true, isAvailable: true, type: 'gold' }), + }, + security: { authc: { getCurrentUser: () => undefined } }, }, - security: { authc: { getCurrentUser: () => undefined } }, - }, - mockConfigSchema - ); - core = await createMockReportingCore(mockConfigSchema, mockSetupDeps, mockStartDeps); - registerJobInfoRoutes(core); + mockConfigSchema + ); + core = await createMockReportingCore(mockConfigSchema, mockSetupDeps, mockStartDeps); + registerJobInfoRoutes(core); - await server.start(); + await server.start(); - await supertest(httpSetup.server.listener) - .get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/dope`) - .expect(401) - .then(({ body }) => - expect(body.message).toMatchInlineSnapshot(`"Sorry, you aren't authenticated"`) - ); - }); + await supertest(httpSetup.server.listener) + .get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/dope`) + .expect(401) + .then(({ body }) => + expect(body.message).toMatchInlineSnapshot(`"Sorry, you aren't authenticated"`) + ); + }); - it('returns 404 if job not found', async () => { - mockEsClient.search.mockResponseOnce(getHits()); - registerJobInfoRoutes(core); + it('returns 404 if job not found', async () => { + mockEsClient.search.mockResponseOnce(getHits()); + registerJobInfoRoutes(core); - await server.start(); + await server.start(); - await supertest(httpSetup.server.listener) - .get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/poo`) - .expect(404); - }); + await supertest(httpSetup.server.listener) + .get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/poo`) + .expect(404); + }); - it('returns a 403 if not a valid job type', async () => { - mockEsClient.search.mockResponseOnce( - getHits({ - jobtype: 'invalidJobType', - payload: { title: 'invalid!' }, - }) - ); - registerJobInfoRoutes(core); + it('returns a 403 if not a valid job type', async () => { + mockEsClient.search.mockResponseOnce( + getHits({ + jobtype: 'invalidJobType', + payload: { title: 'invalid!' }, + }) + ); + registerJobInfoRoutes(core); - await server.start(); + await server.start(); - await supertest(httpSetup.server.listener) - .get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/poo`) - .expect(403); - }); + await supertest(httpSetup.server.listener) + .get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/poo`) + .expect(403); + }); - it(`returns job's info`, async () => { - mockEsClient.search.mockResponseOnce( - getHits({ - jobtype: mockJobTypeBase64Encoded, - payload: {}, // payload is irrelevant - }) - ); + it(`returns job's info`, async () => { + mockEsClient.search.mockResponseOnce( + getHits({ + jobtype: mockJobTypeBase64Encoded, + payload: {}, // payload is irrelevant + }) + ); - registerJobInfoRoutes(core); + registerJobInfoRoutes(core); - await server.start(); + await server.start(); - await supertest(httpSetup.server.listener) - .get(`${INTERNAL_ROUTES.JOBS.INFO_PREFIX}/test`) - .expect(200); - }); + await supertest(httpSetup.server.listener) + .get(`${INTERNAL_ROUTES.JOBS.INFO_PREFIX}/test`) + .expect(200); + }); - it(`returns 403 if a user cannot view a job's info`, async () => { - mockEsClient.search.mockResponseOnce( - getHits({ - jobtype: 'customForbiddenJobType', - payload: {}, // payload is irrelevant - }) - ); + it(`returns 403 if a user cannot view a job's info`, async () => { + mockEsClient.search.mockResponseOnce( + getHits({ + jobtype: 'customForbiddenJobType', + payload: {}, // payload is irrelevant + }) + ); - registerJobInfoRoutes(core); + registerJobInfoRoutes(core); - await server.start(); + await server.start(); - await supertest(httpSetup.server.listener) - .get(`${INTERNAL_ROUTES.JOBS.INFO_PREFIX}/test`) - .expect(403); - }); + await supertest(httpSetup.server.listener) + .get(`${INTERNAL_ROUTES.JOBS.INFO_PREFIX}/test`) + .expect(403); + }); - it('when a job is incomplete', async () => { - mockEsClient.search.mockResponseOnce( - getHits({ - jobtype: mockJobTypeUnencoded, - status: 'pending', - payload: { title: 'incomplete!' }, - }) - ); - registerJobInfoRoutes(core); - - await server.start(); - await supertest(httpSetup.server.listener) - .get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`) - .expect(503) - .expect('Content-Type', 'text/plain; charset=utf-8') - .expect('Retry-After', '30') - .then(({ text }) => expect(text).toEqual('pending')); - }); + it('when a job is incomplete', async () => { + mockEsClient.search.mockResponseOnce( + getHits({ + jobtype: mockJobTypeUnencoded, + status: 'pending', + payload: { title: 'incomplete!' }, + }) + ); + registerJobInfoRoutes(core); - it('when a job fails', async () => { - mockEsClient.search.mockResponse( - getHits({ - jobtype: mockJobTypeUnencoded, - status: 'failed', - output: { content: 'job failure message' }, - payload: { title: 'failing job!' }, - }) - ); - registerJobInfoRoutes(core); - - await server.start(); - await supertest(httpSetup.server.listener) - .get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`) - .expect(500) - .expect('Content-Type', 'application/json; charset=utf-8') - .then(({ body }) => - expect(body.message).toEqual('Reporting generation failed: job failure message') + await server.start(); + await supertest(httpSetup.server.listener) + .get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`) + .expect(503) + .expect('Content-Type', 'text/plain; charset=utf-8') + .expect('Retry-After', '30') + .then(({ text }) => expect(text).toEqual('pending')); + }); + + it('when a job fails', async () => { + mockEsClient.search.mockResponse( + getHits({ + jobtype: mockJobTypeUnencoded, + status: 'failed', + output: { content: 'job failure message' }, + payload: { title: 'failing job!' }, + }) ); - }); + registerJobInfoRoutes(core); + + await server.start(); + await supertest(httpSetup.server.listener) + .get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`) + .expect(500) + .expect('Content-Type', 'application/json; charset=utf-8') + .then(({ body }) => + expect(body.message).toEqual('Reporting generation failed: job failure message') + ); + }); - describe('successful downloads', () => { it('when a known job-type is complete', async () => { mockEsClient.search.mockResponseOnce(getCompleteHits()); registerJobInfoRoutes(core); @@ -483,4 +483,28 @@ describe(`GET ${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}`, () => { }); }); }); + + describe('delete report', () => { + it('handles content stream errors', async () => { + stream = new Readable({ + read() { + this.push('test'); + this.push(null); + }, + }) as typeof stream; + stream.end = jest.fn().mockImplementation((_name, _encoding, callback) => { + callback(new Error('An error occurred in ending the content stream')); + }); + + (getContentStream as jest.MockedFunction).mockResolvedValue(stream); + mockEsClient.search.mockResponseOnce(getCompleteHits()); + registerJobInfoRoutes(core); + + await server.start(); + await supertest(httpSetup.server.listener) + .delete(`${INTERNAL_ROUTES.JOBS.DELETE_PREFIX}/dank`) + .expect(500) + .expect('Content-Type', 'application/json; charset=utf-8'); + }); + }); }); diff --git a/x-pack/plugins/reporting/server/routes/public/integration_tests/jobs.test.ts b/x-pack/plugins/reporting/server/routes/public/integration_tests/jobs.test.ts index b301b1546dabf..1d2ef78cf60e3 100644 --- a/x-pack/plugins/reporting/server/routes/public/integration_tests/jobs.test.ts +++ b/x-pack/plugins/reporting/server/routes/public/integration_tests/jobs.test.ts @@ -36,7 +36,7 @@ import { registerJobInfoRoutesPublic } from '../jobs'; type SetupServerReturn = Awaited>; -describe(`GET ${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}`, () => { +describe(`Reporting Job Management Routes: Public`, () => { const reportingSymbol = Symbol('reporting'); let server: SetupServerReturn['server']; let usageCounter: IUsageCounter; @@ -135,114 +135,114 @@ describe(`GET ${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}`, () => { await server.stop(); }); - it('fails on malformed download IDs', async () => { - mockEsClient.search.mockResponseOnce(getHits()); - registerJobInfoRoutesPublic(core); + describe('download report', () => { + it('fails on malformed download IDs', async () => { + mockEsClient.search.mockResponseOnce(getHits()); + registerJobInfoRoutesPublic(core); - await server.start(); + await server.start(); - await supertest(httpSetup.server.listener) - .get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/1`) - .expect(400) - .then(({ body }) => - expect(body.message).toMatchInlineSnapshot( - '"[request params.docId]: value has length [1] but it must have a minimum length of [3]."' - ) - ); - }); + await supertest(httpSetup.server.listener) + .get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/1`) + .expect(400) + .then(({ body }) => + expect(body.message).toMatchInlineSnapshot( + '"[request params.docId]: value has length [1] but it must have a minimum length of [3]."' + ) + ); + }); - it('fails on unauthenticated users', async () => { - mockStartDeps = await createMockPluginStart( - { - licensing: { - ...licensingMock.createStart(), - license$: new BehaviorSubject({ isActive: true, isAvailable: true, type: 'gold' }), + it('fails on unauthenticated users', async () => { + mockStartDeps = await createMockPluginStart( + { + licensing: { + ...licensingMock.createStart(), + license$: new BehaviorSubject({ isActive: true, isAvailable: true, type: 'gold' }), + }, + security: { authc: { getCurrentUser: () => undefined } }, }, - security: { authc: { getCurrentUser: () => undefined } }, - }, - mockConfigSchema - ); - core = await createMockReportingCore(mockConfigSchema, mockSetupDeps, mockStartDeps); - registerJobInfoRoutesPublic(core); + mockConfigSchema + ); + core = await createMockReportingCore(mockConfigSchema, mockSetupDeps, mockStartDeps); + registerJobInfoRoutesPublic(core); - await server.start(); + await server.start(); - await supertest(httpSetup.server.listener) - .get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/dope`) - .expect(401) - .then(({ body }) => - expect(body.message).toMatchInlineSnapshot(`"Sorry, you aren't authenticated"`) - ); - }); + await supertest(httpSetup.server.listener) + .get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/dope`) + .expect(401) + .then(({ body }) => + expect(body.message).toMatchInlineSnapshot(`"Sorry, you aren't authenticated"`) + ); + }); + + it('returns 404 if job not found', async () => { + mockEsClient.search.mockResponseOnce(getHits()); + registerJobInfoRoutesPublic(core); - it('returns 404 if job not found', async () => { - mockEsClient.search.mockResponseOnce(getHits()); - registerJobInfoRoutesPublic(core); + await server.start(); - await server.start(); + await supertest(httpSetup.server.listener) + .get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/poo`) + .expect(404); + }); - await supertest(httpSetup.server.listener) - .get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/poo`) - .expect(404); - }); + it('returns a 403 if not a valid job type', async () => { + mockEsClient.search.mockResponseOnce( + getHits({ + jobtype: 'invalidJobType', + payload: { title: 'invalid!' }, + }) + ); + registerJobInfoRoutesPublic(core); - it('returns a 403 if not a valid job type', async () => { - mockEsClient.search.mockResponseOnce( - getHits({ - jobtype: 'invalidJobType', - payload: { title: 'invalid!' }, - }) - ); - registerJobInfoRoutesPublic(core); + await server.start(); - await server.start(); + await supertest(httpSetup.server.listener) + .get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/poo`) + .expect(403); + }); - await supertest(httpSetup.server.listener) - .get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/poo`) - .expect(403); - }); + it('when a job is incomplete', async () => { + mockEsClient.search.mockResponseOnce( + getHits({ + jobtype: 'unencodedJobType', + status: 'pending', + payload: { title: 'incomplete!' }, + }) + ); + registerJobInfoRoutesPublic(core); - it('when a job is incomplete', async () => { - mockEsClient.search.mockResponseOnce( - getHits({ - jobtype: 'unencodedJobType', - status: 'pending', - payload: { title: 'incomplete!' }, - }) - ); - registerJobInfoRoutesPublic(core); - - await server.start(); - await supertest(httpSetup.server.listener) - .get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`) - .expect(503) - .expect('Content-Type', 'text/plain; charset=utf-8') - .expect('Retry-After', '30') - .then(({ text }) => expect(text).toEqual('pending')); - }); + await server.start(); + await supertest(httpSetup.server.listener) + .get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`) + .expect(503) + .expect('Content-Type', 'text/plain; charset=utf-8') + .expect('Retry-After', '30') + .then(({ text }) => expect(text).toEqual('pending')); + }); - it('when a job fails', async () => { - mockEsClient.search.mockResponse( - getHits({ - jobtype: 'unencodedJobType', - status: 'failed', - output: { content: 'job failure message' }, - payload: { title: 'failing job!' }, - }) - ); - registerJobInfoRoutesPublic(core); - - await server.start(); - await supertest(httpSetup.server.listener) - .get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`) - .expect(500) - .expect('Content-Type', 'application/json; charset=utf-8') - .then(({ body }) => - expect(body.message).toEqual('Reporting generation failed: job failure message') + it('when a job fails', async () => { + mockEsClient.search.mockResponse( + getHits({ + jobtype: 'unencodedJobType', + status: 'failed', + output: { content: 'job failure message' }, + payload: { title: 'failing job!' }, + }) ); - }); + registerJobInfoRoutesPublic(core); + + await server.start(); + await supertest(httpSetup.server.listener) + .get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`) + .expect(500) + .expect('Content-Type', 'application/json; charset=utf-8') + .then(({ body }) => + expect(body.message).toEqual('Reporting generation failed: job failure message') + ); + }); - describe('successful downloads', () => { it('when a known job-type is complete', async () => { mockEsClient.search.mockResponseOnce(getCompleteHits()); registerJobInfoRoutesPublic(core); @@ -292,4 +292,28 @@ describe(`GET ${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}`, () => { }); }); }); + + describe('delete report', () => { + it('handles content stream errors', async () => { + stream = new Readable({ + read() { + this.push('test'); + this.push(null); + }, + }) as typeof stream; + stream.end = jest.fn().mockImplementation((_name, _encoding, callback) => { + callback(new Error('An error occurred in ending the content stream')); + }); + + (getContentStream as jest.MockedFunction).mockResolvedValue(stream); + mockEsClient.search.mockResponseOnce(getCompleteHits()); + registerJobInfoRoutesPublic(core); + + await server.start(); + await supertest(httpSetup.server.listener) + .delete('/api/reporting/jobs/delete/denk') + .expect(500) + .expect('Content-Type', 'application/json; charset=utf-8'); + }); + }); }); From 523f28d7939af8e5b617f63a6bb45b50f3d0f998 Mon Sep 17 00:00:00 2001 From: Jon Date: Tue, 2 Jan 2024 23:22:22 -0600 Subject: [PATCH 060/323] Update babel runtime helpers (#171745) --- packages/kbn-ui-shared-deps-npm/webpack.config.js | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/packages/kbn-ui-shared-deps-npm/webpack.config.js b/packages/kbn-ui-shared-deps-npm/webpack.config.js index 627a1747c0b2d..7576ba9e145d9 100644 --- a/packages/kbn-ui-shared-deps-npm/webpack.config.js +++ b/packages/kbn-ui-shared-deps-npm/webpack.config.js @@ -49,28 +49,13 @@ module.exports = (_, argv) => { * node scripts/find_babel_runtime_helpers_in_use.js */ '@babel/runtime/helpers/assertThisInitialized', - '@babel/runtime/helpers/asyncToGenerator', - '@babel/runtime/helpers/classCallCheck', '@babel/runtime/helpers/classPrivateFieldGet', '@babel/runtime/helpers/classPrivateFieldSet', - '@babel/runtime/helpers/createClass', - '@babel/runtime/helpers/createForOfIteratorHelper', - '@babel/runtime/helpers/createSuper', '@babel/runtime/helpers/defineProperty', '@babel/runtime/helpers/extends', - '@babel/runtime/helpers/inherits', '@babel/runtime/helpers/inheritsLoose', - '@babel/runtime/helpers/interopRequireDefault', - '@babel/runtime/helpers/interopRequireWildcard', - '@babel/runtime/helpers/objectSpread2', - '@babel/runtime/helpers/objectWithoutProperties', - '@babel/runtime/helpers/objectWithoutPropertiesLoose', - '@babel/runtime/helpers/slicedToArray', '@babel/runtime/helpers/taggedTemplateLiteralLoose', - '@babel/runtime/helpers/toConsumableArray', - '@babel/runtime/helpers/typeof', '@babel/runtime/helpers/wrapNativeSuper', - '@babel/runtime/regenerator', // modules from npm '@elastic/charts', From 05487a171b705d90d771b7b178863ed681cf48d4 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Wed, 3 Jan 2024 00:55:00 -0500 Subject: [PATCH 061/323] [api-docs] 2024-01-03 Daily api_docs build (#174142) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/571 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- .../ai_assistant_management_observability.mdx | 2 +- .../ai_assistant_management_selection.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/apm_data_access.mdx | 2 +- api_docs/asset_manager.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_experiments.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/dataset_quality.mdx | 2 +- api_docs/deprecations_by_api.mdx | 2 +- api_docs/deprecations_by_plugin.mdx | 2 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/elastic_assistant.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_annotation_listing.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_actions_types.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- .../kbn_alerting_api_integration_helpers.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerting_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- api_docs/kbn_analytics_collection_utils.mdx | 2 +- ..._analytics_shippers_elastic_v3_browser.mdx | 2 +- ...n_analytics_shippers_elastic_v3_common.mdx | 2 +- ...n_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_analytics_shippers_gainsight.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_bfetch_error.mdx | 2 +- api_docs/kbn_calculate_auto.mdx | 2 +- .../kbn_calculate_width_from_char_count.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_owners.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- .../kbn_content_management_content_editor.mdx | 2 +- ...tent_management_tabbed_table_list_view.mdx | 2 +- ...kbn_content_management_table_list_view.mdx | 2 +- ...tent_management_table_list_view_common.mdx | 2 +- ...ntent_management_table_list_view_table.mdx | 2 +- api_docs/kbn_content_management_utils.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- .../kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- .../kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- .../kbn_core_application_browser_internal.mdx | 2 +- .../kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- .../kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- .../kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- ..._core_custom_branding_browser_internal.mdx | 2 +- ...kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- ...n_core_custom_branding_server_internal.mdx | 2 +- .../kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- ...kbn_core_deprecations_browser_internal.mdx | 2 +- .../kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- .../kbn_core_deprecations_server_internal.mdx | 2 +- .../kbn_core_deprecations_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- ...e_elasticsearch_client_server_internal.mdx | 2 +- ...core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- ...kbn_core_elasticsearch_server_internal.mdx | 2 +- .../kbn_core_elasticsearch_server_mocks.mdx | 2 +- .../kbn_core_environment_server_internal.mdx | 2 +- .../kbn_core_environment_server_mocks.mdx | 2 +- .../kbn_core_execution_context_browser.mdx | 2 +- ...ore_execution_context_browser_internal.mdx | 2 +- ...n_core_execution_context_browser_mocks.mdx | 2 +- .../kbn_core_execution_context_common.mdx | 2 +- .../kbn_core_execution_context_server.mdx | 2 +- ...core_execution_context_server_internal.mdx | 2 +- ...bn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- .../kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- .../kbn_core_http_context_server_mocks.mdx | 2 +- ...re_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- ...bn_core_http_resources_server_internal.mdx | 2 +- .../kbn_core_http_resources_server_mocks.mdx | 2 +- .../kbn_core_http_router_server_internal.mdx | 2 +- .../kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- ...kbn_core_integrations_browser_internal.mdx | 2 +- .../kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- ...ore_metrics_collectors_server_internal.mdx | 2 +- ...n_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- ...bn_core_notifications_browser_internal.mdx | 2 +- .../kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- .../kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- .../kbn_core_plugins_contracts_browser.mdx | 2 +- .../kbn_core_plugins_contracts_server.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- .../kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- .../kbn_core_saved_objects_api_browser.mdx | 2 +- .../kbn_core_saved_objects_api_server.mdx | 2 +- ...bn_core_saved_objects_api_server_mocks.mdx | 2 +- ...ore_saved_objects_base_server_internal.mdx | 2 +- ...n_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- ...bn_core_saved_objects_browser_internal.mdx | 2 +- .../kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- ..._objects_import_export_server_internal.mdx | 2 +- ...ved_objects_import_export_server_mocks.mdx | 2 +- ...aved_objects_migration_server_internal.mdx | 2 +- ...e_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- ...kbn_core_saved_objects_server_internal.mdx | 2 +- .../kbn_core_saved_objects_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- ...core_test_helpers_deprecations_getters.mdx | 2 +- ...n_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- .../kbn_core_test_helpers_model_versions.mdx | 2 +- ...n_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- .../kbn_core_ui_settings_browser_internal.mdx | 2 +- .../kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- .../kbn_core_ui_settings_server_internal.mdx | 2 +- .../kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- .../kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- ...kbn_core_user_settings_server_internal.mdx | 2 +- .../kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_custom_icons.mdx | 2 +- api_docs/kbn_custom_integrations.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_data_service.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_discover_utils.mdx | 2 +- api_docs/kbn_doc_links.devdocs.json | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_agent_utils.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_elastic_assistant_common.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_event_annotation_common.mdx | 2 +- api_docs/kbn_event_annotation_components.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_field_utils.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- .../kbn_ftr_common_functional_services.mdx | 2 +- .../kbn_ftr_common_functional_ui_services.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- .../kbn_language_documentation_popover.mdx | 2 +- api_docs/kbn_lens_embeddable_utils.mdx | 2 +- api_docs/kbn_lens_formula_docs.devdocs.json | 2298 +++++++++++++++++ api_docs/kbn_lens_formula_docs.mdx | 36 + api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_management_cards_navigation.mdx | 2 +- .../kbn_management_settings_application.mdx | 2 +- ...ent_settings_components_field_category.mdx | 2 +- ...gement_settings_components_field_input.mdx | 2 +- ...nagement_settings_components_field_row.mdx | 2 +- ...bn_management_settings_components_form.mdx | 2 +- ...n_management_settings_field_definition.mdx | 2 +- api_docs/kbn_management_settings_ids.mdx | 2 +- ...n_management_settings_section_registry.mdx | 2 +- api_docs/kbn_management_settings_types.mdx | 2 +- .../kbn_management_settings_utilities.mdx | 2 +- api_docs/kbn_management_storybook_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_category_validator.mdx | 2 +- api_docs/kbn_ml_chi2test.mdx | 2 +- .../kbn_ml_data_frame_analytics_utils.mdx | 2 +- api_docs/kbn_ml_data_grid.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_date_utils.mdx | 2 +- api_docs/kbn_ml_error_utils.mdx | 2 +- api_docs/kbn_ml_in_memory_table.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_kibana_theme.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_ui_actions.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- .../kbn_observability_alerting_test_data.mdx | 2 +- ...ility_get_padded_alert_time_range_util.mdx | 2 +- api_docs/kbn_openapi_bundler.mdx | 2 +- api_docs/kbn_openapi_generator.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- api_docs/kbn_panel_loader.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_profiling_utils.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_react_kibana_context_common.mdx | 2 +- api_docs/kbn_react_kibana_context_render.mdx | 2 +- api_docs/kbn_react_kibana_context_root.mdx | 2 +- api_docs/kbn_react_kibana_context_styled.mdx | 2 +- api_docs/kbn_react_kibana_context_theme.mdx | 2 +- api_docs/kbn_react_kibana_mount.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_reporting_common.mdx | 2 +- api_docs/kbn_reporting_export_types_csv.mdx | 2 +- .../kbn_reporting_export_types_csv_common.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf.mdx | 2 +- .../kbn_reporting_export_types_pdf_common.mdx | 2 +- api_docs/kbn_reporting_export_types_png.mdx | 2 +- .../kbn_reporting_export_types_png_common.mdx | 2 +- api_docs/kbn_reporting_mocks_server.mdx | 2 +- api_docs/kbn_reporting_public.mdx | 2 +- api_docs/kbn_reporting_server.mdx | 2 +- api_docs/kbn_resizable_layout.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_router_utils.mdx | 2 +- api_docs/kbn_rrule.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_search_api_panels.mdx | 2 +- api_docs/kbn_search_connectors.mdx | 2 +- api_docs/kbn_search_errors.mdx | 2 +- api_docs/kbn_search_index_documents.mdx | 2 +- api_docs/kbn_search_response_warnings.mdx | 2 +- api_docs/kbn_security_plugin_types_common.mdx | 2 +- api_docs/kbn_security_plugin_types_public.mdx | 2 +- api_docs/kbn_security_plugin_types_server.mdx | 2 +- api_docs/kbn_security_solution_features.mdx | 2 +- api_docs/kbn_security_solution_navigation.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- ...kbn_security_solution_storybook_config.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- ...ritysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_grouping.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- ..._securitysolution_io_ts_alerting_types.mdx | 2 +- .../kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- .../kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_serverless_common_settings.mdx | 2 +- .../kbn_serverless_observability_settings.mdx | 2 +- api_docs/kbn_serverless_project_switcher.mdx | 2 +- api_docs/kbn_serverless_search_settings.mdx | 2 +- api_docs/kbn_serverless_security_settings.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- .../kbn_shared_ux_button_exit_full_screen.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_chrome_navigation.mdx | 2 +- api_docs/kbn_shared_ux_error_boundary.mdx | 2 +- api_docs/kbn_shared_ux_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- .../kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- .../kbn_shared_ux_page_analytics_no_data.mdx | 2 +- ...shared_ux_page_analytics_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_no_data.mdx | 2 +- ...bn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_template.mdx | 2 +- ...n_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- .../kbn_shared_ux_page_no_data_config.mdx | 2 +- ...bn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- .../kbn_shared_ux_prompt_no_data_views.mdx | 2 +- ...n_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_text_based_editor.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_triggers_actions_ui_types.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_unified_data_table.mdx | 2 +- api_docs/kbn_unified_doc_viewer.mdx | 2 +- api_docs/kbn_unified_field_list.mdx | 2 +- api_docs/kbn_unsaved_changes_badge.mdx | 2 +- api_docs/kbn_url_state.mdx | 2 +- api_docs/kbn_use_tracked_promise.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kbn_visualization_ui_components.mdx | 2 +- api_docs/kbn_visualization_utils.mdx | 2 +- api_docs/kbn_xstate_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kbn_zod_helpers.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.devdocs.json | 51 - api_docs/kibana_utils.mdx | 7 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/links.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/log_explorer.mdx | 2 +- api_docs/logs_shared.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/metrics_data_access.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/mock_idp_plugin.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/no_data_page.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.mdx | 2 +- .../observability_a_i_assistant.devdocs.json | 20 +- api_docs/observability_a_i_assistant.mdx | 2 +- api_docs/observability_log_explorer.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/painless_lab.mdx | 2 +- api_docs/plugin_directory.mdx | 9 +- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/profiling_data_access.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.devdocs.json | 14 +- api_docs/security_solution.mdx | 2 +- api_docs/security_solution_ess.mdx | 2 +- api_docs/security_solution_serverless.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/text_based_languages.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_doc_viewer.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/uptime.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 641 files changed, 2992 insertions(+), 711 deletions(-) create mode 100644 api_docs/kbn_lens_formula_docs.devdocs.json create mode 100644 api_docs/kbn_lens_formula_docs.mdx diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 44b65cb668c76..281a4e1348185 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2024-01-01 +date: 2024-01-03 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 472349c4f9a59..3648f99ea4831 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_observability.mdx b/api_docs/ai_assistant_management_observability.mdx index c18fb87386cbc..d3331b027d951 100644 --- a/api_docs/ai_assistant_management_observability.mdx +++ b/api_docs/ai_assistant_management_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementObservability title: "aiAssistantManagementObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementObservability plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementObservability'] --- import aiAssistantManagementObservabilityObj from './ai_assistant_management_observability.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index 2ebc63b443a52..163f5204f7e78 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 2fde10fac8aca..75b3c06d42d6b 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index afa2173382f15..89309bed8376f 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 1f309bdfa527e..b380c619d5e67 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index 71239fda07db8..79422355cd46e 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index b1eb5f3e63e6d..7aace57deee4f 100644 --- a/api_docs/asset_manager.mdx +++ b/api_docs/asset_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetManager title: "assetManager" image: https://source.unsplash.com/400x175/?github description: API docs for the assetManager plugin -date: 2024-01-01 +date: 2024-01-03 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 084c1b951a320..4fd665cd9b20a 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2024-01-01 +date: 2024-01-03 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 34bfde19da4fa..433f90a1053b0 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github description: API docs for the bfetch plugin -date: 2024-01-01 +date: 2024-01-03 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 a4d90fbfdc203..89ab8a4a91808 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 362a075d64092..45c579f7fdd87 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 8888fe9db27f0..6d413558acb67 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2024-01-01 +date: 2024-01-03 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 395ef8190e716..2b09b8b7f4692 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index 1be1bf5e2c423..09c76a68af874 100644 --- a/api_docs/cloud_data_migration.mdx +++ b/api_docs/cloud_data_migration.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration title: "cloudDataMigration" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDataMigration plugin -date: 2024-01-01 +date: 2024-01-03 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 717df98be3a62..dd178b545e280 100644 --- a/api_docs/cloud_defend.mdx +++ b/api_docs/cloud_defend.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend title: "cloudDefend" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDefend plugin -date: 2024-01-01 +date: 2024-01-03 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 4cce03a63dbc8..3145d19a29f5e 100644 --- a/api_docs/cloud_experiments.mdx +++ b/api_docs/cloud_experiments.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments title: "cloudExperiments" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudExperiments plugin -date: 2024-01-01 +date: 2024-01-03 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 150c90f8a3214..37b3e4d8903c1 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2024-01-01 +date: 2024-01-03 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 29052826af95d..1be971ab4f9d9 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2024-01-01 +date: 2024-01-03 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 6e31939b25689..f6f169a648d3b 100644 --- a/api_docs/content_management.mdx +++ b/api_docs/content_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement title: "contentManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the contentManagement plugin -date: 2024-01-01 +date: 2024-01-03 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 8977ba2fa8cdf..de441c85f5298 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2024-01-01 +date: 2024-01-03 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 a36eb829931ec..6cbf150bab20b 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2024-01-01 +date: 2024-01-03 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 22f2e1328a343..d0022ed7d4937 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2024-01-01 +date: 2024-01-03 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 4c2ea101fff3a..98fcf5ca3a078 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 6762330ceb80c..9d1902cbc0db8 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 066431cf2625c..6c126a001865f 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 58e5d6167fa77..ac0e8a0add0a5 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index d308ab1a8498f..0f6f82176a98f 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2024-01-01 +date: 2024-01-03 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 22e56146a7dce..776605a08a29a 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2024-01-01 +date: 2024-01-03 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 f84ec5456c6a6..8213fc9c72b7e 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index bc211ae7176c1..e9fe566a53bd3 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index eef2c179cc9d2..e6219e5675d7d 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index 2d597fac62571..44a4654eb5e2e 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index ba428c739fbe0..ef17fb470eee4 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index fa51c84a7c066..2648ec6df8172 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index bcc3c1a02350b..765dc2a38f65c 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index f770028a7d19f..6a4bc5a428642 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2024-01-01 +date: 2024-01-03 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 1ffa11617e90f..8f9a0054a494f 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2024-01-01 +date: 2024-01-03 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 8336d9b1375c8..6cd00b2a94c00 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2024-01-01 +date: 2024-01-03 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 9b84e69f252ee..83f31d4fa967d 100644 --- a/api_docs/ecs_data_quality_dashboard.mdx +++ b/api_docs/ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard title: "ecsDataQualityDashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the ecsDataQualityDashboard plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index 0320c7c89a40f..0b2670a8873a2 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 816ba9a46f3a0..7aa3a7d6758ec 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 93c9faea9a449..321d251c575e3 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2024-01-01 +date: 2024-01-03 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 e4fc2b87763a8..9647227264dc0 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2024-01-01 +date: 2024-01-03 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 4644e1ffa51d2..13b7b18c900d2 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2024-01-01 +date: 2024-01-03 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 3d2af60bc443b..233eb29c2c756 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index c3daac75a6d7b..365f107bb7dfe 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index 674e4aae380dd..4b91172377f37 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 3b6716a6ee629..3fd5ddbcfaf58 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index 60f4261c69795..437aa907c5539 100644 --- a/api_docs/exploratory_view.mdx +++ b/api_docs/exploratory_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView title: "exploratoryView" image: https://source.unsplash.com/400x175/?github description: API docs for the exploratoryView plugin -date: 2024-01-01 +date: 2024-01-03 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 e6e3f0c244075..7b351931acbe1 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2024-01-01 +date: 2024-01-03 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 0e97b905fe45b..88cc7b5f39438 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 88b11ec2e350a..9cafdd4bfd20a 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2024-01-01 +date: 2024-01-03 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 639cecdcf137b..49d21cd89648f 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2024-01-01 +date: 2024-01-03 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 97cd25e3cfe64..2693102013cb8 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2024-01-01 +date: 2024-01-03 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 d48f81a084099..0094d6bded0f8 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2024-01-01 +date: 2024-01-03 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 b6ccb60e2c4ca..2ea41a3b7d7f5 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2024-01-01 +date: 2024-01-03 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 a74787875d28e..fd0055b84b469 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2024-01-01 +date: 2024-01-03 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 0d6a0165c1b6a..f24cf0f3fc50d 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2024-01-01 +date: 2024-01-03 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 e6fb2a0f68e3d..3ec151c84ff9d 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2024-01-01 +date: 2024-01-03 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 da475f0e01b8a..fe9166cafc00f 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2024-01-01 +date: 2024-01-03 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 a8780b75e3486..65c4039788709 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2024-01-01 +date: 2024-01-03 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 a62211163dda4..f51e647e6d816 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2024-01-01 +date: 2024-01-03 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 8561010fb158c..cbc90e0b5197e 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2024-01-01 +date: 2024-01-03 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 3e7ebb22a80c2..90433a5e9110e 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2024-01-01 +date: 2024-01-03 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 197b4b93843f4..859c789455f15 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2024-01-01 +date: 2024-01-03 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 87e4128d853e1..57bff5b1b69c8 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index e6ce2650f73df..66fc660112973 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2024-01-01 +date: 2024-01-03 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 cfe8d9cdbc281..53660e5ab6727 100644 --- a/api_docs/files_management.mdx +++ b/api_docs/files_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement title: "filesManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the filesManagement plugin -date: 2024-01-01 +date: 2024-01-03 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 3950fbb4c20ef..d581b113fb519 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2024-01-01 +date: 2024-01-03 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 2148851edac90..898af943a8029 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2024-01-01 +date: 2024-01-03 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 30717f38627b7..c3edd4dbe4079 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2024-01-01 +date: 2024-01-03 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 c9074ad9b0ee6..0ce444c73b495 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2024-01-01 +date: 2024-01-03 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 f5f63aac9382a..6fe87e2bd16ce 100644 --- a/api_docs/image_embeddable.mdx +++ b/api_docs/image_embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable title: "imageEmbeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the imageEmbeddable plugin -date: 2024-01-01 +date: 2024-01-03 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 154c43dd3fd69..f35ddb73641a7 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexLifecycleManagement plugin -date: 2024-01-01 +date: 2024-01-03 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 8e09ef2331adc..bdb4ea347757d 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2024-01-01 +date: 2024-01-03 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 0f6942c037620..78449bd7a1927 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2024-01-01 +date: 2024-01-03 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 5b2c265a101b6..94bcac34fe032 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2024-01-01 +date: 2024-01-03 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 8f2615ea4e192..53d6e671698bb 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2024-01-01 +date: 2024-01-03 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 fb54835384cba..e6bd17a2da1bc 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ace plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index b660b44ed5337..be5ddfeece0d6 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index fa51a2cd3e6a0..957ed4277ea4c 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 612f62b6e66ea..fce03996d1fd3 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-utils plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index c978d826e174f..4a329e2ad5eaa 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 4a20e9fbbbe33..625f69b41f813 100644 --- a/api_docs/kbn_alerting_state_types.mdx +++ b/api_docs/kbn_alerting_state_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types title: "@kbn/alerting-state-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-state-types plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index bcb6801834f13..9df1a5e0eba48 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 761ae51ec5267..d3cdedd416f89 100644 --- a/api_docs/kbn_alerts_as_data_utils.mdx +++ b/api_docs/kbn_alerts_as_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils title: "@kbn/alerts-as-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-as-data-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 15e34bcf13e8d..6c0b274a863b0 100644 --- a/api_docs/kbn_alerts_ui_shared.mdx +++ b/api_docs/kbn_alerts_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared title: "@kbn/alerts-ui-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-ui-shared plugin -date: 2024-01-01 +date: 2024-01-03 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 fd172ef0a5eaa..33bb144d96e85 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 7be989318dbc9..136e3802b11aa 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-client plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index 9ed60d111e587..b415312f60bd2 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index a6bb58bcffd9a..c96ba8475c350 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser title: "@kbn/analytics-shippers-elastic-v3-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 2531829d684e8..8f19d26485744 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common title: "@kbn/analytics-shippers-elastic-v3-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2024-01-01 +date: 2024-01-03 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 3cd02ec3d19c9..b5773b652cbf3 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server title: "@kbn/analytics-shippers-elastic-v3-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2024-01-01 +date: 2024-01-03 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 e63eebc283895..7f28e363b0a88 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2024-01-01 +date: 2024-01-03 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 5ce05a3aeb655..2a65f9c6ef18e 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: 2024-01-01 +date: 2024-01-03 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 f2a9413fe1de6..eaa5699ba4e85 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2024-01-01 +date: 2024-01-03 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 c1bbdec645d95..f30c027fd5da3 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2024-01-01 +date: 2024-01-03 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 55698a3afd1a7..dd7ac7b7ac758 100644 --- a/api_docs/kbn_apm_synthtrace_client.mdx +++ b/api_docs/kbn_apm_synthtrace_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client title: "@kbn/apm-synthtrace-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace-client plugin -date: 2024-01-01 +date: 2024-01-03 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 58f5c55233bc3..fecd230bae721 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 98579281269a5..76b68d7e8a8ab 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_bfetch_error.mdx b/api_docs/kbn_bfetch_error.mdx index 1e30c0fa5012c..60870f01959fa 100644 --- a/api_docs/kbn_bfetch_error.mdx +++ b/api_docs/kbn_bfetch_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-bfetch-error title: "@kbn/bfetch-error" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/bfetch-error plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bfetch-error'] --- import kbnBfetchErrorObj from './kbn_bfetch_error.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index 5869871313098..a125de923f214 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index 158376a9b8fcb..8b10cb871b976 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 96e999aa4e140..59d5bdd4b056e 100644 --- a/api_docs/kbn_cases_components.mdx +++ b/api_docs/kbn_cases_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components title: "@kbn/cases-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cases-components plugin -date: 2024-01-01 +date: 2024-01-03 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 0e59be34fffa8..c32de33ae36d2 100644 --- a/api_docs/kbn_cell_actions.mdx +++ b/api_docs/kbn_cell_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions title: "@kbn/cell-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cell-actions plugin -date: 2024-01-01 +date: 2024-01-03 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 ad267fce50788..def9203b5df07 100644 --- a/api_docs/kbn_chart_expressions_common.mdx +++ b/api_docs/kbn_chart_expressions_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common title: "@kbn/chart-expressions-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-expressions-common plugin -date: 2024-01-01 +date: 2024-01-03 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 08d9e4fd83b08..380dfe6305806 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2024-01-01 +date: 2024-01-03 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 7a9ac1653151e..5a5b23f29794c 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2024-01-01 +date: 2024-01-03 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 6b094e0e454ff..50d5f231553e9 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2024-01-01 +date: 2024-01-03 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 fb2a0477fd6ba..4578b10c12a3c 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2024-01-01 +date: 2024-01-03 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 85c419833e342..d63fd39ae8920 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2024-01-01 +date: 2024-01-03 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 b41d5b251b917..f3c88feafb8fb 100644 --- a/api_docs/kbn_code_editor.mdx +++ b/api_docs/kbn_code_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor title: "@kbn/code-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index 013cf12485d41..27900a811c078 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 0c637a259bbf4..cc7ae2a291ac3 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2024-01-01 +date: 2024-01-03 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 c5854b5f996a6..e088532380eef 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2024-01-01 +date: 2024-01-03 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 9c21a33499c1e..0d9234edd43d2 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 a81742386804b..27978886440f5 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2024-01-01 +date: 2024-01-03 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 b03f8a33c81e1..52168398d455e 100644 --- a/api_docs/kbn_content_management_content_editor.mdx +++ b/api_docs/kbn_content_management_content_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor title: "@kbn/content-management-content-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-editor plugin -date: 2024-01-01 +date: 2024-01-03 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 b152fbdd7f585..2f86930f47883 100644 --- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx +++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view title: "@kbn/content-management-tabbed-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-tabbed-table-list-view plugin -date: 2024-01-01 +date: 2024-01-03 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 2e20854e22426..ca1ef88a1a84f 100644 --- a/api_docs/kbn_content_management_table_list_view.mdx +++ b/api_docs/kbn_content_management_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view title: "@kbn/content-management-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index b107dc4f91365..954c6639e5880 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index 3052b6e44d471..1d98bfb99c974 100644 --- a/api_docs/kbn_content_management_table_list_view_table.mdx +++ b/api_docs/kbn_content_management_table_list_view_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table title: "@kbn/content-management-table-list-view-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-table plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index dd9fa0f403c58..f8ff902603871 100644 --- a/api_docs/kbn_content_management_utils.mdx +++ b/api_docs/kbn_content_management_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils title: "@kbn/content-management-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-utils plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 8b6694a164ec6..fb67afa9f68f9 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 805d4c9e1942a..084a2064caa70 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 af1287e0c85d2..2c296064cc413 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 992d440a6c59b..820b9b50a857e 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2024-01-01 +date: 2024-01-03 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 c6a4487152e32..ed9ddf9ba7278 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 01f19ee413d71..8895890bbda27 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 9bf7b8ded9833..69e7a953b57cb 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 7a6a941469f21..dc8042fc624b2 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 a06a08aba07aa..010704177b189 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 3a6cea726b0eb..ce9452d1b6d25 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2024-01-01 +date: 2024-01-03 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 3cb39454e881a..8dd653db6a14a 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 ea29a4e613180..b7a5f1b773856 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 a0e33c2c0eea9..62693c356c349 100644 --- a/api_docs/kbn_core_apps_server_internal.mdx +++ b/api_docs/kbn_core_apps_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal title: "@kbn/core-apps-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 8ce5e026a6b91..a2857301c2ee2 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 600561abc4bed..12d84e7534fb2 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2024-01-01 +date: 2024-01-03 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 d900211c183ef..a4315c041bc38 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 e0d48682bbc79..1f46f664c85d7 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 2fb1534e72ffc..93ee246b6daed 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 3f011fd2f8701..e93970c01e89f 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2024-01-01 +date: 2024-01-03 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 ea8dec5dae69b..18b16da16a429 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2024-01-01 +date: 2024-01-03 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 811f706b309fe..2a9a67281fd56 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 b0ba3decac8d2..d48b8db85e8b8 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 e965523a89479..a501da2a419de 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 00dcb486c38fb..e21bed9178568 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 f1c78abadafd6..b3ffb68bfc9a3 100644 --- a/api_docs/kbn_core_custom_branding_browser.mdx +++ b/api_docs/kbn_core_custom_branding_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser title: "@kbn/core-custom-branding-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 679617c8875a1..11f476d661dc6 100644 --- a/api_docs/kbn_core_custom_branding_browser_internal.mdx +++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal title: "@kbn/core-custom-branding-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 8c57a8a4111b9..c31ef8466be22 100644 --- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks title: "@kbn/core-custom-branding-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 e91ccf58c1354..7b46e4bda2bdd 100644 --- a/api_docs/kbn_core_custom_branding_common.mdx +++ b/api_docs/kbn_core_custom_branding_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common title: "@kbn/core-custom-branding-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-common plugin -date: 2024-01-01 +date: 2024-01-03 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 64b91a9ab767e..2ac5f5a0f3f99 100644 --- a/api_docs/kbn_core_custom_branding_server.mdx +++ b/api_docs/kbn_core_custom_branding_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server title: "@kbn/core-custom-branding-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server plugin -date: 2024-01-01 +date: 2024-01-03 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 4e430e6cdc8ef..2975a2dd8f608 100644 --- a/api_docs/kbn_core_custom_branding_server_internal.mdx +++ b/api_docs/kbn_core_custom_branding_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal title: "@kbn/core-custom-branding-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 3a73499e187c8..408a458442a2c 100644 --- a/api_docs/kbn_core_custom_branding_server_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks title: "@kbn/core-custom-branding-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 948c657a21b87..d0d0dc5db65cc 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 8f6202422b145..eb3d82b08be26 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 fff0345b18e9a..3454f526a4658 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 ebb10427b37b2..745db2ae5330c 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2024-01-01 +date: 2024-01-03 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 eb3122e46918b..6ef3177e1992b 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2024-01-01 +date: 2024-01-03 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 3d6742171b38b..c0399a7f4d096 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 54149659a4490..09d119948c21a 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 bad65e24b6002..ac09858373c69 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 9cea11d81f1f5..26b8565018958 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 a60addb4ccd0b..4c4ad04ae1639 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2024-01-01 +date: 2024-01-03 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 b508e12255b0f..4c7257ac2ac36 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 b738d2413905a..fec986b99d1fd 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 b3badc09ee497..c6850b2c70007 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 9bd457faea556..346ca2d190bbf 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2024-01-01 +date: 2024-01-03 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 a6038899821c7..39479af5f1377 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 a59c2744497d9..d5d27043ce5c4 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 947d971357967..1b2e8908f0a0f 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 2c176a254d164..ce72221f86261 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 56831c7d1ea60..e11b99119989a 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 12302969dab51..5f2630e38c80c 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 e706cde3f46df..e1ed98c3c2126 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 cfae66dcb2b87..4749de418f516 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2024-01-01 +date: 2024-01-03 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 45a35f0c50587..65ef3da10669f 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2024-01-01 +date: 2024-01-03 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 feeed2ac86faf..9a70bce6e3102 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 909b22635ffc6..415460c1a58c7 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 e3e7684635901..84e518b002b46 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 d41c16370f0c0..c30e71484c941 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 9ff3dd564692b..af017fb002122 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 ec944e81fed31..82de69c4be7ea 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 a50d4c2fedb62..276d926365c69 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 9c66d4e036464..2fc031418675d 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2024-01-01 +date: 2024-01-03 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 23d4778cef4fd..ef4c144548594 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 f1561231834d9..e1c2cc8c7ae18 100644 --- a/api_docs/kbn_core_http_request_handler_context_server.mdx +++ b/api_docs/kbn_core_http_request_handler_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server title: "@kbn/core-http-request-handler-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-request-handler-context-server plugin -date: 2024-01-01 +date: 2024-01-03 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 1eba5cd513260..e8f02b23c9f33 100644 --- a/api_docs/kbn_core_http_resources_server.mdx +++ b/api_docs/kbn_core_http_resources_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server title: "@kbn/core-http-resources-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server plugin -date: 2024-01-01 +date: 2024-01-03 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 9aa3e7a01819e..43ed60b3ba322 100644 --- a/api_docs/kbn_core_http_resources_server_internal.mdx +++ b/api_docs/kbn_core_http_resources_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal title: "@kbn/core-http-resources-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 329bfea9fac5a..931293c715b06 100644 --- a/api_docs/kbn_core_http_resources_server_mocks.mdx +++ b/api_docs/kbn_core_http_resources_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks title: "@kbn/core-http-resources-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 0f2987ebb7cef..69a2492af2c24 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 3687cf6f13a5a..d5aa6a118e180 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 2790467d69261..4ab26d2d59bc6 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2024-01-01 +date: 2024-01-03 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 9a9986f0db800..1df81d16867d5 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 e28cb5856925d..263279611b441 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 f120048a7e696..514b6aa871ad0 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 2812dc24c4285..8093ac0446912 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 1eb7627f23d83..09aec2547a4ac 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2024-01-01 +date: 2024-01-03 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 271fb4abadca8..c7c33a5b6118e 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 0a22339645ca6..5fb00144b8c78 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 843218f78739d..dbc63a501a5fd 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 02b9fa9f92196..6ceb5a9662846 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 037c877a8dbf6..09c38f28a542b 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 49b43760eeebe..dd98257acd82e 100644 --- a/api_docs/kbn_core_lifecycle_browser.mdx +++ b/api_docs/kbn_core_lifecycle_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser title: "@kbn/core-lifecycle-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 d653062853d94..f3acecd69cd42 100644 --- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks title: "@kbn/core-lifecycle-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 3830d6898fd08..dea4a77a2b4de 100644 --- a/api_docs/kbn_core_lifecycle_server.mdx +++ b/api_docs/kbn_core_lifecycle_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server title: "@kbn/core-lifecycle-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server plugin -date: 2024-01-01 +date: 2024-01-03 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 ecd44a4af9ccc..c12bd0a09e3af 100644 --- a/api_docs/kbn_core_lifecycle_server_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks title: "@kbn/core-lifecycle-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 2e566559d55dd..40e5d02a8ad58 100644 --- a/api_docs/kbn_core_logging_browser_mocks.mdx +++ b/api_docs/kbn_core_logging_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks title: "@kbn/core-logging-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 949a047e27222..e8722874c4686 100644 --- a/api_docs/kbn_core_logging_common_internal.mdx +++ b/api_docs/kbn_core_logging_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal title: "@kbn/core-logging-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-common-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 0ba04d345d2d0..a51553a551049 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2024-01-01 +date: 2024-01-03 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 94c6c2d86b07e..9c2c844dff888 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 3053766769e11..7b7ccf141fe28 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 3d333a33cf2c6..c414274124d1e 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 819eb77827f98..35d68f65b5e58 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 51b19e37d8187..4ee47e2d8dd60 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2024-01-01 +date: 2024-01-03 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 a5c7ccbaeeca6..9aacfa448896c 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 db7bf46e7943f..0e1baa15d4200 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 f531889fede95..4752700e1c99d 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 272cff8b8badd..60f5ae32452b2 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2024-01-01 +date: 2024-01-03 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 6252c77642040..f7dc3c3ddc4f8 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 2f7a72e0bea4c..d63b0def5c05b 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 de81ffacfcdd9..e1bb395d680b5 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 5ab833fd70d58..8b67baca1c60a 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 ba8fbc280a184..5b153a5f41f39 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 3ce23e9f0a992..f4b82cc736f55 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 189bbd4d4e0bf..fd1f986e4c439 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 1ebe241cf24f7..abbfa4511d9f1 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 0f2c6129a03b4..da897df7ec3b9 100644 --- a/api_docs/kbn_core_plugins_browser.mdx +++ b/api_docs/kbn_core_plugins_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser title: "@kbn/core-plugins-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 ebbc5b4cea39f..a2a0aaf9118c7 100644 --- a/api_docs/kbn_core_plugins_browser_mocks.mdx +++ b/api_docs/kbn_core_plugins_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks title: "@kbn/core-plugins-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index e7a10e55cb7f6..d040203085f15 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index 5299e5ca2d6b4..49e8c56fb4b5b 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index fe3eb1b7688b8..1854c6fa54dce 100644 --- a/api_docs/kbn_core_plugins_server.mdx +++ b/api_docs/kbn_core_plugins_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server title: "@kbn/core-plugins-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server plugin -date: 2024-01-01 +date: 2024-01-03 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 e8362fa88f024..cc53b2eaaec33 100644 --- a/api_docs/kbn_core_plugins_server_mocks.mdx +++ b/api_docs/kbn_core_plugins_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks title: "@kbn/core-plugins-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 a35abb6270c8f..4ad04774e3d68 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2024-01-01 +date: 2024-01-03 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 762478a59dd2e..a23b044901e0e 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 c601f9091211f..40c49d0116428 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 8e877f9e78323..bfd50e040c375 100644 --- a/api_docs/kbn_core_rendering_server_internal.mdx +++ b/api_docs/kbn_core_rendering_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal title: "@kbn/core-rendering-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 cb33a6af19622..dcdb95e7bbcee 100644 --- a/api_docs/kbn_core_rendering_server_mocks.mdx +++ b/api_docs/kbn_core_rendering_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks title: "@kbn/core-rendering-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 27fa2b4117bde..66684b6ad5075 100644 --- a/api_docs/kbn_core_root_server_internal.mdx +++ b/api_docs/kbn_core_root_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal title: "@kbn/core-root-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-root-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 02e9c4c13483d..e584098dad104 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 0d7a137e41b30..92d730df53d96 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2024-01-01 +date: 2024-01-03 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 2b2f0b6923221..21829e8279486 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 a617256e44cbd..418fd4ac62c68 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 405f55f3c4b41..7bd30b20d2e47 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 64c5653f0049a..41e78996ea96d 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 aca59f31bd792..cb0fb3f6baa9e 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 4a2ab8be7a94b..a16963f102bfc 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 6c207516b46b9..5031e809ed813 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2024-01-01 +date: 2024-01-03 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 6bff12ec4ec1b..da7613f02bbd1 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 758b39cdcad3c..9a4668c1262c4 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 01b01d07fbbf1..3eacc30df4fdb 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 781f3d76e77ae..9ca3561cc5916 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 4cf6f6f54563f..5945e190b4691 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2024-01-01 +date: 2024-01-03 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 7cc51e6fbd7ac..26180f76794cd 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 454783316e21e..626cf4f89b04f 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 1f398d87f34ed..34d470522d22e 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2024-01-01 +date: 2024-01-03 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 1244e9bbb8145..18fcfbb094b01 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2024-01-01 +date: 2024-01-03 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 aede031cffd6f..bf766399819b4 100644 --- a/api_docs/kbn_core_status_common_internal.mdx +++ b/api_docs/kbn_core_status_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal title: "@kbn/core-status-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 3581062458ca8..34beba74de29f 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2024-01-01 +date: 2024-01-03 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 9e609dc42abcb..2866e403ef49d 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 93198919c8118..2c962ca195ee4 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 7d0eae5d8342a..46528c170ec7d 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2024-01-01 +date: 2024-01-03 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 2b4fcaec1eaa0..41a589bc5ac10 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 76024ad5fd23f..13061b14ec965 100644 --- a/api_docs/kbn_core_test_helpers_kbn_server.mdx +++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server title: "@kbn/core-test-helpers-kbn-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-kbn-server plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index 0a4c4a1496816..7d924c455d36c 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index b1f21cd183406..e90d6e84ae5b5 100644 --- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx +++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer title: "@kbn/core-test-helpers-so-type-serializer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin -date: 2024-01-01 +date: 2024-01-03 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 88ca4fe6ad03c..69498c46d3d14 100644 --- a/api_docs/kbn_core_test_helpers_test_utils.mdx +++ b/api_docs/kbn_core_test_helpers_test_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils title: "@kbn/core-test-helpers-test-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-test-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 e799edd5c68bf..2cecef44b7aa4 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 85c2c01f71cd6..2d1e6cb70ad1f 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 c591e6e51ebb7..c0615e03e7124 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 747a395d83853..7d1e4ae48cfd3 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 820ff0affbd64..1189bbd4e76f6 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 08c7696f3fad8..c00ea25223ac0 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2024-01-01 +date: 2024-01-03 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 73e02769b4e6f..f377f812c53b7 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2024-01-01 +date: 2024-01-03 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 fcf816541262b..9577d99b879e7 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 6379b6c599abc..a9747955ced7d 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 7018b7c161b77..30a5f4f911ebd 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2024-01-01 +date: 2024-01-03 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 e92d1987996b4..c8f403350217a 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 44f31919a5d14..9deb4e9043a4f 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 157266794301a..6d40f3e613b6b 100644 --- a/api_docs/kbn_core_user_settings_server.mdx +++ b/api_docs/kbn_core_user_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server title: "@kbn/core-user-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server plugin -date: 2024-01-01 +date: 2024-01-03 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 035ec69e2a859..77a75b4c31f80 100644 --- a/api_docs/kbn_core_user_settings_server_internal.mdx +++ b/api_docs/kbn_core_user_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-internal title: "@kbn/core-user-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-internal plugin -date: 2024-01-01 +date: 2024-01-03 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 48f97ca9cf8e3..e3362ebb5c110 100644 --- a/api_docs/kbn_core_user_settings_server_mocks.mdx +++ b/api_docs/kbn_core_user_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks title: "@kbn/core-user-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 9946ed6f34fab..9782f7bcc7385 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2024-01-01 +date: 2024-01-03 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 aa05f42f6b6e2..c906455a6b7dc 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index 2944c204d946b..70392256f5d0a 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index 6565e053e9a31..2160f14689d94 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index de8fcd2d63828..d67b6d92f1713 100644 --- a/api_docs/kbn_cypress_config.mdx +++ b/api_docs/kbn_cypress_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config title: "@kbn/cypress-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cypress-config plugin -date: 2024-01-01 +date: 2024-01-03 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 98f9811440f32..71a723d246023 100644 --- a/api_docs/kbn_data_service.mdx +++ b/api_docs/kbn_data_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service title: "@kbn/data-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-service plugin -date: 2024-01-01 +date: 2024-01-03 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 6ef1917fa64d9..535720cf4e94a 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2024-01-01 +date: 2024-01-03 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 90d83c39f09ff..9d322f0778f15 100644 --- a/api_docs/kbn_deeplinks_analytics.mdx +++ b/api_docs/kbn_deeplinks_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics title: "@kbn/deeplinks-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-analytics plugin -date: 2024-01-01 +date: 2024-01-03 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 f3d7b374529d4..7a96972afca3f 100644 --- a/api_docs/kbn_deeplinks_devtools.mdx +++ b/api_docs/kbn_deeplinks_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools title: "@kbn/deeplinks-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-devtools plugin -date: 2024-01-01 +date: 2024-01-03 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 a53370a44ad2c..d4ba2283f9b33 100644 --- a/api_docs/kbn_deeplinks_management.mdx +++ b/api_docs/kbn_deeplinks_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management title: "@kbn/deeplinks-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-management plugin -date: 2024-01-01 +date: 2024-01-03 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 15f05b42a5dbd..c8652fba0e7bb 100644 --- a/api_docs/kbn_deeplinks_ml.mdx +++ b/api_docs/kbn_deeplinks_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml title: "@kbn/deeplinks-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-ml plugin -date: 2024-01-01 +date: 2024-01-03 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 fdc55b13c69cd..a369a14687d79 100644 --- a/api_docs/kbn_deeplinks_observability.mdx +++ b/api_docs/kbn_deeplinks_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability title: "@kbn/deeplinks-observability" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-observability plugin -date: 2024-01-01 +date: 2024-01-03 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 5b7084265ac60..b95bad9a2e80a 100644 --- a/api_docs/kbn_deeplinks_search.mdx +++ b/api_docs/kbn_deeplinks_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search title: "@kbn/deeplinks-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-search plugin -date: 2024-01-01 +date: 2024-01-03 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 e3e588d1043bc..017d76bdbb719 100644 --- a/api_docs/kbn_default_nav_analytics.mdx +++ b/api_docs/kbn_default_nav_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics title: "@kbn/default-nav-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-analytics plugin -date: 2024-01-01 +date: 2024-01-03 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 8555f9a284db9..a1440065b3f50 100644 --- a/api_docs/kbn_default_nav_devtools.mdx +++ b/api_docs/kbn_default_nav_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools title: "@kbn/default-nav-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-devtools plugin -date: 2024-01-01 +date: 2024-01-03 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 ccafea1ecad34..c7bf147d812b2 100644 --- a/api_docs/kbn_default_nav_management.mdx +++ b/api_docs/kbn_default_nav_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management title: "@kbn/default-nav-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-management plugin -date: 2024-01-01 +date: 2024-01-03 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 870e8ee3730fc..16526a11f6bba 100644 --- a/api_docs/kbn_default_nav_ml.mdx +++ b/api_docs/kbn_default_nav_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml title: "@kbn/default-nav-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-ml plugin -date: 2024-01-01 +date: 2024-01-03 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 656985e52d604..e5974cd2ed6eb 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2024-01-01 +date: 2024-01-03 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 fcbdbde8ac630..63e79c1b93307 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2024-01-01 +date: 2024-01-03 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 16b0006fb2c03..17453f780b438 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2024-01-01 +date: 2024-01-03 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 c8dffa2a9c7ac..dd10715c25188 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 3c19fae877f6b..7a69e749fe9f2 100644 --- a/api_docs/kbn_discover_utils.mdx +++ b/api_docs/kbn_discover_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils title: "@kbn/discover-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 6db8a4679d6ce..5e9bd89ba93b7 100644 --- a/api_docs/kbn_doc_links.devdocs.json +++ b/api_docs/kbn_doc_links.devdocs.json @@ -952,7 +952,7 @@ "label": "serverlessSearch", "description": [], "signature": [ - "{ readonly gettingStartedExplore: string; readonly gettingStartedIngest: string; readonly gettingStartedSearch: string; readonly integrations: string; readonly integrationsBeats: string; readonly integrationsConnectorClient: string; readonly integrationsLogstash: string; }" + "{ readonly gettingStartedExplore: string; readonly gettingStartedIngest: string; readonly gettingStartedSearch: string; readonly integrations: string; readonly integrationsBeats: string; readonly integrationsConnectorClient: string; readonly integrationsConnectorClientRunFromSource: string; readonly integrationsConnectorClientRunWithDocker: string; readonly integrationsLogstash: 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 d6b0f3c7b0e4c..dbb26e025754b 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2024-01-01 +date: 2024-01-03 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 b22cc7425835f..ebb45c1079ca8 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 c96f5e3b9fa63..c94f5987750c9 100644 --- a/api_docs/kbn_dom_drag_drop.mdx +++ b/api_docs/kbn_dom_drag_drop.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop title: "@kbn/dom-drag-drop" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dom-drag-drop plugin -date: 2024-01-01 +date: 2024-01-03 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 aa800cf05544b..9543c83cdbb3d 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2024-01-01 +date: 2024-01-03 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 91955ee6c54ff..935959878e454 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: 2024-01-01 +date: 2024-01-03 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 f95a17a41c9c1..689a27844fad4 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.mdx +++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard title: "@kbn/ecs-data-quality-dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs-data-quality-dashboard plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index e839209b2f1c2..1670c41dae040 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index aae03296cbe0f..2f4fc945428b0 100644 --- a/api_docs/kbn_elastic_assistant.mdx +++ b/api_docs/kbn_elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant title: "@kbn/elastic-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index 741a4b48cf914..9c944f0bf5b28 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 8121559a36ad8..df177dc44a94c 100644 --- a/api_docs/kbn_es.mdx +++ b/api_docs/kbn_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es title: "@kbn/es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es plugin -date: 2024-01-01 +date: 2024-01-03 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 6933203917c69..426fbe2e3f71a 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2024-01-01 +date: 2024-01-03 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 f5335698d5dd1..4b4d5ee0d43b9 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2024-01-01 +date: 2024-01-03 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 b97c2a94e1d07..04ef6c7b6d3f0 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2024-01-01 +date: 2024-01-03 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 6a6743af05cf0..b970c49d3c813 100644 --- a/api_docs/kbn_es_types.mdx +++ b/api_docs/kbn_es_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types title: "@kbn/es-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-types plugin -date: 2024-01-01 +date: 2024-01-03 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 2b672d25e0e59..8f725923411af 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2024-01-01 +date: 2024-01-03 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 fd9ed09154dfe..e4c0f7b5a4437 100644 --- a/api_docs/kbn_event_annotation_common.mdx +++ b/api_docs/kbn_event_annotation_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common title: "@kbn/event-annotation-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-common plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index 48f57edfe89e6..ff1517ae1b59d 100644 --- a/api_docs/kbn_event_annotation_components.mdx +++ b/api_docs/kbn_event_annotation_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components title: "@kbn/event-annotation-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-components plugin -date: 2024-01-01 +date: 2024-01-03 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 ad64f8baf9923..9c140e044bba4 100644 --- a/api_docs/kbn_expandable_flyout.mdx +++ b/api_docs/kbn_expandable_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout title: "@kbn/expandable-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/expandable-flyout plugin -date: 2024-01-01 +date: 2024-01-03 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 a9e21037dec1e..22c559f70a6f0 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index 0942b98a495b7..02c6f4bd66adf 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 175dfe1ebc141..de6b1fdee5f49 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2024-01-01 +date: 2024-01-03 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 b594fb3876f24..1410ce0b1edbc 100644 --- a/api_docs/kbn_ftr_common_functional_services.mdx +++ b/api_docs/kbn_ftr_common_functional_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services title: "@kbn/ftr-common-functional-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-services plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index 5e1681c809e74..c0447d91a8980 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 23a570ae5fc50..a7d1a12c44a9c 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2024-01-01 +date: 2024-01-03 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 a2a9255f63b61..bf03bd157f8f9 100644 --- a/api_docs/kbn_generate_console_definitions.mdx +++ b/api_docs/kbn_generate_console_definitions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions title: "@kbn/generate-console-definitions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-console-definitions plugin -date: 2024-01-01 +date: 2024-01-03 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 0beca06471adf..7236b8c2a2055 100644 --- a/api_docs/kbn_generate_csv.mdx +++ b/api_docs/kbn_generate_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv title: "@kbn/generate-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index bbd2dbb8fb4e0..87e92255ec291 100644 --- a/api_docs/kbn_guided_onboarding.mdx +++ b/api_docs/kbn_guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding title: "@kbn/guided-onboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/guided-onboarding plugin -date: 2024-01-01 +date: 2024-01-03 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 c4b4e495150f0..ece5567608b1b 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2024-01-01 +date: 2024-01-03 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 554fac4945834..17bb23390b867 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 14891fd65cc99..2e58c2b0c74c4 100644 --- a/api_docs/kbn_health_gateway_server.mdx +++ b/api_docs/kbn_health_gateway_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server title: "@kbn/health-gateway-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/health-gateway-server plugin -date: 2024-01-01 +date: 2024-01-03 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 a15eb1c9c19af..1dfc83f6a280b 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2024-01-01 +date: 2024-01-03 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 c3aaeb0c7c232..7374f07335517 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2024-01-01 +date: 2024-01-03 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 f55200cbf297a..5c87c1bd9a073 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2024-01-01 +date: 2024-01-03 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 0a898c5df8469..2f9dfe84b2fa6 100644 --- a/api_docs/kbn_i18n_react.mdx +++ b/api_docs/kbn_i18n_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react title: "@kbn/i18n-react" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n-react plugin -date: 2024-01-01 +date: 2024-01-03 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 789d29fc5260d..9c5ae7112f347 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2024-01-01 +date: 2024-01-03 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 1bff5a0976255..9a28f3cc28a04 100644 --- a/api_docs/kbn_infra_forge.mdx +++ b/api_docs/kbn_infra_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge title: "@kbn/infra-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/infra-forge plugin -date: 2024-01-01 +date: 2024-01-03 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 d50fc41bc8664..04232da34b033 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 2b77d02c72e4a..95303c94ee32f 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 624b16fd3f2f7..bc27368ebfe3f 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2024-01-01 +date: 2024-01-03 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 84064718b60f6..1a3289e17468a 100644 --- a/api_docs/kbn_journeys.mdx +++ b/api_docs/kbn_journeys.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys title: "@kbn/journeys" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/journeys plugin -date: 2024-01-01 +date: 2024-01-03 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 fcfa868c2d98a..1be271e7fb49a 100644 --- a/api_docs/kbn_json_ast.mdx +++ b/api_docs/kbn_json_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast title: "@kbn/json-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-ast plugin -date: 2024-01-01 +date: 2024-01-03 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 063d5d621fc1f..883ec22a62a8b 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2024-01-01 +date: 2024-01-03 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 a160ba27a8e44..ec6def5b60bd8 100644 --- a/api_docs/kbn_language_documentation_popover.mdx +++ b/api_docs/kbn_language_documentation_popover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover title: "@kbn/language-documentation-popover" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation-popover plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 3a6198b990c6c..e02c88f3ee05d 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_lens_formula_docs.devdocs.json b/api_docs/kbn_lens_formula_docs.devdocs.json new file mode 100644 index 0000000000000..ffc386fb21ff5 --- /dev/null +++ b/api_docs/kbn_lens_formula_docs.devdocs.json @@ -0,0 +1,2298 @@ +{ + "id": "@kbn/lens-formula-docs", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.getTypeI18n", + "type": "Function", + "tags": [], + "label": "getTypeI18n", + "description": [], + "signature": [ + "(type: string) => string" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.getTypeI18n.$1", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.AVG_ID", + "type": "string", + "tags": [], + "label": "AVG_ID", + "description": [], + "signature": [ + "\"average\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/average.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.AVG_NAME", + "type": "string", + "tags": [], + "label": "AVG_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/average.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.CARDINALITY_ID", + "type": "string", + "tags": [], + "label": "CARDINALITY_ID", + "description": [], + "signature": [ + "\"unique_count\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/cardinality.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.CARDINALITY_NAME", + "type": "string", + "tags": [], + "label": "CARDINALITY_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/cardinality.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.COUNT_ID", + "type": "string", + "tags": [], + "label": "COUNT_ID", + "description": [], + "signature": [ + "\"count\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/count.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.COUNT_NAME", + "type": "string", + "tags": [], + "label": "COUNT_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/count.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.COUNTER_RATE_ID", + "type": "string", + "tags": [], + "label": "COUNTER_RATE_ID", + "description": [], + "signature": [ + "\"counter_rate\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/counter_rate.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.COUNTER_RATE_NAME", + "type": "string", + "tags": [], + "label": "COUNTER_RATE_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/counter_rate.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.CUMULATIVE_SUM_ID", + "type": "string", + "tags": [], + "label": "CUMULATIVE_SUM_ID", + "description": [], + "signature": [ + "\"cumulative_sum\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/cumulative_sum.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.CUMULATIVE_SUM_NAME", + "type": "string", + "tags": [], + "label": "CUMULATIVE_SUM_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/cumulative_sum.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.DIFFERENCES_ID", + "type": "string", + "tags": [], + "label": "DIFFERENCES_ID", + "description": [], + "signature": [ + "\"differences\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/differences.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.DIFFERENCES_NAME", + "type": "string", + "tags": [], + "label": "DIFFERENCES_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/differences.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.INTERVAL_ID", + "type": "string", + "tags": [], + "label": "INTERVAL_ID", + "description": [], + "signature": [ + "\"interval\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/interval.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.INTERVAL_NAME", + "type": "string", + "tags": [], + "label": "INTERVAL_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/interval.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.LAST_VALUE_ID", + "type": "string", + "tags": [], + "label": "LAST_VALUE_ID", + "description": [], + "signature": [ + "\"last_value\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/last_value.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.LAST_VALUE_NAME", + "type": "string", + "tags": [], + "label": "LAST_VALUE_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/last_value.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.MAX_ID", + "type": "string", + "tags": [], + "label": "MAX_ID", + "description": [], + "signature": [ + "\"max\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/max.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.MAX_NAME", + "type": "string", + "tags": [], + "label": "MAX_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/max.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.MEDIAN_ID", + "type": "string", + "tags": [], + "label": "MEDIAN_ID", + "description": [], + "signature": [ + "\"median\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/median.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.MEDIAN_NAME", + "type": "string", + "tags": [], + "label": "MEDIAN_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/median.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.MIN_ID", + "type": "string", + "tags": [], + "label": "MIN_ID", + "description": [], + "signature": [ + "\"min\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/min.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.MIN_NAME", + "type": "string", + "tags": [], + "label": "MIN_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/min.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.MOVING_AVERAGE_ID", + "type": "string", + "tags": [], + "label": "MOVING_AVERAGE_ID", + "description": [], + "signature": [ + "\"moving_average\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/moving_average.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.MOVING_AVERAGE_NAME", + "type": "string", + "tags": [], + "label": "MOVING_AVERAGE_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/moving_average.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.MOVING_AVERAGE_WINDOW_DEFAULT_VALUE", + "type": "number", + "tags": [], + "label": "MOVING_AVERAGE_WINDOW_DEFAULT_VALUE", + "description": [], + "signature": [ + "5" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/moving_average.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.NORMALIZE_BY_UNIT_ID", + "type": "string", + "tags": [], + "label": "NORMALIZE_BY_UNIT_ID", + "description": [], + "signature": [ + "\"normalize_by_unit\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/normalize_by_unit.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.NORMALIZE_BY_UNIT_NAME", + "type": "string", + "tags": [], + "label": "NORMALIZE_BY_UNIT_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/normalize_by_unit.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.NOW_ID", + "type": "string", + "tags": [], + "label": "NOW_ID", + "description": [], + "signature": [ + "\"now\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/now.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.NOW_NAME", + "type": "string", + "tags": [], + "label": "NOW_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/now.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.OVERALL_AVERAGE_ID", + "type": "string", + "tags": [], + "label": "OVERALL_AVERAGE_ID", + "description": [], + "signature": [ + "\"overall_average\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/overall_average.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.OVERALL_AVERAGE_NAME", + "type": "string", + "tags": [], + "label": "OVERALL_AVERAGE_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/overall_average.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.OVERALL_MAX_ID", + "type": "string", + "tags": [], + "label": "OVERALL_MAX_ID", + "description": [], + "signature": [ + "\"overall_max\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/overall_max.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.OVERALL_MAX_NAME", + "type": "string", + "tags": [], + "label": "OVERALL_MAX_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/overall_max.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.OVERALL_MIN_ID", + "type": "string", + "tags": [], + "label": "OVERALL_MIN_ID", + "description": [], + "signature": [ + "\"overall_min\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/overall_min.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.OVERALL_MIN_NAME", + "type": "string", + "tags": [], + "label": "OVERALL_MIN_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/overall_min.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.OVERALL_SUM_ID", + "type": "string", + "tags": [], + "label": "OVERALL_SUM_ID", + "description": [], + "signature": [ + "\"overall_sum\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/overall_sum.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.OVERALL_SUM_NAME", + "type": "string", + "tags": [], + "label": "OVERALL_SUM_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/overall_sum.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.PERCENTILE_ID", + "type": "string", + "tags": [], + "label": "PERCENTILE_ID", + "description": [], + "signature": [ + "\"percentile\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/percentile.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.PERCENTILE_NAME", + "type": "string", + "tags": [], + "label": "PERCENTILE_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/percentile.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.PERCENTILE_RANK_ID", + "type": "string", + "tags": [], + "label": "PERCENTILE_RANK_ID", + "description": [], + "signature": [ + "\"percentile_rank\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/percentile_ranks.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.PERCENTILE_RANK_NAME", + "type": "string", + "tags": [], + "label": "PERCENTILE_RANK_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/percentile_ranks.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.STD_DEVIATION_ID", + "type": "string", + "tags": [], + "label": "STD_DEVIATION_ID", + "description": [], + "signature": [ + "\"standard_deviation\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/std_deviation.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.STD_DEVIATION_NAME", + "type": "string", + "tags": [], + "label": "STD_DEVIATION_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/std_deviation.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.SUM_ID", + "type": "string", + "tags": [], + "label": "SUM_ID", + "description": [], + "signature": [ + "\"sum\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/sum.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.SUM_NAME", + "type": "string", + "tags": [], + "label": "SUM_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/sum.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.TIME_RANGE_ID", + "type": "string", + "tags": [], + "label": "TIME_RANGE_ID", + "description": [], + "signature": [ + "\"time_range\"" + ], + "path": "packages/kbn-lens-formula-docs/src/operations/time_range.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.TIME_RANGE_NAME", + "type": "string", + "tags": [], + "label": "TIME_RANGE_NAME", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/operations/time_range.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.documentationMap", + "type": "Object", + "tags": [], + "label": "documentationMap", + "description": [], + "signature": [ + "{ [x: string]: ", + "OperationDocumentationType", + "; }" + ], + "path": "packages/kbn-lens-formula-docs/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.sections", + "type": "Object", + "tags": [], + "label": "sections", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/sections/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.sections.howTo", + "type": "string", + "tags": [], + "label": "howTo", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/sections/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.sections.elasticsearch", + "type": "Object", + "tags": [], + "label": "elasticsearch", + "description": [], + "signature": [ + "{ label: string; description: string; }" + ], + "path": "packages/kbn-lens-formula-docs/src/sections/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.sections.common", + "type": "Object", + "tags": [], + "label": "common", + "description": [], + "signature": [ + "{ label: string; description: string; items: { label: string; description: string; }[]; }" + ], + "path": "packages/kbn-lens-formula-docs/src/sections/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.sections.comparison", + "type": "Object", + "tags": [], + "label": "comparison", + "description": [], + "signature": [ + "{ label: string; description: string; }" + ], + "path": "packages/kbn-lens-formula-docs/src/sections/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.sections.math", + "type": "Object", + "tags": [], + "label": "math", + "description": [], + "signature": [ + "{ label: string; description: string; }" + ], + "path": "packages/kbn-lens-formula-docs/src/sections/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.sections.calculations", + "type": "Object", + "tags": [], + "label": "calculations", + "description": [], + "signature": [ + "{ label: string; description: string; }" + ], + "path": "packages/kbn-lens-formula-docs/src/sections/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.sections.context", + "type": "Object", + "tags": [], + "label": "context", + "description": [], + "signature": [ + "{ label: string; description: string; }" + ], + "path": "packages/kbn-lens-formula-docs/src/sections/index.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions", + "type": "Object", + "tags": [], + "label": "tinymathFunctions", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.add", + "type": "Object", + "tags": [], + "label": "add", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.add.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.add.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.add.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.subtract", + "type": "Object", + "tags": [], + "label": "subtract", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.subtract.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.subtract.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.subtract.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.multiply", + "type": "Object", + "tags": [], + "label": "multiply", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.multiply.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.multiply.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.multiply.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.divide", + "type": "Object", + "tags": [], + "label": "divide", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.divide.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.divide.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.divide.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.abs", + "type": "Object", + "tags": [], + "label": "abs", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.abs.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.abs.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.abs.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.cbrt", + "type": "Object", + "tags": [], + "label": "cbrt", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.cbrt.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.cbrt.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.cbrt.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.ceil", + "type": "Object", + "tags": [], + "label": "ceil", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.ceil.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.ceil.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.ceil.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.clamp", + "type": "Object", + "tags": [], + "label": "clamp", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.clamp.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.clamp.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "({ name: string; type: string; } | { name: string; type: string; alternativeWhenMissing: string; })[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.clamp.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.cube", + "type": "Object", + "tags": [], + "label": "cube", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.cube.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.cube.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.cube.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.exp", + "type": "Object", + "tags": [], + "label": "exp", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.exp.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.exp.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.exp.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.fix", + "type": "Object", + "tags": [], + "label": "fix", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.fix.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.fix.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.fix.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.floor", + "type": "Object", + "tags": [], + "label": "floor", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.floor.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.floor.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.floor.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.log", + "type": "Object", + "tags": [], + "label": "log", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.log.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.log.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "({ name: string; type: string; } | { name: string; optional: true; defaultValue: string; type: string; })[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.log.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.mod", + "type": "Object", + "tags": [], + "label": "mod", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.mod.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.mod.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.mod.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.pow", + "type": "Object", + "tags": [], + "label": "pow", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.pow.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.pow.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.pow.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.round", + "type": "Object", + "tags": [], + "label": "round", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.round.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.round.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "({ name: string; type: string; } | { name: string; optional: true; defaultValue: number; type: string; })[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.round.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.sqrt", + "type": "Object", + "tags": [], + "label": "sqrt", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.sqrt.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.sqrt.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.sqrt.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.square", + "type": "Object", + "tags": [], + "label": "square", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.square.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.square.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.square.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.pick_max", + "type": "Object", + "tags": [], + "label": "pick_max", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.pick_max.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.pick_max.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.pick_max.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.pick_min", + "type": "Object", + "tags": [], + "label": "pick_min", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.pick_min.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.pick_min.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.pick_min.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.defaults", + "type": "Object", + "tags": [], + "label": "defaults", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.defaults.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"math\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.defaults.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.defaults.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.lt", + "type": "Object", + "tags": [], + "label": "lt", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.lt.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"comparison\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.lt.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.lt.outputType", + "type": "string", + "tags": [], + "label": "outputType", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.lt.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.gt", + "type": "Object", + "tags": [], + "label": "gt", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.gt.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"comparison\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.gt.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.gt.outputType", + "type": "string", + "tags": [], + "label": "outputType", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.gt.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.eq", + "type": "Object", + "tags": [], + "label": "eq", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.eq.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"comparison\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.eq.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.eq.outputType", + "type": "string", + "tags": [], + "label": "outputType", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.eq.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.lte", + "type": "Object", + "tags": [], + "label": "lte", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.lte.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"comparison\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.lte.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.lte.outputType", + "type": "string", + "tags": [], + "label": "outputType", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.lte.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.gte", + "type": "Object", + "tags": [], + "label": "gte", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.gte.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"comparison\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.gte.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.gte.outputType", + "type": "string", + "tags": [], + "label": "outputType", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.gte.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.ifelse", + "type": "Object", + "tags": [], + "label": "ifelse", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.ifelse.section", + "type": "string", + "tags": [], + "label": "section", + "description": [], + "signature": [ + "\"comparison\"" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.ifelse.positionalArguments", + "type": "Array", + "tags": [], + "label": "positionalArguments", + "description": [], + "signature": [ + "{ name: string; type: string; }[]" + ], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/lens-formula-docs", + "id": "def-common.tinymathFunctions.ifelse.help", + "type": "string", + "tags": [], + "label": "help", + "description": [], + "path": "packages/kbn-lens-formula-docs/src/math/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "initialIsOpen": false + } + ] + } +} \ No newline at end of file diff --git a/api_docs/kbn_lens_formula_docs.mdx b/api_docs/kbn_lens_formula_docs.mdx new file mode 100644 index 0000000000000..5d63a5d0cce64 --- /dev/null +++ b/api_docs/kbn_lens_formula_docs.mdx @@ -0,0 +1,36 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnLensFormulaDocsPluginApi +slug: /kibana-dev-docs/api/kbn-lens-formula-docs +title: "@kbn/lens-formula-docs" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/lens-formula-docs plugin +date: 2024-01-03 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-formula-docs'] +--- +import kbnLensFormulaDocsObj from './kbn_lens_formula_docs.devdocs.json'; + + + +Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 172 | 0 | 172 | 1 | + +## Common + +### Objects + + +### Functions + + +### Consts, variables and types + + diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 32fe1ee31987e..0aad7f0b31b60 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2024-01-01 +date: 2024-01-03 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 3f61dc8857aeb..608f5e661b253 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 b8519b0909ecf..0e76dcfee8184 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2024-01-01 +date: 2024-01-03 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 da8a8065677f9..3b7c3219f961c 100644 --- a/api_docs/kbn_management_cards_navigation.mdx +++ b/api_docs/kbn_management_cards_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation title: "@kbn/management-cards-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-cards-navigation plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index 32546ca5207a6..89e1034ca738b 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index 499fcb7e84368..74809bc030a97 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index 1eef70eddca61..bd4a5ce1f8c46 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index 1f0e87e87ac7c..6a2b8f7df7556 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index 706429be40425..7ef6f131a7201 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index 837b35088c22e..4868c02e24d88 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index c2c8c413b6796..db3f309da4413 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index 79a48d36b6035..14daebc7a1ef0 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index 0f475e177f170..46fe06d3202fa 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index 7b6f435617d14..d83cd2ed75991 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 28487cd2a204e..12aed4a625022 100644 --- a/api_docs/kbn_management_storybook_config.mdx +++ b/api_docs/kbn_management_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config title: "@kbn/management-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-storybook-config plugin -date: 2024-01-01 +date: 2024-01-03 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 402e829e6d3d7..13562d6da3e93 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2024-01-01 +date: 2024-01-03 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 cd0eea70c9cdf..6afb6f2796da8 100644 --- a/api_docs/kbn_maps_vector_tile_utils.mdx +++ b/api_docs/kbn_maps_vector_tile_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils title: "@kbn/maps-vector-tile-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/maps-vector-tile-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 6de928ecd51b7..bce484f2a3ba9 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 25d2ae5807110..f555b04985d4c 100644 --- a/api_docs/kbn_ml_anomaly_utils.mdx +++ b/api_docs/kbn_ml_anomaly_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils title: "@kbn/ml-anomaly-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-anomaly-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 89179f67cfd3a..7844c32ad787c 100644 --- a/api_docs/kbn_ml_category_validator.mdx +++ b/api_docs/kbn_ml_category_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator title: "@kbn/ml-category-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-category-validator plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index c2101e2f4ce96..32843c50baf6d 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index 4db0931c22213..2a237add5bb32 100644 --- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx +++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils title: "@kbn/ml-data-frame-analytics-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-frame-analytics-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 b670629bce316..7050f7dccb806 100644 --- a/api_docs/kbn_ml_data_grid.mdx +++ b/api_docs/kbn_ml_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid title: "@kbn/ml-data-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-grid plugin -date: 2024-01-01 +date: 2024-01-03 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 a34fa49e47339..b49a49b6197d2 100644 --- a/api_docs/kbn_ml_date_picker.mdx +++ b/api_docs/kbn_ml_date_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker title: "@kbn/ml-date-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-picker plugin -date: 2024-01-01 +date: 2024-01-03 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 7122965db66bb..c590ad4216cc2 100644 --- a/api_docs/kbn_ml_date_utils.mdx +++ b/api_docs/kbn_ml_date_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils title: "@kbn/ml-date-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 6b137690849e3..d8ca772173fca 100644 --- a/api_docs/kbn_ml_error_utils.mdx +++ b/api_docs/kbn_ml_error_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils title: "@kbn/ml-error-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-error-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 f1e920eebeb2e..aa56ebf03fd15 100644 --- a/api_docs/kbn_ml_in_memory_table.mdx +++ b/api_docs/kbn_ml_in_memory_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table title: "@kbn/ml-in-memory-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-in-memory-table plugin -date: 2024-01-01 +date: 2024-01-03 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 fae9d0ad7be75..a21fc6b630fc1 100644 --- a/api_docs/kbn_ml_is_defined.mdx +++ b/api_docs/kbn_ml_is_defined.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined title: "@kbn/ml-is-defined" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-defined plugin -date: 2024-01-01 +date: 2024-01-03 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 869da83ee85f0..ca8f6f8dabee1 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2024-01-01 +date: 2024-01-03 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 f40e314c5aed6..55e6b1a595d3a 100644 --- a/api_docs/kbn_ml_kibana_theme.mdx +++ b/api_docs/kbn_ml_kibana_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-kibana-theme title: "@kbn/ml-kibana-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-kibana-theme plugin -date: 2024-01-01 +date: 2024-01-03 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 45621de54aca7..c81a827f09ba7 100644 --- a/api_docs/kbn_ml_local_storage.mdx +++ b/api_docs/kbn_ml_local_storage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage title: "@kbn/ml-local-storage" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-local-storage plugin -date: 2024-01-01 +date: 2024-01-03 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 13b5065a9da73..5fcbbce949ab2 100644 --- a/api_docs/kbn_ml_nested_property.mdx +++ b/api_docs/kbn_ml_nested_property.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property title: "@kbn/ml-nested-property" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-nested-property plugin -date: 2024-01-01 +date: 2024-01-03 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 cf25a68130b0a..549b31f6914df 100644 --- a/api_docs/kbn_ml_number_utils.mdx +++ b/api_docs/kbn_ml_number_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils title: "@kbn/ml-number-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-number-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 1e9dca2fb2929..7b6d8e7ba6737 100644 --- a/api_docs/kbn_ml_query_utils.mdx +++ b/api_docs/kbn_ml_query_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils title: "@kbn/ml-query-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-query-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 eb1ecc45b59b9..79bccf79b8e18 100644 --- a/api_docs/kbn_ml_random_sampler_utils.mdx +++ b/api_docs/kbn_ml_random_sampler_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils title: "@kbn/ml-random-sampler-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-random-sampler-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 dbde62fbb4137..5a686d30db186 100644 --- a/api_docs/kbn_ml_route_utils.mdx +++ b/api_docs/kbn_ml_route_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils title: "@kbn/ml-route-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-route-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 aae2e673f6868..30ad12e967919 100644 --- a/api_docs/kbn_ml_runtime_field_utils.mdx +++ b/api_docs/kbn_ml_runtime_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils title: "@kbn/ml-runtime-field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-runtime-field-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 875671f5d414b..34f8d460992c3 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2024-01-01 +date: 2024-01-03 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 7940032accf8f..02e93e5198380 100644 --- a/api_docs/kbn_ml_trained_models_utils.mdx +++ b/api_docs/kbn_ml_trained_models_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils title: "@kbn/ml-trained-models-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-trained-models-utils plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_ui_actions.mdx b/api_docs/kbn_ml_ui_actions.mdx index 7eadea35a6de2..be58f24546153 100644 --- a/api_docs/kbn_ml_ui_actions.mdx +++ b/api_docs/kbn_ml_ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-ui-actions title: "@kbn/ml-ui-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-ui-actions plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-ui-actions'] --- import kbnMlUiActionsObj from './kbn_ml_ui_actions.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index fb10efa82ae06..49ff37164b4cd 100644 --- a/api_docs/kbn_ml_url_state.mdx +++ b/api_docs/kbn_ml_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state title: "@kbn/ml-url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-url-state plugin -date: 2024-01-01 +date: 2024-01-03 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 47a477c473ac6..81cc6961a3dfd 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2024-01-01 +date: 2024-01-03 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 409bf2e4ae1db..cb1ef42476df8 100644 --- a/api_docs/kbn_object_versioning.mdx +++ b/api_docs/kbn_object_versioning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning title: "@kbn/object-versioning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning plugin -date: 2024-01-01 +date: 2024-01-03 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 58b7f3c2c1c9e..54645dda86e93 100644 --- a/api_docs/kbn_observability_alert_details.mdx +++ b/api_docs/kbn_observability_alert_details.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details title: "@kbn/observability-alert-details" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alert-details plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index 3e09ddb704e51..529085337a743 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index 6b28ee40ee2fb..9bddb8fc65312 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index d5619a26858d8..2e474066f282f 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index a200c5b173da3..92dc147c6dfe3 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 2e6e93d6dad89..2fe16fd4e8bbc 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2024-01-01 +date: 2024-01-03 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 37637f8397751..95da111246b73 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2024-01-01 +date: 2024-01-03 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 c57932356ca91..428b1988c5266 100644 --- a/api_docs/kbn_osquery_io_ts_types.mdx +++ b/api_docs/kbn_osquery_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types title: "@kbn/osquery-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/osquery-io-ts-types plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index eee11572cc058..c1be463949bc5 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index a30ebbcf79290..43b7ecb46c378 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2024-01-01 +date: 2024-01-03 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 1ebb1c2db54c3..2de8e21c2b5dd 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2024-01-01 +date: 2024-01-03 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 316403aff2048..daa193082d6fa 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index f774d63a68192..18436bcedaea1 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index e2c918a5963ce..420fa81ed4057 100644 --- a/api_docs/kbn_random_sampling.mdx +++ b/api_docs/kbn_random_sampling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling title: "@kbn/random-sampling" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/random-sampling plugin -date: 2024-01-01 +date: 2024-01-03 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 9007f6f0b7994..ef1d5e1575d16 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2024-01-01 +date: 2024-01-03 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 678bb87e8ce48..09218d858f4a4 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2024-01-01 +date: 2024-01-03 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 90184d8520453..315a71dd74f08 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2024-01-01 +date: 2024-01-03 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 25e6d94702b0b..74e588dcd6974 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2024-01-01 +date: 2024-01-03 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 86eaae57f5826..7ce89ba190aa5 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2024-01-01 +date: 2024-01-03 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 fe37effde7ffb..05e5c7aecedc6 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2024-01-01 +date: 2024-01-03 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 9dfaac2ff575d..fb18a053e3ffa 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2024-01-01 +date: 2024-01-03 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 78fb4718ab7cb..415c2cea3cf7c 100644 --- a/api_docs/kbn_repo_file_maps.mdx +++ b/api_docs/kbn_repo_file_maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps title: "@kbn/repo-file-maps" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-file-maps plugin -date: 2024-01-01 +date: 2024-01-03 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 7f4375052f1fc..7282467a965ce 100644 --- a/api_docs/kbn_repo_linter.mdx +++ b/api_docs/kbn_repo_linter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter title: "@kbn/repo-linter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-linter plugin -date: 2024-01-01 +date: 2024-01-03 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 b61872381e027..f148614157a0b 100644 --- a/api_docs/kbn_repo_path.mdx +++ b/api_docs/kbn_repo_path.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path title: "@kbn/repo-path" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-path plugin -date: 2024-01-01 +date: 2024-01-03 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 d6daaeea1fc9e..4bc6616c3081b 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2024-01-01 +date: 2024-01-03 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 08c077993a8c8..da5c09a6d0c8f 100644 --- a/api_docs/kbn_reporting_common.mdx +++ b/api_docs/kbn_reporting_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common title: "@kbn/reporting-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-common plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index c7a9373efa835..f5e18c1615ac7 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index 5b77cd044315a..e8481d356dabb 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index e49748ab7d480..42ff98e422988 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index 4c81401857143..2252fb1d7977b 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index a1ed1c82d8f38..8176c546a0fe0 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index 5bc8c3a6f9d19..f39d7e111bc91 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index 0d73857851066..0061529c8c618 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index a9353c4364431..a052bd3626774 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index 7bb6f635cfa82..8bfe06034f44e 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index 0212d187da5d2..64399026f1acc 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 4b36bf4ae7fec..97cf0ad255b20 100644 --- a/api_docs/kbn_rison.mdx +++ b/api_docs/kbn_rison.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison title: "@kbn/rison" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rison plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index fba7aa0776fcc..1d208bc86fcb0 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index e534d6721bf48..e32b7867319ec 100644 --- a/api_docs/kbn_rrule.mdx +++ b/api_docs/kbn_rrule.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule title: "@kbn/rrule" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rrule plugin -date: 2024-01-01 +date: 2024-01-03 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 20d5d677d797c..6af048a8e4864 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 cadcd2c01c032..b99395bfe0711 100644 --- a/api_docs/kbn_saved_objects_settings.mdx +++ b/api_docs/kbn_saved_objects_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings title: "@kbn/saved-objects-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-objects-settings plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index 3a6716c8f89bd..b728a36f9c936 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index e331bfcc146d0..a9f69c48340be 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index cbad19a32bd08..d4942841b3e92 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index cb36507e728a2..bf8f93490d97a 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index acd2b4668e57e..524bbb2ba17d5 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index 146143e3abc67..da636b1c1eb17 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index 92be158c8ed66..adc89d81337bc 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index 8f4a343d15e0e..00c15e7cccb6c 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index ba17c0b7fb0d5..cadcb170ebc94 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index 2fb7e33a3d1c4..566e682d55ee9 100644 --- a/api_docs/kbn_security_solution_navigation.mdx +++ b/api_docs/kbn_security_solution_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation title: "@kbn/security-solution-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-navigation plugin -date: 2024-01-01 +date: 2024-01-03 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 9b79f0f495e9b..6b2e00f57c6ea 100644 --- a/api_docs/kbn_security_solution_side_nav.mdx +++ b/api_docs/kbn_security_solution_side_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav title: "@kbn/security-solution-side-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-side-nav plugin -date: 2024-01-01 +date: 2024-01-03 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 16a0070da3d17..834885381eda9 100644 --- a/api_docs/kbn_security_solution_storybook_config.mdx +++ b/api_docs/kbn_security_solution_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config title: "@kbn/security-solution-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-storybook-config plugin -date: 2024-01-01 +date: 2024-01-03 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 702f7e49ab9e6..e10ab24287a01 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2024-01-01 +date: 2024-01-03 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 ddb3f6af677fc..2f6b6b2851d8c 100644 --- a/api_docs/kbn_securitysolution_data_table.mdx +++ b/api_docs/kbn_securitysolution_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table title: "@kbn/securitysolution-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-data-table plugin -date: 2024-01-01 +date: 2024-01-03 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 2586dc668d281..bd1e25d126795 100644 --- a/api_docs/kbn_securitysolution_ecs.mdx +++ b/api_docs/kbn_securitysolution_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs title: "@kbn/securitysolution-ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-ecs plugin -date: 2024-01-01 +date: 2024-01-03 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 756ccbe7ac440..a9d6f110a244b 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 e0636c073fe34..f437cefd7525b 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.mdx +++ b/api_docs/kbn_securitysolution_exception_list_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components title: "@kbn/securitysolution-exception-list-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-exception-list-components plugin -date: 2024-01-01 +date: 2024-01-03 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 c827ff4a287b4..7ad7facc591d5 100644 --- a/api_docs/kbn_securitysolution_grouping.mdx +++ b/api_docs/kbn_securitysolution_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-grouping title: "@kbn/securitysolution-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-grouping plugin -date: 2024-01-01 +date: 2024-01-03 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 96ed681103f96..efeb0e6fe16a1 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 1571464b123b7..520f50d1154c7 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2024-01-01 +date: 2024-01-03 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 8cf777d7132e0..83b2bc0d036f5 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2024-01-01 +date: 2024-01-03 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 2ed210ab50e64..d8a27520e0ec8 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2024-01-01 +date: 2024-01-03 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 46155a116a716..57966232ac0ed 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 5441f8cddad1c..ca14c731fa9ec 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2024-01-01 +date: 2024-01-03 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 bd49031642499..9abe4ac959005 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2024-01-01 +date: 2024-01-03 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 4fa2196960bde..28e949d75ba67 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2024-01-01 +date: 2024-01-03 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 0f614724b67d2..5ce57dbadb96f 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 df700c51f22c7..3ae83f273eec8 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2024-01-01 +date: 2024-01-03 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 4ef2968fb3b48..373d807dc9d11 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2024-01-01 +date: 2024-01-03 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 4cfac7f0ec84f..6d17995911366 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2024-01-01 +date: 2024-01-03 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 5dc2f1150b5ff..455ddc5f82b63 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2024-01-01 +date: 2024-01-03 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 6540577807077..d29cce7f05c69 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index 172df4268cc08..e9433cf3b698d 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index b1250190dc368..a1660b4bd7e88 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index 26782e3ffc8e9..93523f759f581 100644 --- a/api_docs/kbn_serverless_project_switcher.mdx +++ b/api_docs/kbn_serverless_project_switcher.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher title: "@kbn/serverless-project-switcher" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-project-switcher plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index f6c8be0080f29..cc0f78b5a522e 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index 5f72155243ec1..67423f625ef46 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index 8fedfb31d9a83..c8925d6bf6fb7 100644 --- a/api_docs/kbn_serverless_storybook_config.mdx +++ b/api_docs/kbn_serverless_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config title: "@kbn/serverless-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-storybook-config plugin -date: 2024-01-01 +date: 2024-01-03 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 9b66c554abf42..7c922d1e2b589 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2024-01-01 +date: 2024-01-03 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 06701a75c24c2..796bcda6e0e9b 100644 --- a/api_docs/kbn_shared_ux_avatar_solution.mdx +++ b/api_docs/kbn_shared_ux_avatar_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution title: "@kbn/shared-ux-avatar-solution" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-solution plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index fd3bd8cf1e895..de736c1d7f90f 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen title: "@kbn/shared-ux-button-exit-full-screen" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index 8d54cfc2c5830..58a5ab4b38f8f 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2024-01-01 +date: 2024-01-03 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 b628c03314948..90d1f72419326 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data title: "@kbn/shared-ux-card-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2024-01-01 +date: 2024-01-03 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 3ccafda48012f..fd3e522119dbe 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 051102a25a89a..224a41536790b 100644 --- a/api_docs/kbn_shared_ux_chrome_navigation.mdx +++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation title: "@kbn/shared-ux-chrome-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-chrome-navigation plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index 5a72143571bb4..248fd2e12c3b4 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index 58a1e9b966ea3..f6f66007e3ab5 100644 --- a/api_docs/kbn_shared_ux_file_context.mdx +++ b/api_docs/kbn_shared_ux_file_context.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context title: "@kbn/shared-ux-file-context" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-context plugin -date: 2024-01-01 +date: 2024-01-03 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 81df33298ab19..61eae0e2d5d6e 100644 --- a/api_docs/kbn_shared_ux_file_image.mdx +++ b/api_docs/kbn_shared_ux_file_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image title: "@kbn/shared-ux-file-image" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image plugin -date: 2024-01-01 +date: 2024-01-03 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 32c668f1e8311..1ae453e2c3a63 100644 --- a/api_docs/kbn_shared_ux_file_image_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks title: "@kbn/shared-ux-file-image-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 a704d0553268a..bef9e26fb6764 100644 --- a/api_docs/kbn_shared_ux_file_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks title: "@kbn/shared-ux-file-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 b00d460aa2f93..3650f4ac8270d 100644 --- a/api_docs/kbn_shared_ux_file_picker.mdx +++ b/api_docs/kbn_shared_ux_file_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker title: "@kbn/shared-ux-file-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-picker plugin -date: 2024-01-01 +date: 2024-01-03 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 95dd77ccc3e75..e6a8523cba6b7 100644 --- a/api_docs/kbn_shared_ux_file_types.mdx +++ b/api_docs/kbn_shared_ux_file_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types title: "@kbn/shared-ux-file-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-types plugin -date: 2024-01-01 +date: 2024-01-03 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 f81c642ce5f4b..9912cf8d22e9c 100644 --- a/api_docs/kbn_shared_ux_file_upload.mdx +++ b/api_docs/kbn_shared_ux_file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload title: "@kbn/shared-ux-file-upload" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-upload plugin -date: 2024-01-01 +date: 2024-01-03 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 a8a220f0e18eb..494f4af5b8330 100644 --- a/api_docs/kbn_shared_ux_file_util.mdx +++ b/api_docs/kbn_shared_ux_file_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util title: "@kbn/shared-ux-file-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-util plugin -date: 2024-01-01 +date: 2024-01-03 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 a7296a8e5ce91..132b156c677ba 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app title: "@kbn/shared-ux-link-redirect-app" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app plugin -date: 2024-01-01 +date: 2024-01-03 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 3bb92a066b121..4f0a1d6d682a2 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 5a1f923895120..564a99f44d3af 100644 --- a/api_docs/kbn_shared_ux_markdown.mdx +++ b/api_docs/kbn_shared_ux_markdown.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown title: "@kbn/shared-ux-markdown" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown plugin -date: 2024-01-01 +date: 2024-01-03 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 b59badf167bdb..14043b1af7ccd 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.mdx +++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks title: "@kbn/shared-ux-markdown-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 1932e19bcd02e..76ecc24e5c503 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2024-01-01 +date: 2024-01-03 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 9108f448b60aa..5952a742ad198 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 04cef2640b6c5..a19f29ae4197d 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2024-01-01 +date: 2024-01-03 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 d1bc6cb4e9a6b..6edab56b60236 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 260d94e94a1f0..6846a3f39744a 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2024-01-01 +date: 2024-01-03 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 727a975aed3d7..2a1d929f82bc2 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 24e261383654c..8f7d5e9972bed 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2024-01-01 +date: 2024-01-03 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 d7590f26e83ee..ccca99c9c473f 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2024-01-01 +date: 2024-01-03 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 a8d6c9298dc41..aa615696e5bca 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 29f37c497fe99..803059f6fa37b 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 cc986eddc79e0..0c13af1740585 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2024-01-01 +date: 2024-01-03 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 27297a9215300..cc38c174485a1 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2024-01-01 +date: 2024-01-03 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 6d720b027757b..2673bb590a21b 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 4ade754f6a9cd..68513b4bdc5bd 100644 --- a/api_docs/kbn_shared_ux_prompt_not_found.mdx +++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found title: "@kbn/shared-ux-prompt-not-found" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-not-found plugin -date: 2024-01-01 +date: 2024-01-03 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 6120b379670b9..a1921cc39f3ce 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2024-01-01 +date: 2024-01-03 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 02e7746f25eab..8d3c93253e39a 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2024-01-01 +date: 2024-01-03 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 67129e8756ffa..5b90814ed5685 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2024-01-01 +date: 2024-01-03 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 6d44a89190796..d69ac1205fe9d 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2024-01-01 +date: 2024-01-03 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 f2d447a8be247..4cb6047f567a5 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2024-01-01 +date: 2024-01-03 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 8cdc1382044c9..89dbd5e19d512 100644 --- a/api_docs/kbn_slo_schema.mdx +++ b/api_docs/kbn_slo_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema title: "@kbn/slo-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/slo-schema plugin -date: 2024-01-01 +date: 2024-01-03 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 f3092792e556f..dd6d1cd901524 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2024-01-01 +date: 2024-01-03 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 b70db19811752..2c8d82b3d13ce 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2024-01-01 +date: 2024-01-03 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 0c385091a506d..4dab60cc6a5b0 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2024-01-01 +date: 2024-01-03 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 3757afa017b67..915c6a4406be4 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2024-01-01 +date: 2024-01-03 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 fdc698587b7a4..c88538f066da9 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2024-01-01 +date: 2024-01-03 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 6b89e54b3359b..8a458402df9d3 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2024-01-01 +date: 2024-01-03 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 c81fcf4042cdd..80aa7c0b186fc 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2024-01-01 +date: 2024-01-03 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 c4bfd193d09cd..3d129388e8d9b 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2024-01-01 +date: 2024-01-03 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 93316014fab60..03bf2b4697f27 100644 --- a/api_docs/kbn_text_based_editor.mdx +++ b/api_docs/kbn_text_based_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-text-based-editor title: "@kbn/text-based-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/text-based-editor plugin -date: 2024-01-01 +date: 2024-01-03 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 7b7eda7a4e842..653a918f3428c 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index 28e4a557e6ece..4f57c9886f97c 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 38f212ba15d32..4ba0d12a8120d 100644 --- a/api_docs/kbn_ts_projects.mdx +++ b/api_docs/kbn_ts_projects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects title: "@kbn/ts-projects" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ts-projects plugin -date: 2024-01-01 +date: 2024-01-03 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 16e4f52ac8d72..e71fb6b97df1b 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2024-01-01 +date: 2024-01-03 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 cf33083cafe6d..a8c13d1fb6c78 100644 --- a/api_docs/kbn_ui_actions_browser.mdx +++ b/api_docs/kbn_ui_actions_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser title: "@kbn/ui-actions-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-actions-browser plugin -date: 2024-01-01 +date: 2024-01-03 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 51c894e4d3968..04c5a4630b4e1 100644 --- a/api_docs/kbn_ui_shared_deps_src.mdx +++ b/api_docs/kbn_ui_shared_deps_src.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src title: "@kbn/ui-shared-deps-src" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-shared-deps-src plugin -date: 2024-01-01 +date: 2024-01-03 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 de5657353c5e2..05444f50727f5 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index bb302bf78daec..27c0944ded0b7 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index 1e2944b919e91..2cd19b347d1ee 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index afa3979264987..941aa79576c78 100644 --- a/api_docs/kbn_unified_field_list.mdx +++ b/api_docs/kbn_unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list title: "@kbn/unified-field-list" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-field-list plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index 7ba280c0d5562..54cf31b1cfa91 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx index 5a9c6b3bbe991..92172339b303d 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: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index 9b9249f8958de..f1a231f2edd3b 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index d2382d8c0a16a..61c7ded7ee365 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index d01cabe215e19..3c1c971dc9643 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2024-01-01 +date: 2024-01-03 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 59973ee478f7f..fe8b3fa0b2eae 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2024-01-01 +date: 2024-01-03 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 65273d87f7928..870a70ccc59a0 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2024-01-01 +date: 2024-01-03 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 ca79f8f0524a1..4457643c9d519 100644 --- a/api_docs/kbn_visualization_ui_components.mdx +++ b/api_docs/kbn_visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components title: "@kbn/visualization-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-ui-components plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_visualization_utils.mdx b/api_docs/kbn_visualization_utils.mdx index 34781f2d8f4d2..83120f04b39b1 100644 --- a/api_docs/kbn_visualization_utils.mdx +++ b/api_docs/kbn_visualization_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-utils title: "@kbn/visualization-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-utils plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-utils'] --- import kbnVisualizationUtilsObj from './kbn_visualization_utils.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index 95f5f8428e4bb..068712904f1f3 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index b9ab418fd0089..5bc2ac9d9b274 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index 8515dab0feae6..30d93558b2aab 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 9381f293b0050..900c0050bccc1 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 23e4bd42251fc..f062f7a1978ef 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.devdocs.json b/api_docs/kibana_utils.devdocs.json index 936391892cf5b..5e1c4d861f7cf 100644 --- a/api_docs/kibana_utils.devdocs.json +++ b/api_docs/kibana_utils.devdocs.json @@ -6941,57 +6941,6 @@ "initialIsOpen": false } ], - "setup": { - "parentPluginId": "kibanaUtils", - "id": "def-public.KibanaUtilsPublicSetup", - "type": "Interface", - "tags": [], - "label": "KibanaUtilsPublicSetup", - "description": [], - "path": "src/plugins/kibana_utils/public/plugin.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "kibanaUtils", - "id": "def-public.KibanaUtilsPublicSetup.setVersion", - "type": "Function", - "tags": [], - "label": "setVersion", - "description": [], - "signature": [ - "(history: Pick<", - "History", - ", \"replace\" | \"location\">) => void" - ], - "path": "src/plugins/kibana_utils/public/plugin.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "kibanaUtils", - "id": "def-public.KibanaUtilsPublicSetup.setVersion.$1", - "type": "Object", - "tags": [], - "label": "history", - "description": [], - "signature": [ - "Pick<", - "History", - ", \"replace\" | \"location\">" - ], - "path": "src/plugins/kibana_utils/public/plugin.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "lifecycle": "setup", - "initialIsOpen": true - }, "start": { "parentPluginId": "kibanaUtils", "id": "def-public.KibanaUtilsPublicStart", diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index eb9eae5210ef2..51a97b2547ba7 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; @@ -21,13 +21,10 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 611 | 3 | 418 | 9 | +| 609 | 3 | 416 | 9 | ## Client -### Setup - - ### Start diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index 818b248dcfe4d..ddd27527049c5 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the kubernetesSecurity plugin -date: 2024-01-01 +date: 2024-01-03 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 61d574c6e2c06..77b173434d849 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2024-01-01 +date: 2024-01-03 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 ac1eaa02adda9..dd62dc6469ab8 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2024-01-01 +date: 2024-01-03 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 4017a420ba3c6..22ba90cd24a27 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 6f3c86b5226ae..cc0934bb97f61 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index 5f7f79d0ad1dc..cd5906c590ddc 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 7f02ef1c2f781..459851d88d76a 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx index 3f2d742c3092b..0f86843637c18 100644 --- a/api_docs/log_explorer.mdx +++ b/api_docs/log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logExplorer title: "logExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logExplorer plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer'] --- import logExplorerObj from './log_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 62b82c294fbec..8b6055b3dc3f0 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2024-01-01 +date: 2024-01-03 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 c51306d5b0cd6..21d1f4112a115 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2024-01-01 +date: 2024-01-03 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 f88c896c2e932..b38008b55d907 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2024-01-01 +date: 2024-01-03 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 80734c8adde98..11ea4193bf725 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index ca1fb4498cad3..0c4cfa7f55142 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index a6e65abf0f2b1..bbb4846ee65ec 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index a88c4975937c0..80aac90bc6263 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 7dfef3b18b6a7..0b77040cf831e 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2024-01-01 +date: 2024-01-03 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 151955aab91e0..4e375924fb996 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2024-01-01 +date: 2024-01-03 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 1b2e123ff2ced..53f14005f29da 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2024-01-01 +date: 2024-01-03 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 283e6c74ba398..1a184b5a94b66 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index 76f0c4370a70d..08b58bf9ae33f 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 231318742b841..502d1e6ac2292 100644 --- a/api_docs/notifications.mdx +++ b/api_docs/notifications.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications title: "notifications" image: https://source.unsplash.com/400x175/?github description: API docs for the notifications plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 40f637033d550..d468bbe94eafc 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.devdocs.json b/api_docs/observability_a_i_assistant.devdocs.json index 9d3e36465047c..9f6c3916d3271 100644 --- a/api_docs/observability_a_i_assistant.devdocs.json +++ b/api_docs/observability_a_i_assistant.devdocs.json @@ -799,7 +799,7 @@ "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; }; }; }) => Promise<", "Readable", " | ", - "CreateChatCompletionResponse", + "ChatCompletion", ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", "; \"POST /internal/observability_ai_assistant/chat\": { endpoint: \"POST /internal/observability_ai_assistant/chat\"; params?: ", @@ -865,7 +865,7 @@ "[]; connectorId: string; functions: { name: string; description: string; parameters: any; }[]; } & { functionCall?: string | undefined; }; } & { query?: { stream: boolean; } | undefined; }; }) => Promise<", "Readable", " | ", - "CreateChatCompletionResponse", + "ChatCompletion", ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", "; }, TEndpoint> & Omit & { signal: AbortSignal | null; }>) => Promise<", @@ -1305,7 +1305,7 @@ "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; }; }; }) => Promise<", "Readable", " | ", - "CreateChatCompletionResponse", + "ChatCompletion", ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", "; \"POST /internal/observability_ai_assistant/chat\": { endpoint: \"POST /internal/observability_ai_assistant/chat\"; params?: ", @@ -1371,7 +1371,7 @@ "[]; connectorId: string; functions: { name: string; description: string; parameters: any; }[]; } & { functionCall?: string | undefined; }; } & { query?: { stream: boolean; } | undefined; }; }) => Promise<", "Readable", " | ", - "CreateChatCompletionResponse", + "ChatCompletion", ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", "; }, TEndpoint>>" @@ -2051,7 +2051,7 @@ "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; }; }; }) => Promise<", "Readable", " | ", - "CreateChatCompletionResponse", + "ChatCompletion", ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", "; \"POST /internal/observability_ai_assistant/chat\": { endpoint: \"POST /internal/observability_ai_assistant/chat\"; params?: ", @@ -2117,7 +2117,7 @@ "[]; connectorId: string; functions: { name: string; description: string; parameters: any; }[]; } & { functionCall?: string | undefined; }; } & { query?: { stream: boolean; } | undefined; }; }) => Promise<", "Readable", " | ", - "CreateChatCompletionResponse", + "ChatCompletion", ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", "; }[TEndpoint] extends { endpoint: any; params?: any; handler: ({}: any) => Promise; } & ", @@ -2566,7 +2566,7 @@ "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; }; }; }) => Promise<", "Readable", " | ", - "CreateChatCompletionResponse", + "ChatCompletion", ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", "; \"POST /internal/observability_ai_assistant/chat\": { endpoint: \"POST /internal/observability_ai_assistant/chat\"; params?: ", @@ -2632,7 +2632,7 @@ "[]; connectorId: string; functions: { name: string; description: string; parameters: any; }[]; } & { functionCall?: string | undefined; }; } & { query?: { stream: boolean; } | undefined; }; }) => Promise<", "Readable", " | ", - "CreateChatCompletionResponse", + "ChatCompletion", ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", "; }[TEndpoint] extends { endpoint: any; params?: infer TRouteParamsRT | undefined; handler: ({}: any) => Promise; } & ", @@ -3217,7 +3217,7 @@ "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; }; }; }) => Promise<", "Readable", " | ", - "CreateChatCompletionResponse", + "ChatCompletion", ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", "; \"POST /internal/observability_ai_assistant/chat\": { endpoint: \"POST /internal/observability_ai_assistant/chat\"; params?: ", @@ -3283,7 +3283,7 @@ "[]; connectorId: string; functions: { name: string; description: string; parameters: any; }[]; } & { functionCall?: string | undefined; }; } & { query?: { stream: boolean; } | undefined; }; }) => Promise<", "Readable", " | ", - "CreateChatCompletionResponse", + "ChatCompletion", ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", "; }" diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index d8827d1632430..d7ce131b6a005 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_log_explorer.mdx b/api_docs/observability_log_explorer.mdx index 523a46f2ce2b2..9c960bc052bf9 100644 --- a/api_docs/observability_log_explorer.mdx +++ b/api_docs/observability_log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogExplorer title: "observabilityLogExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogExplorer plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogExplorer'] --- import observabilityLogExplorerObj from './observability_log_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 720a231fcfc06..0e5003d939247 100644 --- a/api_docs/observability_onboarding.mdx +++ b/api_docs/observability_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding title: "observabilityOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityOnboarding plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index 97b06513ee346..4f59ae57937f2 100644 --- a/api_docs/observability_shared.mdx +++ b/api_docs/observability_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared title: "observabilityShared" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityShared plugin -date: 2024-01-01 +date: 2024-01-03 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 a17aac67fe6b2..609775afeb479 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index 75399e23c209f..a5e6430fdf179 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 2b1345ebddfad..81175579f00cd 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -15,13 +15,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| -| 738 | 628 | 41 | +| 739 | 629 | 41 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 77972 | 234 | 66691 | 1695 | +| 78142 | 234 | 66861 | 1696 | ## Plugin Directory @@ -118,7 +118,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 6 | 0 | 6 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 163 | 0 | 129 | 3 | | kibanaUsageCollection | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | -| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 611 | 3 | 418 | 9 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 609 | 3 | 416 | 9 | | | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 5 | 0 | 5 | 1 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Visualization editor allowing to quickly and easily configure compelling visualizations to use on dashboards and canvas workpads. Exposes components to embed visualizations and link into the Lens editor from within other apps in Kibana. | 644 | 0 | 545 | 60 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 8 | 0 | 8 | 0 | @@ -491,6 +491,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 108 | 0 | 107 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 7 | 0 | 5 | 0 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 181 | 0 | 178 | 0 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 172 | 0 | 172 | 1 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 27 | 0 | 1 | 2 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 8 | 0 | 8 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 6 | 0 | 1 | 1 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 5bc9888d38c88..e56d71cb98bcc 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2024-01-01 +date: 2024-01-03 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 0d3b31cbecaae..f39051a371ff7 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index 9489999ccc376..d7f8672329881 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 1dfeb9676aaa0..b109b3446cecf 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2024-01-01 +date: 2024-01-03 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 240f53d604379..31a3da2b5ab6d 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2024-01-01 +date: 2024-01-03 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 07659171cfffc..cea802f9971f4 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2024-01-01 +date: 2024-01-03 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 a0f33fdfaa35c..b870959636a99 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2024-01-01 +date: 2024-01-03 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 349f5372c9de6..69eb6b0b86f3e 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2024-01-01 +date: 2024-01-03 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 e8913f9d3235e..6bb60e236065f 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index e4b2c16754518..e4f06dedc68c9 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 70bf201b45ccb..240f5379146d0 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 1230986cdbe7a..5f0850edfd8ba 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2024-01-01 +date: 2024-01-03 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 c72a45686069a..b8fd6f76fcc4a 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2024-01-01 +date: 2024-01-03 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 edd1a51288348..60ed1196eb3fc 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2024-01-01 +date: 2024-01-03 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 906bb382ea7b7..ab659d230c860 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2024-01-01 +date: 2024-01-03 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 aaf50282fa1ab..cfd2c82a6d31a 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index e391f5e25865d..4bf743a49f344 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.devdocs.json b/api_docs/security_solution.devdocs.json index c22d74cdd9d0e..c50901f256cad 100644 --- a/api_docs/security_solution.devdocs.json +++ b/api_docs/security_solution.devdocs.json @@ -114,7 +114,7 @@ "label": "experimentalFeatures", "description": [], "signature": [ - "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; }" ], "path": "x-pack/plugins/security_solution/public/plugin.tsx", "deprecated": false, @@ -568,7 +568,7 @@ "\nExperimental flag needed to enable the link" ], "signature": [ - "\"tGridEnabled\" | \"tGridEventRenderedViewEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"chartEmbeddablesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"alertsPreviewChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"insightsRelatedAlertsByProcessAncestry\" | \"extendedRuleExecutionLoggingEnabled\" | \"assistantStreamingEnabled\" | \"socTrendsEnabled\" | \"responseActionsEnabled\" | \"endpointResponseActionsEnabled\" | \"responseActionUploadEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"alertsPageChartsEnabled\" | \"alertTypeEnabled\" | \"expandableFlyoutInCreateRuleEnabled\" | \"alertsPageFiltersEnabled\" | \"assistantModelEvaluation\" | \"newUserDetailsFlyout\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"entityAnalyticsAssetCriticalityEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"jsonPrebuiltRulesDiffingEnabled\" | undefined" + "\"tGridEnabled\" | \"tGridEventRenderedViewEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"chartEmbeddablesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"alertsPreviewChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"insightsRelatedAlertsByProcessAncestry\" | \"extendedRuleExecutionLoggingEnabled\" | \"assistantStreamingEnabled\" | \"socTrendsEnabled\" | \"responseActionsEnabled\" | \"endpointResponseActionsEnabled\" | \"responseActionUploadEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"alertsPageChartsEnabled\" | \"alertTypeEnabled\" | \"expandableFlyoutInCreateRuleEnabled\" | \"alertsPageFiltersEnabled\" | \"assistantModelEvaluation\" | \"newUserDetailsFlyout\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"entityAnalyticsAssetCriticalityEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"jsonPrebuiltRulesDiffingEnabled\" | \"timelineEsqlTabDisabled\" | undefined" ], "path": "x-pack/plugins/security_solution/public/common/links/types.ts", "deprecated": false, @@ -648,7 +648,7 @@ "\nExperimental flag needed to disable the link. Opposite of experimentalKey" ], "signature": [ - "\"tGridEnabled\" | \"tGridEventRenderedViewEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"chartEmbeddablesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"alertsPreviewChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"insightsRelatedAlertsByProcessAncestry\" | \"extendedRuleExecutionLoggingEnabled\" | \"assistantStreamingEnabled\" | \"socTrendsEnabled\" | \"responseActionsEnabled\" | \"endpointResponseActionsEnabled\" | \"responseActionUploadEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"alertsPageChartsEnabled\" | \"alertTypeEnabled\" | \"expandableFlyoutInCreateRuleEnabled\" | \"alertsPageFiltersEnabled\" | \"assistantModelEvaluation\" | \"newUserDetailsFlyout\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"entityAnalyticsAssetCriticalityEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"jsonPrebuiltRulesDiffingEnabled\" | undefined" + "\"tGridEnabled\" | \"tGridEventRenderedViewEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"chartEmbeddablesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"alertsPreviewChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"insightsRelatedAlertsByProcessAncestry\" | \"extendedRuleExecutionLoggingEnabled\" | \"assistantStreamingEnabled\" | \"socTrendsEnabled\" | \"responseActionsEnabled\" | \"endpointResponseActionsEnabled\" | \"responseActionUploadEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"alertsPageChartsEnabled\" | \"alertTypeEnabled\" | \"expandableFlyoutInCreateRuleEnabled\" | \"alertsPageFiltersEnabled\" | \"assistantModelEvaluation\" | \"newUserDetailsFlyout\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"entityAnalyticsAssetCriticalityEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"jsonPrebuiltRulesDiffingEnabled\" | \"timelineEsqlTabDisabled\" | undefined" ], "path": "x-pack/plugins/security_solution/public/common/links/types.ts", "deprecated": false, @@ -1913,7 +1913,7 @@ "label": "experimentalFeatures", "description": [], "signature": [ - "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; }" ], "path": "x-pack/plugins/security_solution/public/types.ts", "deprecated": false, @@ -3018,7 +3018,7 @@ "\nThe security solution generic experimental features" ], "signature": [ - "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; }" ], "path": "x-pack/plugins/security_solution/server/plugin_contract.ts", "deprecated": false, @@ -3194,7 +3194,7 @@ "label": "ExperimentalFeatures", "description": [], "signature": [ - "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; }" ], "path": "x-pack/plugins/security_solution/common/experimental_features.ts", "deprecated": false, @@ -3243,7 +3243,7 @@ "\nA list of allowed values that can be used in `xpack.securitySolution.enableExperimental`.\nThis object is then used to validate and parse the value entered." ], "signature": [ - "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; }" ], "path": "x-pack/plugins/security_solution/common/experimental_features.ts", "deprecated": false, diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index cbdf000bd9bf9..5d631622d3c55 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index 7277d735a7163..496db05fd9caa 100644 --- a/api_docs/security_solution_ess.mdx +++ b/api_docs/security_solution_ess.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss title: "securitySolutionEss" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionEss plugin -date: 2024-01-01 +date: 2024-01-03 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 352c5ced1de15..29c98b16a0679 100644 --- a/api_docs/security_solution_serverless.mdx +++ b/api_docs/security_solution_serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless title: "securitySolutionServerless" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionServerless plugin -date: 2024-01-01 +date: 2024-01-03 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 0790d325fb864..59b23a3c31a25 100644 --- a/api_docs/serverless.mdx +++ b/api_docs/serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless title: "serverless" image: https://source.unsplash.com/400x175/?github description: API docs for the serverless plugin -date: 2024-01-01 +date: 2024-01-03 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 1ca94faf135c3..b351d1f0b1287 100644 --- a/api_docs/serverless_observability.mdx +++ b/api_docs/serverless_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability title: "serverlessObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessObservability plugin -date: 2024-01-01 +date: 2024-01-03 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 0d2c7733fe6f6..65a73bf283578 100644 --- a/api_docs/serverless_search.mdx +++ b/api_docs/serverless_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch title: "serverlessSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSearch plugin -date: 2024-01-01 +date: 2024-01-03 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 0384de23c946f..9957256613981 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2024-01-01 +date: 2024-01-03 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 7cf7a9867e5b7..8df6e5a837baa 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2024-01-01 +date: 2024-01-03 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 9c253773f3161..8a9b27fb11cbb 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2024-01-01 +date: 2024-01-03 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 1300d51ba0f18..e59ab271b2634 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2024-01-01 +date: 2024-01-03 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 f98bb4a7d1039..af43ca66522ed 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2024-01-01 +date: 2024-01-03 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 a244c5d1680c5..ae06061a2d8cb 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2024-01-01 +date: 2024-01-03 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 6abd8bd8cca58..500e303d69b67 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2024-01-01 +date: 2024-01-03 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 43bcbb79a95e4..0264fb525ecbd 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2024-01-01 +date: 2024-01-03 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 1ca2685f6694f..9575f4a0718ff 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2024-01-01 +date: 2024-01-03 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 add50e8aab38b..88a0e0ef99f32 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionXpack plugin -date: 2024-01-01 +date: 2024-01-03 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 83ada11544cf2..82c661cf3473b 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2024-01-01 +date: 2024-01-03 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 a711ff90c5d9f..927887f108372 100644 --- a/api_docs/text_based_languages.mdx +++ b/api_docs/text_based_languages.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/textBasedLanguages title: "textBasedLanguages" image: https://source.unsplash.com/400x175/?github description: API docs for the textBasedLanguages plugin -date: 2024-01-01 +date: 2024-01-03 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 3946de9fef409..fa99d8b38f8c6 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2024-01-01 +date: 2024-01-03 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 8d9af8ee52d09..05668cbb7ddd4 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2024-01-01 +date: 2024-01-03 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 60784adb0cb72..c04d00490bd4b 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index d8b4f3911c4c4..351e8d3a65a35 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 07fe409fc4150..7d24106350bb3 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 2ec68c19f2a64..2897f21dfafb7 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index 90b1656f5213a..70d55981c9fdb 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 2ac0e1c31f6c5..b841711c08667 100644 --- a/api_docs/unified_histogram.mdx +++ b/api_docs/unified_histogram.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram title: "unifiedHistogram" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedHistogram plugin -date: 2024-01-01 +date: 2024-01-03 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 e19c07bb183d5..890f5712ce2f7 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2024-01-01 +date: 2024-01-03 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 7d9d4a8f3f464..6014e6f7cb259 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2024-01-01 +date: 2024-01-03 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 82233f9515117..5089071b68843 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2024-01-01 +date: 2024-01-03 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 414aff7aadd3f..857b1c234e058 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2024-01-01 +date: 2024-01-03 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 b622fc4225d5c..898b58dc778f0 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2024-01-01 +date: 2024-01-03 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 cdd31753c3f0b..4242c83addcbd 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2024-01-01 +date: 2024-01-03 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 1a416fc3109ee..f32d6d222012f 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2024-01-01 +date: 2024-01-03 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 1551915dd9324..8240fbbe9d4da 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2024-01-01 +date: 2024-01-03 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 e726345dbaf5a..ea235c34b46b8 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2024-01-01 +date: 2024-01-03 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 fd6cb5a1c44d4..f9b3982af9cc7 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2024-01-01 +date: 2024-01-03 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 eeddd3b362c49..cf87397eb440d 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2024-01-01 +date: 2024-01-03 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 1e11f5decb098..d88e8087f2288 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2024-01-01 +date: 2024-01-03 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 6dc37b7c2927f..9208339d2cec7 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2024-01-01 +date: 2024-01-03 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 aa2e08bae34b2..de9e191a9a6ee 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2024-01-01 +date: 2024-01-03 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 d9a8ea6e0f1ee..9277efa317640 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2024-01-01 +date: 2024-01-03 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 e6d691ea9dd6e..123ecf53cf5e3 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2024-01-01 +date: 2024-01-03 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 b0e3c22aef17c..180108f0dc59c 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2024-01-01 +date: 2024-01-03 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 03040317d46ffd13da2a76b4a33c9724581236d7 Mon Sep 17 00:00:00 2001 From: Carlos Crespo Date: Wed, 3 Jan 2024 09:40:03 +0100 Subject: [PATCH 062/323] [Obs UX] Unskip preview_chart_error_count test (#173624) fixes https://github.com/elastic/kibana/issues/172769 ## Summary The error happens because the synthtrace data is removed or not created by the time the test case gets to run. Probably some race condition? To prevent that from happening again, I've changed the test setup and teardown to run before each test. https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/4665 https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/4669 --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../tests/alerts/preview_chart_error_count.spec.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/x-pack/test/apm_api_integration/tests/alerts/preview_chart_error_count.spec.ts b/x-pack/test/apm_api_integration/tests/alerts/preview_chart_error_count.spec.ts index acc7a406ebe40..0ba6426045492 100644 --- a/x-pack/test/apm_api_integration/tests/alerts/preview_chart_error_count.spec.ts +++ b/x-pack/test/apm_api_integration/tests/alerts/preview_chart_error_count.spec.ts @@ -68,15 +68,14 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); }); - // FLAKY: https://github.com/elastic/kibana/issues/172769 - registry.when.skip(`with data loaded`, { config: 'basic', archives: [] }, () => { + registry.when(`with data loaded`, { config: 'basic', archives: [] }, () => { describe('error_count', () => { - before(async () => { + beforeEach(async () => { await generateErrorData({ serviceName: 'synth-go', start, end, synthtraceEsClient }); await generateErrorData({ serviceName: 'synth-java', start, end, synthtraceEsClient }); }); - after(() => synthtraceEsClient.clean()); + afterEach(() => synthtraceEsClient.clean()); it('with data', async () => { const options = getOptions(); From c44ae67e2005e60c9bd28c655ae82f0eca29313f Mon Sep 17 00:00:00 2001 From: Carlos Crespo Date: Wed, 3 Jan 2024 09:40:23 +0100 Subject: [PATCH 063/323] [Obs UX] Unskip APM Service Inventory Journey (#173510) fixes https://github.com/elastic/kibana/issues/172757 ## Summary I'm not sure why the error happened, but I ran it several times on my local machine with the latest main version and it works. My best guess is that during a short period, the APM package with the latest v8.13.0-SNAPSHOT version was not available. https://buildkite.com/elastic/kibana-single-user-performance/builds/12163#018c7d05-a7bb-4117-a0c7-0fabc20e7014 --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- x-pack/performance/journeys/apm_service_inventory.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/x-pack/performance/journeys/apm_service_inventory.ts b/x-pack/performance/journeys/apm_service_inventory.ts index 84f2518575df8..cbef53858eea6 100644 --- a/x-pack/performance/journeys/apm_service_inventory.ts +++ b/x-pack/performance/journeys/apm_service_inventory.ts @@ -11,8 +11,6 @@ import { SynthtraceClient } from '../services/synthtrace'; import { generateData } from '../synthtrace_data/apm_data'; export const journey = new Journey({ - // FAILING VERSION BUMP: https://github.com/elastic/kibana/issues/172757 - skipped: true, beforeSteps: async ({ kbnUrl, log, auth, es }) => { // Install APM Package const synthClient = new SynthtraceClient({ From d56e22101b1e09787b9030419292aaef3c351ce7 Mon Sep 17 00:00:00 2001 From: Shahzad Date: Wed, 3 Jan 2024 09:40:37 +0100 Subject: [PATCH 064/323] [SLO Form] Refactor to use kibana data view component (#173513) ## Summary Fixes https://github.com/elastic/kibana/issues/171687 Refactor to use kibana data view component !! image user can also save a new data or use ad-hoc data view image This also avoid so many unnecessary requests being loaded, notice the difference almost avoid 15 extra requests ### After image ### Before image --- .../use_fetch_data_views.ts | 6 +- .../__storybook_mocks__/use_fetch_indices.ts | 24 -- .../public/hooks/use_create_data_view.ts | 1 + .../public/hooks/use_fetch_data_views.ts | 16 +- .../common/index_field_selector.tsx | 6 +- .../components/common/query_builder.tsx | 9 +- .../custom_common/index_selection.tsx | 209 ++++++++---------- .../custom_kql_indicator_type_form.tsx | 11 +- .../public/pages/slo_edit/slo_edit.test.tsx | 6 +- .../translations/translations/fr-FR.json | 3 - .../translations/translations/ja-JP.json | 3 - .../translations/translations/zh-CN.json | 3 - 12 files changed, 123 insertions(+), 174 deletions(-) delete mode 100644 x-pack/plugins/observability/public/hooks/__storybook_mocks__/use_fetch_indices.ts diff --git a/x-pack/plugins/observability/public/hooks/__storybook_mocks__/use_fetch_data_views.ts b/x-pack/plugins/observability/public/hooks/__storybook_mocks__/use_fetch_data_views.ts index 5affe18c75d03..238d03c2a650f 100644 --- a/x-pack/plugins/observability/public/hooks/__storybook_mocks__/use_fetch_data_views.ts +++ b/x-pack/plugins/observability/public/hooks/__storybook_mocks__/use_fetch_data_views.ts @@ -5,7 +5,6 @@ * 2.0. */ -import { DataView } from '@kbn/data-views-plugin/public'; import { UseFetchDataViewsResponse } from '../use_fetch_data_views'; export const useFetchDataViews = (): UseFetchDataViewsResponse => { @@ -16,10 +15,9 @@ export const useFetchDataViews = (): UseFetchDataViewsResponse => { data: Array(20) .fill(0) .map((_, i) => ({ + id: `dataview-${i}`, title: `dataview-${i}`, type: 'foo', - getName: () => `dataview-${i}`, - getIndexPattern: () => `.index-pattern-dataview-${i}`, - })) as DataView[], + })), }; }; diff --git a/x-pack/plugins/observability/public/hooks/__storybook_mocks__/use_fetch_indices.ts b/x-pack/plugins/observability/public/hooks/__storybook_mocks__/use_fetch_indices.ts deleted file mode 100644 index a709dea0600f8..0000000000000 --- a/x-pack/plugins/observability/public/hooks/__storybook_mocks__/use_fetch_indices.ts +++ /dev/null @@ -1,24 +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 { Index, UseFetchIndicesResponse } from '../use_fetch_indices'; - -export const useFetchIndices = (): UseFetchIndicesResponse => { - return { - isLoading: false, - isError: false, - isSuccess: true, - data: [ - ...Array(10) - .fill(0) - .map((_, i) => `.index-${i}`), - ...Array(10) - .fill(0) - .map((_, i) => `.some-other-index-${i}`), - ] as Index[], - }; -}; diff --git a/x-pack/plugins/observability/public/hooks/use_create_data_view.ts b/x-pack/plugins/observability/public/hooks/use_create_data_view.ts index e2257ef71ab06..128f012094793 100644 --- a/x-pack/plugins/observability/public/hooks/use_create_data_view.ts +++ b/x-pack/plugins/observability/public/hooks/use_create_data_view.ts @@ -22,6 +22,7 @@ export function useCreateDataView({ indexPatternString }: UseCreateDataViewProps useEffect(() => { const createDataView = () => dataViews.create({ + id: `${indexPatternString}-id`, title: indexPatternString, allowNoIndex: true, }); diff --git a/x-pack/plugins/observability/public/hooks/use_fetch_data_views.ts b/x-pack/plugins/observability/public/hooks/use_fetch_data_views.ts index bff276181e95f..2d7602431266f 100644 --- a/x-pack/plugins/observability/public/hooks/use_fetch_data_views.ts +++ b/x-pack/plugins/observability/public/hooks/use_fetch_data_views.ts @@ -6,29 +6,23 @@ */ import { useQuery } from '@tanstack/react-query'; -import { DataView } from '@kbn/data-views-plugin/public'; +import { DataViewListItem } from '@kbn/data-views-plugin/public'; import { useKibana } from '../utils/kibana_react'; export interface UseFetchDataViewsResponse { isLoading: boolean; isSuccess: boolean; isError: boolean; - data: DataView[] | undefined; + data: DataViewListItem[] | undefined; } -interface Params { - name?: string; - size?: number; -} - -export function useFetchDataViews({ name = '', size = 10 }: Params): UseFetchDataViewsResponse { +export function useFetchDataViews(): UseFetchDataViewsResponse { const { dataViews } = useKibana().services; - const search = name.endsWith('*') ? name : `${name}*`; const { isLoading, isError, isSuccess, data } = useQuery({ - queryKey: ['fetchDataViews', search], + queryKey: ['fetchDataViewsList'], queryFn: async () => { - return dataViews.find(search, size); + return dataViews.getIdsWithTitle(); }, retry: false, keepPreviousData: true, diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/common/index_field_selector.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/common/index_field_selector.tsx index 0a07515a8915f..46d4af15de628 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/common/index_field_selector.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/common/index_field_selector.tsx @@ -6,16 +6,16 @@ */ import { EuiComboBox, EuiComboBoxOptionOption, EuiFlexItem, EuiFormRow } from '@elastic/eui'; -import { FieldSpec } from '@kbn/data-views-plugin/common'; -import React, { useEffect, useState } from 'react'; +import React, { useEffect, useState, ReactNode } from 'react'; import { Controller, useFormContext } from 'react-hook-form'; +import { FieldSpec } from '@kbn/data-views-plugin/common'; import { createOptionsFromFields, Option } from '../../helpers/create_options'; import { CreateSLOForm } from '../../types'; interface Props { indexFields: FieldSpec[]; name: 'groupBy' | 'indicator.params.timestampField'; - label: React.ReactNode | string; + label: ReactNode | string; placeholder: string; isDisabled: boolean; isLoading: boolean; 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 954b89991f528..ab60a66daa2fd 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 @@ -32,11 +32,14 @@ export function QueryBuilder({ required, tooltip, }: Props) { - const { data, dataViews, docLinks, http, notifications, storage, uiSettings, unifiedSearch } = + const { data, docLinks, dataViews, http, notifications, storage, uiSettings, unifiedSearch } = useKibana().services; const { control, getFieldState } = useFormContext(); - const { dataView } = useCreateDataView({ indexPatternString }); + + const { dataView } = useCreateDataView({ + indexPatternString, + }); return ( ; -} - export function IndexSelection() { - const { control, getFieldState } = useFormContext(); - const [searchValue, setSearchValue] = useState(''); + const { control, getFieldState, setValue, watch } = useFormContext(); + const { dataViews: dataViewsService } = useKibana().services; - const { isLoading: isIndicesLoading, data: indices = [] } = useFetchIndices({ - search: searchValue, - }); - const { isLoading: isDataViewsLoading, data: dataViews = [] } = useFetchDataViews({ - name: searchValue, - }); + const { isLoading: isDataViewsLoading, data: dataViews = [] } = useFetchDataViews(); - const options: Option[] = []; - if (!isDataViewsLoading && dataViews.length > 0) { - options.push(createDataViewsOption(dataViews)); - } - if (!isIndicesLoading && !!searchValue) { - options.push(createIndexPatternOption(searchValue, indices)); - } + const { dataViewEditor } = useKibana().services; + + const [adHocDataViews, setAdHocDataViews] = useState([]); + + const currentIndexPattern = watch('indicator.params.index'); - const onSearchChange = debounce((value: string) => setSearchValue(value), 300); + useEffect(() => { + if (!isDataViewsLoading) { + const missingAdHocDataView = + dataViews.find((dataView) => dataView.title === currentIndexPattern) || + adHocDataViews.find((dataView) => dataView.getIndexPattern() === currentIndexPattern); - const placeholder = i18n.translate('xpack.observability.slo.sloEdit.indexSelection.placeholder', { - defaultMessage: 'Select an index pattern', - }); + if (!missingAdHocDataView && currentIndexPattern) { + async function loadMissingDataView() { + const dataView = await dataViewsService.create( + { + title: currentIndexPattern, + allowNoIndex: true, + }, + true + ); + if (dataView.getIndexPattern() === currentIndexPattern) { + setAdHocDataViews((prev) => [...prev, dataView]); + } + } + + loadMissingDataView(); + } + } + }, [adHocDataViews, currentIndexPattern, dataViews, dataViewsService, isDataViewsLoading]); + + const getDataViewPatternById = (id?: string) => { + return ( + dataViews.find((dataView) => dataView.id === id)?.title || + adHocDataViews.find((dataView) => dataView.id === id)?.getIndexPattern() + ); + }; + + const getDataViewIdByIndexPattern = (indexPattern: string) => { + return ( + dataViews.find((dataView) => dataView.title === indexPattern) || + adHocDataViews.find((dataView) => dataView.getIndexPattern() === indexPattern) + ); + }; return ( - + ( - { - if (selected.length) { - return field.onChange(selected[0].value); - } - - field.onChange(''); + { + field.onChange(getDataViewPatternById(newId)); + dataViewsService.get(newId).then((dataView) => { + if (dataView.timeFieldName) { + setValue('indicator.params.timestampField', dataView.timeFieldName); + } + }); + }} + currentDataViewId={getDataViewIdByIndexPattern(field.value)?.id} + onDataViewCreated={() => { + dataViewEditor.openEditor({ + allowAdHocDataView: true, + onSave: (dataView: DataView) => { + if (!dataView.isPersisted()) { + setAdHocDataViews([...adHocDataViews, dataView]); + field.onChange(dataView.getIndexPattern()); + } else { + field.onChange(getDataViewPatternById(dataView.id)); + } + if (dataView.timeFieldName) { + setValue('indicator.params.timestampField', dataView.timeFieldName); + } + }, + }); }} - options={options} - onSearchChange={onSearchChange} - selectedOptions={ - !!field.value - ? [ - { - value: field.value, - label: field.value, - 'data-test-subj': 'indexSelectionSelectedValue', - }, - ] - : [] - } - singleSelection /> )} /> @@ -99,50 +116,16 @@ export function IndexSelection() { ); } -function createDataViewLabel(dataView: DataView) { - return `${dataView.getName()} (${dataView.getIndexPattern()})`; -} - -function createDataViewsOption(dataViews: DataView[]): Option { - return { - label: i18n.translate('xpack.observability.slo.sloEdit.indexSelection.dataViewOptionsLabel', { - defaultMessage: 'Select an index pattern from an existing Data View', - }), - options: dataViews - .map((view) => ({ - label: createDataViewLabel(view), - value: view.getIndexPattern(), - })) - .sort((a, b) => String(a.label).localeCompare(b.label)), - }; -} - -function createIndexPatternOption(searchValue: string, indices: string[]): Option { - const indexPattern = searchValue.endsWith('*') ? searchValue : `${searchValue}*`; - const hasMatchingIndices = indices.length > 0; +const SELECT_DATA_VIEW = i18n.translate( + 'xpack.observability.slo.sloEdit.customKql.dataViewSelection.label', + { + defaultMessage: 'Select a Data view', + } +); - return { - label: i18n.translate( - 'xpack.observability.slo.sloEdit.customKql.indexSelection.indexPatternLabel', - { defaultMessage: 'Use the index pattern' } - ), - options: [ - { - value: indexPattern, - label: hasMatchingIndices - ? i18n.translate( - 'xpack.observability.slo.sloEdit.customKql.indexSelection.indexPatternFoundLabel', - { - defaultMessage: - '{searchPattern} (match {num, plural, one {# index} other {# indices}})', - values: { searchPattern: indexPattern, num: indices.length }, - } - ) - : i18n.translate( - 'xpack.observability.slo.sloEdit.indexSelection.indexPatternNoMatchLabel', - { defaultMessage: '{searchPattern}', values: { searchPattern: indexPattern } } - ), - }, - ], - }; -} +const INDEX_LABEL = i18n.translate( + 'xpack.observability.slo.sloEdit.customKql.indexSelection.label', + { + defaultMessage: 'Index', + } +); 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 42130cf204df6..5f528d117bbb4 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 @@ -10,8 +10,8 @@ import { i18n } from '@kbn/i18n'; import { ALL_VALUE } from '@kbn/slo-schema/src/schema/common'; import React from 'react'; import { useFormContext } from 'react-hook-form'; +import { useCreateDataView } from '../../../../hooks/use_create_data_view'; import { useFetchGroupByCardinality } from '../../../../hooks/slo/use_fetch_group_by_cardinality'; -import { useFetchIndexPatternFields } from '../../../../hooks/slo/use_fetch_index_pattern_fields'; import { CreateSLOForm } from '../../types'; import { DataPreviewChart } from '../common/data_preview_chart'; import { IndexFieldSelector } from '../common/index_field_selector'; @@ -24,10 +24,11 @@ export function CustomKqlIndicatorTypeForm() { const timestampField = watch('indicator.params.timestampField'); const groupByField = watch('groupBy'); - const { isLoading: isIndexFieldsLoading, data: indexFields = [] } = - useFetchIndexPatternFields(index); - const timestampFields = indexFields.filter((field) => field.type === 'date'); - const groupByFields = indexFields.filter((field) => field.aggregatable); + const { dataView, loading: isIndexFieldsLoading } = useCreateDataView({ + indexPatternString: index, + }); + const timestampFields = dataView?.fields?.filter((field) => field.type === 'date') ?? []; + const groupByFields = dataView?.fields?.filter((field) => field.aggregatable) ?? []; const { isLoading: isGroupByCardinalityLoading, data: groupByCardinality } = useFetchGroupByCardinality(index, timestampField, groupByField); diff --git a/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx b/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx index 553969637129d..3eca039382b35 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/slo_edit.test.tsx @@ -82,10 +82,13 @@ const mockKibana = () => { dataViews: { find: jest.fn().mockReturnValue([]), get: jest.fn().mockReturnValue([]), + getDefault: jest.fn(), }, }, dataViews: { - create: jest.fn().mockResolvedValue(42), + create: jest.fn().mockResolvedValue({ + getIndexPattern: jest.fn().mockReturnValue('some-index'), + }), }, docLinks: { links: { @@ -110,7 +113,6 @@ const mockKibana = () => { triggersActionsUi: { getAddRuleFlyout: jest .fn() - .mockReturnValue(
Add Rule Flyout
), }, uiSettings: { diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 14a9f8257d1c6..1996568bbbb47 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -28787,7 +28787,6 @@ "xpack.observability.slo.sloDetails.overview.rollingTimeWindow": "{duration} en cours", "xpack.observability.slo.sloDetails.overview.timeslicesBudgetingMethodDetails": "{duration} sections, {target} cible", "xpack.observability.slo.sloDetails.sliHistoryChartPanel.duration": "{duration}", - "xpack.observability.slo.sloEdit.customKql.indexSelection.indexPatternFoundLabel": "{searchPattern} (correspond à {num, plural, one {# index} many {# index} other {# index}})", "xpack.observability.slo.sloEdit.rollingTimeWindow.days": "{number} jours", "xpack.observability.slo.update.errorNotification": "Un problème est survenu lors de la mise à jour de {name}", "xpack.observability.slo.update.successNotification": "Mise à jour réussie de {name}", @@ -29250,8 +29249,6 @@ "xpack.observability.slo.sloEdit.createAlert.ruleName": "Règle d'alerte de taux d'avancement du SLO", "xpack.observability.slo.sloEdit.createAlert.title": "Créer", "xpack.observability.slo.sloEdit.createSloButton": "Créer un SLO", - "xpack.observability.slo.sloEdit.customKql.indexSelection.helpText": "Utilisez le caractère * pour élargir votre recherche.", - "xpack.observability.slo.sloEdit.customKql.indexSelection.indexPatternLabel": "Utiliser le modèle d'indexation", "xpack.observability.slo.sloEdit.customKql.indexSelection.label": "Index", "xpack.observability.slo.sloEdit.dataPreviewChart.errorMessage": "Les paramètres d'indicateur actuels ne sont pas valides", "xpack.observability.slo.sloEdit.dataPreviewChart.explanationMessage": "Remplir les champs d'indicateur pour visualiser les indicateurs actuels", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 5adebd5547e3f..376f095421c63 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -28787,7 +28787,6 @@ "xpack.observability.slo.sloDetails.overview.rollingTimeWindow": "{duration}ローリング", "xpack.observability.slo.sloDetails.overview.timeslicesBudgetingMethodDetails": "{duration}スライス、{target}ターゲット", "xpack.observability.slo.sloDetails.sliHistoryChartPanel.duration": "過去{duration}", - "xpack.observability.slo.sloEdit.customKql.indexSelection.indexPatternFoundLabel": "{searchPattern}({num, plural, other {#個のインデックス}}と一致)", "xpack.observability.slo.sloEdit.rollingTimeWindow.days": "{number}日", "xpack.observability.slo.update.errorNotification": "{name}の更新中にエラーが発生しました", "xpack.observability.slo.update.successNotification": "正常に{name}を更新しました", @@ -29250,8 +29249,6 @@ "xpack.observability.slo.sloEdit.createAlert.ruleName": "SLOバーンレートアラートルール", "xpack.observability.slo.sloEdit.createAlert.title": "作成", "xpack.observability.slo.sloEdit.createSloButton": "SLOの作成", - "xpack.observability.slo.sloEdit.customKql.indexSelection.helpText": "* で検索クエリの範囲を広げます。", - "xpack.observability.slo.sloEdit.customKql.indexSelection.indexPatternLabel": "インデックスパターンを使用", "xpack.observability.slo.sloEdit.customKql.indexSelection.label": "インデックス", "xpack.observability.slo.sloEdit.dataPreviewChart.errorMessage": "現在のインジケーター設定は無効です", "xpack.observability.slo.sloEdit.dataPreviewChart.explanationMessage": "インジケーターフィールドに入力すると、現在のメトリックが可視化されます。", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 4c063a0848db7..485ca11b4fbfc 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -28771,7 +28771,6 @@ "xpack.observability.slo.sloDetails.overview.rollingTimeWindow": "{duration} 滚动", "xpack.observability.slo.sloDetails.overview.timeslicesBudgetingMethodDetails": "{duration} 切片,{target} 目标", "xpack.observability.slo.sloDetails.sliHistoryChartPanel.duration": "过去 {duration}", - "xpack.observability.slo.sloEdit.customKql.indexSelection.indexPatternFoundLabel": "{searchPattern}(匹配 {num, plural, other {# 个索引}})", "xpack.observability.slo.sloEdit.rollingTimeWindow.days": "{number} 天", "xpack.observability.slo.update.errorNotification": "更新 {name} 时出现问题", "xpack.observability.slo.update.successNotification": "成功更新 {name}", @@ -29234,8 +29233,6 @@ "xpack.observability.slo.sloEdit.createAlert.ruleName": "SLO 消耗速度告警规则", "xpack.observability.slo.sloEdit.createAlert.title": "创建", "xpack.observability.slo.sloEdit.createSloButton": "创建 SLO", - "xpack.observability.slo.sloEdit.customKql.indexSelection.helpText": "使用 * 可扩大您的查询范围。", - "xpack.observability.slo.sloEdit.customKql.indexSelection.indexPatternLabel": "使用索引模式", "xpack.observability.slo.sloEdit.customKql.indexSelection.label": "索引", "xpack.observability.slo.sloEdit.dataPreviewChart.errorMessage": "当前指标设置无效", "xpack.observability.slo.sloEdit.dataPreviewChart.explanationMessage": "填写指标字段以查看当前指标的可视化", From 7850e3ed86e22f564c5dbf1af11c3a5f7fa9d13b Mon Sep 17 00:00:00 2001 From: Elastic Machine Date: Wed, 3 Jan 2024 19:21:17 +1030 Subject: [PATCH 065/323] [main] Sync bundled packages with Package Storage (#174115) Automated by https://buildkite.com/elastic/package-storage-infra-kibana-discover-release-branches/builds/207 --- fleet_packages.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/fleet_packages.json b/fleet_packages.json index 5e2f76b1293e0..0a9a4546e8750 100644 --- a/fleet_packages.json +++ b/fleet_packages.json @@ -24,21 +24,21 @@ [ { "name": "apm", - "version": "8.12.0-preview-1696560930", + "version": "8.13.0-preview-1701948405", "forceAlignStackVersion": true, "allowSyncToPrerelease": true }, { "name": "elastic_agent", - "version": "1.16.0" + "version": "1.18.0" }, { "name": "endpoint", - "version": "8.11.0" + "version": "8.11.1" }, { "name": "fleet_server", - "version": "1.4.0" + "version": "1.5.0" }, { "name": "profiler_symbolizer", @@ -52,10 +52,10 @@ }, { "name": "synthetics", - "version": "1.1.0" + "version": "1.1.1" }, { "name": "security_detection_engine", - "version": "8.11.2" + "version": "8.12.1" } ] \ No newline at end of file From 50a693011656abe4ee84153bbd15fd0ca00be055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cau=C3=AA=20Marcondes?= <55978943+cauemarcondes@users.noreply.github.com> Date: Wed, 3 Jan 2024 09:18:54 +0000 Subject: [PATCH 066/323] [Profiling] Stack traces embeddable (#173905) Adding Stack traces Threads to the Infra plugin Screenshot 2023-12-27 at 14 28 50 Error: Screenshot 2024-01-02 at 10 08 22 Empty: Screenshot 2024-01-02 at 10 11 01 --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../tabs/profiling/profiling.tsx | 13 ++ .../tabs/profiling/profiling_links.tsx | 10 +- .../asset_details/tabs/profiling/threads.tsx | 58 ++++++ .../embeddables/embeddable_flamegraph.tsx | 8 +- .../embeddables/embeddable_functions.tsx | 8 +- .../embeddables/embeddable_stack_traces.tsx | 24 +++ .../components/profiling/embeddables/index.ts | 4 + .../embeddables/profiling_embeddable.tsx | 25 +-- .../observability_shared/public/index.ts | 2 + .../locators/profiling/stacktraces_locator.ts | 11 +- x-pack/plugins/profiling/common/topn.ts | 51 +++--- .../public/components/chart_grid.tsx | 50 +---- .../public/components/stack_traces/index.tsx | 173 ++++++++++++++++++ .../components/stacked_bar_chart/index.tsx | 7 +- .../profiling/public/components/subchart.tsx | 36 +--- .../public/embeddables/empty_data_prompt.tsx | 38 ++++ .../public/embeddables/error_prompt.tsx | 35 ++++ .../embeddables/register_embeddables.ts | 6 + .../stack_traces/embeddable_stack_traces.tsx | 57 ++++++ .../embeddable_stack_traces_factory.ts | 47 +++++ .../embeddables/stack_traces/stack_traces.tsx | 66 +++++++ .../public/views/stack_traces_view/index.tsx | 163 +++++------------ 22 files changed, 644 insertions(+), 248 deletions(-) create mode 100644 x-pack/plugins/infra/public/components/asset_details/tabs/profiling/threads.tsx create mode 100644 x-pack/plugins/observability_shared/public/components/profiling/embeddables/embeddable_stack_traces.tsx create mode 100644 x-pack/plugins/profiling/public/components/stack_traces/index.tsx create mode 100644 x-pack/plugins/profiling/public/embeddables/empty_data_prompt.tsx create mode 100644 x-pack/plugins/profiling/public/embeddables/error_prompt.tsx create mode 100644 x-pack/plugins/profiling/public/embeddables/stack_traces/embeddable_stack_traces.tsx create mode 100644 x-pack/plugins/profiling/public/embeddables/stack_traces/embeddable_stack_traces_factory.ts create mode 100644 x-pack/plugins/profiling/public/embeddables/stack_traces/stack_traces.tsx diff --git a/x-pack/plugins/infra/public/components/asset_details/tabs/profiling/profiling.tsx b/x-pack/plugins/infra/public/components/asset_details/tabs/profiling/profiling.tsx index 8f29597326198..5e34f0ca5027e 100644 --- a/x-pack/plugins/infra/public/components/asset_details/tabs/profiling/profiling.tsx +++ b/x-pack/plugins/infra/public/components/asset_details/tabs/profiling/profiling.tsx @@ -18,6 +18,7 @@ import { useProfilingStatusData } from '../../hooks/use_profiling_status_data'; import { useTabSwitcherContext } from '../../hooks/use_tab_switcher'; import { ContentTabIds } from '../../types'; import { ErrorPrompt } from './error_prompt'; +import { Threads } from './threads'; export function Profiling() { const { activeTabId } = useTabSwitcherContext(); @@ -50,6 +51,18 @@ export function Profiling() { ), }, + { + id: 'threads', + name: i18n.translate('xpack.infra.tabs.profiling.threadsTabName', { + defaultMessage: 'Threads', + }), + content: ( + <> + + + + ), + }, ]; if (loading) { diff --git a/x-pack/plugins/infra/public/components/asset_details/tabs/profiling/profiling_links.tsx b/x-pack/plugins/infra/public/components/asset_details/tabs/profiling/profiling_links.tsx index e0240ed58086e..4922ce0eafea4 100644 --- a/x-pack/plugins/infra/public/components/asset_details/tabs/profiling/profiling_links.tsx +++ b/x-pack/plugins/infra/public/components/asset_details/tabs/profiling/profiling_links.tsx @@ -10,6 +10,7 @@ import { i18n } from '@kbn/i18n'; import { EuiFlexGroup, EuiFlexItem, EuiLink } from '@elastic/eui'; import { FlamegraphLocator } from '@kbn/observability-shared-plugin/public/locators/profiling/flamegraph_locator'; import { TopNFunctionsLocator } from '@kbn/observability-shared-plugin/public/locators/profiling/topn_functions_locator'; +import { StacktracesLocator } from '@kbn/observability-shared-plugin/public/locators/profiling/stacktraces_locator'; import { HOST_FIELD } from '../../../../../common/constants'; const PROFILING_FEEDBACK_URL = 'https://ela.st/profiling-feedback'; @@ -18,7 +19,7 @@ interface Props { hostname: string; from: string; to: string; - profilingLinkLocator: FlamegraphLocator | TopNFunctionsLocator; + profilingLinkLocator: FlamegraphLocator | TopNFunctionsLocator | StacktracesLocator; profilingLinkLabel: string; } @@ -43,7 +44,12 @@ export function ProfilingLinks({
- + {i18n.translate('xpack.infra.flamegraph.profilingFeedbackLink', { defaultMessage: 'Give feedback about profiling', })} diff --git a/x-pack/plugins/infra/public/components/asset_details/tabs/profiling/threads.tsx b/x-pack/plugins/infra/public/components/asset_details/tabs/profiling/threads.tsx new file mode 100644 index 0000000000000..120fe3ca7fd99 --- /dev/null +++ b/x-pack/plugins/infra/public/components/asset_details/tabs/profiling/threads.tsx @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EmbeddableStackTraces } from '@kbn/observability-shared-plugin/public'; +import React from 'react'; +import { TopNType } from '@kbn/profiling-utils'; +import { EuiSpacer } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { HOST_FIELD } from '../../../../../common/constants'; +import { useAssetDetailsRenderPropsContext } from '../../hooks/use_asset_details_render_props'; +import { useDatePickerContext } from '../../hooks/use_date_picker'; +import { useKibanaContextForPlugin } from '../../../../hooks/use_kibana'; +import { ProfilingLinks } from './profiling_links'; + +export function Threads() { + const { services } = useKibanaContextForPlugin(); + const { getDateRangeInTimestamp, dateRange, setDateRange } = useDatePickerContext(); + const { from, to } = getDateRangeInTimestamp(); + const { asset } = useAssetDetailsRenderPropsContext(); + const stacktracesProfilingLinkLocator = + services.observabilityShared.locators.profiling.stacktracesLocator; + + return ( + <> + + + { + stacktracesProfilingLinkLocator.navigate({ + type: TopNType.Traces, + rangeFrom: dateRange.from, + rangeTo: dateRange.to, + kuery: `(${HOST_FIELD}:"${asset.name}" ) AND process.thread.name:"${category}"`, + }); + }} + onChartBrushEnd={(range) => { + setDateRange({ from: range.rangeFrom, to: range.rangeTo }); + }} + /> + + ); +} diff --git a/x-pack/plugins/observability_shared/public/components/profiling/embeddables/embeddable_flamegraph.tsx b/x-pack/plugins/observability_shared/public/components/profiling/embeddables/embeddable_flamegraph.tsx index 70bc9b4b7df48..276bfa3e0ee29 100644 --- a/x-pack/plugins/observability_shared/public/components/profiling/embeddables/embeddable_flamegraph.tsx +++ b/x-pack/plugins/observability_shared/public/components/profiling/embeddables/embeddable_flamegraph.tsx @@ -7,10 +7,14 @@ import type { BaseFlameGraph } from '@kbn/profiling-utils'; import React from 'react'; -import { ProfilingEmbeddable, ProfilingEmbeddableProps } from './profiling_embeddable'; +import { ProfilingEmbeddable } from './profiling_embeddable'; import { EMBEDDABLE_FLAMEGRAPH } from '.'; -type Props = Omit, 'embeddableFactoryId'>; +interface Props { + data?: BaseFlameGraph; + isLoading: boolean; + height?: string; +} export function EmbeddableFlamegraph(props: Props) { return ; diff --git a/x-pack/plugins/observability_shared/public/components/profiling/embeddables/embeddable_functions.tsx b/x-pack/plugins/observability_shared/public/components/profiling/embeddables/embeddable_functions.tsx index 4869eab74d508..064d2ce7859bb 100644 --- a/x-pack/plugins/observability_shared/public/components/profiling/embeddables/embeddable_functions.tsx +++ b/x-pack/plugins/observability_shared/public/components/profiling/embeddables/embeddable_functions.tsx @@ -7,13 +7,15 @@ import type { TopNFunctions } from '@kbn/profiling-utils'; import React from 'react'; -import { ProfilingEmbeddable, ProfilingEmbeddableProps } from './profiling_embeddable'; import { EMBEDDABLE_FUNCTIONS } from '.'; +import { ProfilingEmbeddable } from './profiling_embeddable'; -type Props = Omit, 'embeddableFactoryId'> & { +interface Props { + data?: TopNFunctions; + isLoading: boolean; rangeFrom: number; rangeTo: number; -}; +} export function EmbeddableFunctions(props: Props) { return ; diff --git a/x-pack/plugins/observability_shared/public/components/profiling/embeddables/embeddable_stack_traces.tsx b/x-pack/plugins/observability_shared/public/components/profiling/embeddables/embeddable_stack_traces.tsx new file mode 100644 index 0000000000000..c07f08b517d90 --- /dev/null +++ b/x-pack/plugins/observability_shared/public/components/profiling/embeddables/embeddable_stack_traces.tsx @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { TopNType } from '@kbn/profiling-utils'; +import { EMBEDDABLE_STACK_TRACES } from '.'; +import { ProfilingEmbeddable } from './profiling_embeddable'; + +interface Props { + type: TopNType; + kuery: string; + rangeFrom: number; + rangeTo: number; + onClick: (category: string) => void; + onChartBrushEnd: (range: { rangeFrom: string; rangeTo: string }) => void; +} + +export function EmbeddableStackTraces(props: Props) { + return ; +} diff --git a/x-pack/plugins/observability_shared/public/components/profiling/embeddables/index.ts b/x-pack/plugins/observability_shared/public/components/profiling/embeddables/index.ts index 05556b839cff4..8a13b23fd3de3 100644 --- a/x-pack/plugins/observability_shared/public/components/profiling/embeddables/index.ts +++ b/x-pack/plugins/observability_shared/public/components/profiling/embeddables/index.ts @@ -15,6 +15,10 @@ export const EMBEDDABLE_FUNCTIONS = 'EMBEDDABLE_FUNCTIONS'; /** Profiling functions embeddable */ export { EmbeddableFunctions } from './embeddable_functions'; +/** Profiling threads embeddable key */ +export const EMBEDDABLE_STACK_TRACES = 'EMBEDDABLE_STACK_TRACES'; +export { EmbeddableStackTraces } from './embeddable_stack_traces'; + /** Profiling search bar embeddable key */ export const EMBEDDABLE_PROFILING_SEARCH_BAR = 'EMBEDDABLE_PROFILING_SEARCH_BAR'; /** Profiling search bar embeddable */ diff --git a/x-pack/plugins/observability_shared/public/components/profiling/embeddables/profiling_embeddable.tsx b/x-pack/plugins/observability_shared/public/components/profiling/embeddables/profiling_embeddable.tsx index 00f29c10c1593..989b446ca3b21 100644 --- a/x-pack/plugins/observability_shared/public/components/profiling/embeddables/profiling_embeddable.tsx +++ b/x-pack/plugins/observability_shared/public/components/profiling/embeddables/profiling_embeddable.tsx @@ -10,20 +10,11 @@ import { useKibana } from '@kbn/kibana-react-plugin/public'; import React, { useEffect, useRef, useState } from 'react'; import { ObservabilitySharedStart } from '../../../plugin'; -export interface ProfilingEmbeddableProps { - data?: T; - embeddableFactoryId: string; - isLoading: boolean; - height?: string; -} - export function ProfilingEmbeddable({ embeddableFactoryId, - data, - isLoading, height, ...props -}: ProfilingEmbeddableProps) { +}: T & { embeddableFactoryId: string; height?: string }) { const { embeddable: embeddablePlugin } = useKibana().services; const [embeddable, setEmbeddable] = useState(); const embeddableRoot: React.RefObject = useRef(null); @@ -31,11 +22,7 @@ export function ProfilingEmbeddable({ useEffect(() => { async function createEmbeddable() { const factory = embeddablePlugin?.getEmbeddableFactory(embeddableFactoryId); - const input = { - id: 'embeddable_profiling', - data, - isLoading, - }; + const input = { ...props, id: 'embeddable_profiling' }; const embeddableObject = await factory?.create(input); setEmbeddable(embeddableObject); } @@ -51,14 +38,10 @@ export function ProfilingEmbeddable({ useEffect(() => { if (embeddable) { - embeddable.updateInput({ - data, - isLoading, - ...props, - }); + embeddable.updateInput(props); embeddable.reload(); } - }, [data, embeddable, isLoading, props]); + }, [embeddable, props]); return (
; @@ -19,11 +21,16 @@ export type StacktracesLocator = LocatorPublic; export class StacktracesLocatorDefinition implements LocatorDefinition { public readonly id = 'stacktracesLocator'; - public readonly getLocation = async ({ rangeFrom, rangeTo, kuery }: StacktracesLocatorParams) => { + public readonly getLocation = async ({ + rangeFrom, + rangeTo, + kuery, + type = TopNType.Threads, + }: StacktracesLocatorParams) => { const params = { rangeFrom, rangeTo, kuery }; return { app: 'profiling', - path: `/stacktraces/threads?${qs.stringify(params)}`, + path: `/stacktraces/${type}?${qs.stringify(params)}`, state: {}, }; }; diff --git a/x-pack/plugins/profiling/common/topn.ts b/x-pack/plugins/profiling/common/topn.ts index bbf04c8a39226..acd7c87ad7b5f 100644 --- a/x-pack/plugins/profiling/common/topn.ts +++ b/x-pack/plugins/profiling/common/topn.ts @@ -245,17 +245,14 @@ export function getCategoryColor({ return colors[stringhash(category)]; } -export function groupSamplesByCategory({ - samples, - totalCount, - metadata, - labels, -}: { - samples: TopNSample[]; - totalCount: number; - metadata: Record; - labels: Record; -}): TopNSubchart[] { +export function groupSamplesByCategory(topNResponse: TopNResponse): { charts: TopNSubchart[] } { + const { + TotalCount: totalCount, + TopN: samples, + Metadata: metadata, + Labels: labels, + } = topNResponse; + const seriesByCategory = new Map(); for (let i = 0; i < samples.length; i++) { @@ -289,17 +286,23 @@ export function groupSamplesByCategory({ rotations: Math.ceil(subcharts.length / 10), }); - return orderBy(subcharts, ['Percentage', 'Category'], ['desc', 'asc']).map((chart, index) => { - return { - ...chart, - Color: getCategoryColor({ category: chart.Category, colors, subChartSize: subcharts.length }), - Index: index + 1, - Series: chart.Series.map((value) => { - return { - ...value, - Category: chart.Category, - }; - }), - }; - }); + return { + charts: orderBy(subcharts, ['Percentage', 'Category'], ['desc', 'asc']).map((chart, index) => { + return { + ...chart, + Color: getCategoryColor({ + category: chart.Category, + colors, + subChartSize: subcharts.length, + }), + Index: index + 1, + Series: chart.Series.map((value) => { + return { + ...value, + Category: chart.Category, + }; + }), + }; + }), + }; } diff --git a/x-pack/plugins/profiling/public/components/chart_grid.tsx b/x-pack/plugins/profiling/public/components/chart_grid.tsx index bea1b7f90c1cd..717fc178028ec 100644 --- a/x-pack/plugins/profiling/public/components/chart_grid.tsx +++ b/x-pack/plugins/profiling/public/components/chart_grid.tsx @@ -5,10 +5,9 @@ * 2.0. */ -import { EuiFlexGrid, EuiFlexItem, EuiFlyout, EuiPanel, EuiSpacer, EuiTitle } from '@elastic/eui'; +import { EuiFlexGrid, EuiFlexItem, EuiPanel, EuiSpacer } from '@elastic/eui'; import { take } from 'lodash'; -import React, { useMemo, useState } from 'react'; -import { i18n } from '@kbn/i18n'; +import React, { useMemo } from 'react'; import { TopNSubchart } from '../../common/topn'; import { SubChart } from './subchart'; @@ -16,16 +15,15 @@ export interface ChartGridProps { limit: number; charts: TopNSubchart[]; showFrames: boolean; + onChartClick?: (selectedChart: TopNSubchart) => void; } -export function ChartGrid({ limit, charts, showFrames }: ChartGridProps) { +export function ChartGrid({ limit, charts, showFrames, onChartClick }: ChartGridProps) { const maximum = Math.min(limit, charts.length ?? 0); const ncharts = Math.min(maximum, charts.length); - const [selectedSubchart, setSelectedSubchart] = useState(undefined); - const subCharts = useMemo(() => { - return take(charts, ncharts).map((subchart, i) => ( + return take(charts, ncharts).map((subchart) => ( { - setSelectedSubchart(subchart); - }} + onClick={onChartClick ? () => onChartClick(subchart) : undefined} showFrames={showFrames} padTitle /> )); - }, [charts, ncharts, showFrames]); + }, [charts, ncharts, onChartClick, showFrames]); return ( <> - - -

- {i18n.translate('xpack.profiling.chartGrid.h1.topLabel', { - defaultMessage: 'Top {size}', - values: { size: charts.length }, - })} -

-
{subCharts} - {selectedSubchart && ( - { - setSelectedSubchart(undefined); - }} - > - - - )} ); } diff --git a/x-pack/plugins/profiling/public/components/stack_traces/index.tsx b/x-pack/plugins/profiling/public/components/stack_traces/index.tsx new file mode 100644 index 0000000000000..ec2e5f28ccc24 --- /dev/null +++ b/x-pack/plugins/profiling/public/components/stack_traces/index.tsx @@ -0,0 +1,173 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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, + EuiButtonGroup, + EuiFlexGroup, + EuiFlexItem, + EuiFlyout, + EuiPanel, + EuiSpacer, + EuiTitle, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React, { useState } from 'react'; +import { StackTracesDisplayOption, TopNType } from '@kbn/profiling-utils'; +import { StackedBarChart, StackedBarChartProps } from '../stacked_bar_chart'; +import { TopNSubchart } from '../../../common/topn'; +import { ChartGrid } from '../chart_grid'; +import { AsyncState } from '../../hooks/use_async'; +import { AsyncComponent } from '../async_component'; +import { SubChart } from '../subchart'; + +interface Props { + type: TopNType; + state: AsyncState<{ charts: TopNSubchart[] }>; + displayOption: StackTracesDisplayOption; + onChangeDisplayOption: (nextOption: StackTracesDisplayOption) => void; + onStackedBarChartBrushEnd: StackedBarChartProps['onBrushEnd']; + onChartClick: (category: string) => void; + limit: number; + onShowMoreClick?: (newLimit: number) => void; +} + +const displayOptions = [ + { + id: StackTracesDisplayOption.StackTraces, + iconType: 'visLine', + label: i18n.translate('xpack.profiling.stackTracesView.stackTracesCountButton', { + defaultMessage: 'Stack traces', + }), + }, + { + id: StackTracesDisplayOption.Percentage, + iconType: 'percent', + label: i18n.translate('xpack.profiling.stackTracesView.percentagesButton', { + defaultMessage: 'Percentages', + }), + }, +]; + +export function StackTraces({ + type, + state, + displayOption, + onChangeDisplayOption, + onStackedBarChartBrushEnd, + limit, + onShowMoreClick, + onChartClick, +}: Props) { + const charts = state.data?.charts ?? []; + const isTracesType = type === TopNType.Traces; + const [selectedSubchart, setSelectedSubchart] = useState(undefined); + + function handleChartClick(selectedChart: TopNSubchart) { + // When clicking on the charts on the Traces view, the flyout must open + if (type === TopNType.Traces) { + setSelectedSubchart(selectedChart); + } else { + onChartClick(selectedChart.Category); + } + } + + return ( + <> + + + + + + { + onChangeDisplayOption(nextValue as StackTracesDisplayOption); + }} + options={displayOptions} + legend={i18n.translate('xpack.profiling.stackTracesView.displayOptionLegend', { + defaultMessage: 'Display option', + })} + /> + + + + + + + + + + + + <> + + +

+ {i18n.translate('xpack.profiling.chartGrid.h1.topLabel', { + defaultMessage: 'Top {size}', + values: { + size: onShowMoreClick ? charts.length : Math.min(limit, charts.length), + }, + })} +

+
+ + +
+
+ {onShowMoreClick && charts.length > limit ? ( + + onShowMoreClick(limit + 10)} + > + {i18n.translate('xpack.profiling.stackTracesView.showMoreButton', { + defaultMessage: 'Show more', + })} + + + ) : null} +
+ {selectedSubchart && ( + { + setSelectedSubchart(undefined); + }} + > + + + )} + + ); +} diff --git a/x-pack/plugins/profiling/public/components/stacked_bar_chart/index.tsx b/x-pack/plugins/profiling/public/components/stacked_bar_chart/index.tsx index 2d73d795c09ca..7be81869a49a5 100644 --- a/x-pack/plugins/profiling/public/components/stacked_bar_chart/index.tsx +++ b/x-pack/plugins/profiling/public/components/stacked_bar_chart/index.tsx @@ -37,7 +37,7 @@ export interface StackedBarChartProps { onBrushEnd: (range: { rangeFrom: string; rangeTo: string }) => void; charts: TopNSubchart[]; showFrames: boolean; - onClick?: (category: string) => void; + onClick?: (selectedChart: TopNSubchart) => void; } export function StackedBarChart({ @@ -79,12 +79,11 @@ export function StackedBarChart({ percentage={highlightedSubchart.Percentage} sample={highlightedSample} showFrames={showFrames} - /* we don't show metadata in tooltips */ - metadata={[]} height={128} width={MAX_TOOLTIP_WIDTH} showAxes={false} padTitle={false} + onClick={onClick ? () => onClick(highlightedSubchart) : undefined} /> @@ -113,7 +112,7 @@ export function StackedBarChart({ ? (elements) => { const [value] = elements[0] as XYChartElementEvent; const sample = value.datum as TopNSample; - onClick(sample.Category); + onClick(chartsbyCategoryMap[sample.Category]); } : undefined } diff --git a/x-pack/plugins/profiling/public/components/subchart.tsx b/x-pack/plugins/profiling/public/components/subchart.tsx index 4ae0056f63b24..3ada21f11c0ef 100644 --- a/x-pack/plugins/profiling/public/components/subchart.tsx +++ b/x-pack/plugins/profiling/public/components/subchart.tsx @@ -34,19 +34,16 @@ import { EuiToolTip, useEuiTheme, } from '@elastic/eui'; +import { css } from '@emotion/react'; import { i18n } from '@kbn/i18n'; import type { StackFrameMetadata } from '@kbn/profiling-utils'; import { groupBy } from 'lodash'; import React, { Fragment, useMemo, useState } from 'react'; -import { css } from '@emotion/react'; import { CountPerTime, OTHER_BUCKET_LABEL, TopNSample } from '../../common/topn'; import { useKibanaTimeZoneSetting } from '../hooks/use_kibana_timezone_setting'; import { useProfilingChartsTheme } from '../hooks/use_profiling_charts_theme'; -import { useProfilingParams } from '../hooks/use_profiling_params'; -import { useProfilingRouter } from '../hooks/use_profiling_router'; import { asNumber } from '../utils/formatters/as_number'; import { asPercentage } from '../utils/formatters/as_percentage'; -import { getTracesViewRouteParams } from '../views/stack_traces_view/utils'; import { StackFrameSummary } from './stack_frame_summary'; export interface SubChartProps { @@ -59,8 +56,8 @@ export interface SubChartProps { percentage: number; data: CountPerTime[]; showAxes: boolean; - metadata: StackFrameMetadata[]; - onShowMoreClick?: () => void; + metadata?: StackFrameMetadata[]; + onClick?: () => void; style?: EuiFlexGroupProps['style']; showFrames: boolean; padTitle: boolean; @@ -92,8 +89,8 @@ export function SubChart({ data, width, showAxes, - metadata, - onShowMoreClick, + metadata = [], + onClick, style, showFrames, padTitle, @@ -104,20 +101,11 @@ export function SubChart({ Record >({}); - const profilingRouter = useProfilingRouter(); - - const { path, query } = useProfilingParams('/stacktraces/{topNType}'); - - const href = profilingRouter.link( - '/stacktraces/{topNType}', - getTracesViewRouteParams({ query, topNType: path.topNType, category }) - ); - const timeZone = useKibanaTimeZoneSetting(); const { chartsTheme, chartsBaseTheme } = useProfilingChartsTheme(); - const compact = !!onShowMoreClick; + const compact = !!onClick; const parentsMetadata = metadata.filter((item) => item.Inline === false); const displayedFrames = compact @@ -225,8 +213,8 @@ export function SubChart({ })} - {hasMoreFrames && !!onShowMoreClick && ( - + {hasMoreFrames && !!onClick && ( + {i18n.translate('xpack.profiling.stackTracesView.showMoreTracesButton', { defaultMessage: 'Show more', })} @@ -275,14 +263,10 @@ export function SubChart({ - {showFrames ? ( - onShowMoreClick?.()}> - {label} - - ) : category === OTHER_BUCKET_LABEL ? ( + {category === OTHER_BUCKET_LABEL || onClick === undefined ? ( {label} ) : ( - + {label} )} diff --git a/x-pack/plugins/profiling/public/embeddables/empty_data_prompt.tsx b/x-pack/plugins/profiling/public/embeddables/empty_data_prompt.tsx new file mode 100644 index 0000000000000..6c92efca3f797 --- /dev/null +++ b/x-pack/plugins/profiling/public/embeddables/empty_data_prompt.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 { EuiEmptyPrompt, EuiSpacer } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +export function EmptyDataPrompt() { + return ( + <> + + + {i18n.translate('xpack.profiling.embeddables.emptyDataPromptTitle', { + defaultMessage: 'No data found', + })} + + } + body={ +

+ {i18n.translate('xpack.profiling.embeddables.emptyDataPromptBody', { + defaultMessage: + 'Make sure this host is sending profiling data or try selecting a different date range.', + })} +

+ } + /> + + ); +} diff --git a/x-pack/plugins/profiling/public/embeddables/error_prompt.tsx b/x-pack/plugins/profiling/public/embeddables/error_prompt.tsx new file mode 100644 index 0000000000000..4427a2ba62ea9 --- /dev/null +++ b/x-pack/plugins/profiling/public/embeddables/error_prompt.tsx @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiEmptyPrompt } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; + +export function ErrorPrompt() { + return ( + + {i18n.translate('xpack.profiling.embeddables.loadErrorTitle', { + defaultMessage: 'Unable to load the Profiling data', + })} + + } + body={ +

+ {i18n.translate('xpack.profiling.embeddables.loadErrorBody', { + defaultMessage: + 'There was an error while trying to load profiling data. Try refreshing the page', + })} +

+ } + /> + ); +} diff --git a/x-pack/plugins/profiling/public/embeddables/register_embeddables.ts b/x-pack/plugins/profiling/public/embeddables/register_embeddables.ts index 2c229414960a6..850ab8998e893 100644 --- a/x-pack/plugins/profiling/public/embeddables/register_embeddables.ts +++ b/x-pack/plugins/profiling/public/embeddables/register_embeddables.ts @@ -10,11 +10,13 @@ import { EMBEDDABLE_FLAMEGRAPH, EMBEDDABLE_FUNCTIONS, EMBEDDABLE_PROFILING_SEARCH_BAR, + EMBEDDABLE_STACK_TRACES, } from '@kbn/observability-shared-plugin/public'; import { EmbeddableFlamegraphFactory } from './flamegraph/embeddable_flamegraph_factory'; import { EmbeddableFunctionsFactory } from './functions/embeddable_functions_factory'; import { GetProfilingEmbeddableDependencies } from './profiling_embeddable_provider'; import { EmbeddableSearchBarFactory } from './search_bar/embeddable_search_bar_factory'; +import { EmbeddableStackTracesFactory } from './stack_traces/embeddable_stack_traces_factory'; export function registerEmbeddables( embeddable: EmbeddableSetup, @@ -32,4 +34,8 @@ export function registerEmbeddables( EMBEDDABLE_PROFILING_SEARCH_BAR, new EmbeddableSearchBarFactory(getProfilingEmbeddableDependencies) ); + embeddable.registerEmbeddableFactory( + EMBEDDABLE_STACK_TRACES, + new EmbeddableStackTracesFactory(getProfilingEmbeddableDependencies) + ); } diff --git a/x-pack/plugins/profiling/public/embeddables/stack_traces/embeddable_stack_traces.tsx b/x-pack/plugins/profiling/public/embeddables/stack_traces/embeddable_stack_traces.tsx new file mode 100644 index 0000000000000..938a2c85810f4 --- /dev/null +++ b/x-pack/plugins/profiling/public/embeddables/stack_traces/embeddable_stack_traces.tsx @@ -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 { Embeddable, EmbeddableOutput, IContainer } from '@kbn/embeddable-plugin/public'; +import { EMBEDDABLE_STACK_TRACES } from '@kbn/observability-shared-plugin/public'; +import React from 'react'; +import { render, unmountComponentAtNode } from 'react-dom'; +import { + ProfilingEmbeddableProvider, + ProfilingEmbeddablesDependencies, +} from '../profiling_embeddable_provider'; +import { EmbeddableStackTracesEmbeddableInput } from './embeddable_stack_traces_factory'; +import { StackTraces } from './stack_traces'; + +export class EmbeddableStackTraces extends Embeddable< + EmbeddableStackTracesEmbeddableInput, + EmbeddableOutput +> { + readonly type = EMBEDDABLE_STACK_TRACES; + private _domNode?: HTMLElement; + + constructor( + private deps: ProfilingEmbeddablesDependencies, + initialInput: EmbeddableStackTracesEmbeddableInput, + parent?: IContainer + ) { + super(initialInput, {}, parent); + } + + render(domNode: HTMLElement) { + this._domNode = domNode; + const props = this.input; + render( + +
+ +
+
, + domNode + ); + } + + public destroy() { + if (this._domNode) { + unmountComponentAtNode(this._domNode); + } + } + + reload() { + if (this._domNode) { + this.render(this._domNode); + } + } +} diff --git a/x-pack/plugins/profiling/public/embeddables/stack_traces/embeddable_stack_traces_factory.ts b/x-pack/plugins/profiling/public/embeddables/stack_traces/embeddable_stack_traces_factory.ts new file mode 100644 index 0000000000000..e079f1a7c4754 --- /dev/null +++ b/x-pack/plugins/profiling/public/embeddables/stack_traces/embeddable_stack_traces_factory.ts @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { + EmbeddableFactoryDefinition, + EmbeddableInput, + IContainer, +} from '@kbn/embeddable-plugin/public'; +import { EMBEDDABLE_STACK_TRACES } from '@kbn/observability-shared-plugin/public'; +import { TopNType } from '@kbn/profiling-utils'; +import { GetProfilingEmbeddableDependencies } from '../profiling_embeddable_provider'; + +interface EmbeddableStackTracesInput { + type: TopNType; + kuery: string; + rangeFrom: number; + rangeTo: number; + onClick: (category: string) => void; + onChartBrushEnd: (range: { rangeFrom: string; rangeTo: string }) => void; +} + +export type EmbeddableStackTracesEmbeddableInput = EmbeddableStackTracesInput & EmbeddableInput; + +export class EmbeddableStackTracesFactory + implements EmbeddableFactoryDefinition +{ + readonly type = EMBEDDABLE_STACK_TRACES; + + constructor(private getProfilingEmbeddableDependencies: GetProfilingEmbeddableDependencies) {} + + async isEditable() { + return false; + } + + async create(input: EmbeddableStackTracesEmbeddableInput, parent?: IContainer) { + const { EmbeddableStackTraces } = await import('./embeddable_stack_traces'); + const deps = await this.getProfilingEmbeddableDependencies(); + return new EmbeddableStackTraces(deps, input, parent); + } + + getDisplayName() { + return 'Universal Profiling Threads'; + } +} diff --git a/x-pack/plugins/profiling/public/embeddables/stack_traces/stack_traces.tsx b/x-pack/plugins/profiling/public/embeddables/stack_traces/stack_traces.tsx new file mode 100644 index 0000000000000..3205f04120012 --- /dev/null +++ b/x-pack/plugins/profiling/public/embeddables/stack_traces/stack_traces.tsx @@ -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 { StackTracesDisplayOption, TopNType } from '@kbn/profiling-utils'; +import React, { useState } from 'react'; +import { groupSamplesByCategory } from '../../../common/topn'; +import { useProfilingDependencies } from '../../components/contexts/profiling_dependencies/use_profiling_dependencies'; +import { StackTraces as StatelessStackTraces } from '../../components/stack_traces'; +import { AsyncStatus, useAsync } from '../../hooks/use_async'; +import { EmptyDataPrompt } from '../empty_data_prompt'; +import { ErrorPrompt } from '../error_prompt'; + +interface Props { + type: TopNType; + kuery: string; + rangeFrom: number; + rangeTo: number; + onClick: (category: string) => void; + onChartBrushEnd: (range: { rangeFrom: string; rangeTo: string }) => void; +} + +export function StackTraces({ type, kuery, rangeFrom, rangeTo, onClick, onChartBrushEnd }: Props) { + const { + services: { fetchTopN }, + } = useProfilingDependencies(); + const [displayOption, setDisplayOption] = useState(StackTracesDisplayOption.StackTraces); + + const rangeFromSec = rangeFrom / 1000; + const rangeToSec = rangeTo / 1000; + + const state = useAsync( + ({ http }) => { + return fetchTopN({ + http, + type, + timeFrom: rangeFromSec, + timeTo: rangeToSec, + kuery, + }).then(groupSamplesByCategory); + }, + [fetchTopN, type, rangeFromSec, rangeToSec, kuery] + ); + + if (state.error) { + return ; + } + + if (state.status === AsyncStatus.Settled && state.data?.charts.length === 0) { + return ; + } + + return ( + + ); +} diff --git a/x-pack/plugins/profiling/public/views/stack_traces_view/index.tsx b/x-pack/plugins/profiling/public/views/stack_traces_view/index.tsx index ece12c6527cb7..4353305a88c39 100644 --- a/x-pack/plugins/profiling/public/views/stack_traces_view/index.tsx +++ b/x-pack/plugins/profiling/public/views/stack_traces_view/index.tsx @@ -4,24 +4,19 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { EuiButton, EuiButtonGroup, EuiFlexGroup, EuiFlexItem, EuiPanel } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; import React from 'react'; -import { StackTracesDisplayOption, TopNType } from '@kbn/profiling-utils'; -import { groupSamplesByCategory, TopNResponse } from '../../../common/topn'; +import { groupSamplesByCategory } from '../../../common/topn'; +import { useProfilingDependencies } from '../../components/contexts/profiling_dependencies/use_profiling_dependencies'; +import { ProfilingAppPageTemplate } from '../../components/profiling_app_page_template'; +import { StackTraces } from '../../components/stack_traces'; import { useProfilingParams } from '../../hooks/use_profiling_params'; import { useProfilingRouter } from '../../hooks/use_profiling_router'; import { useProfilingRoutePath } from '../../hooks/use_profiling_route_path'; import { useTimeRange } from '../../hooks/use_time_range'; import { useTimeRangeAsync } from '../../hooks/use_time_range_async'; -import { AsyncComponent } from '../../components/async_component'; -import { ChartGrid } from '../../components/chart_grid'; -import { useProfilingDependencies } from '../../components/contexts/profiling_dependencies/use_profiling_dependencies'; -import { ProfilingAppPageTemplate } from '../../components/profiling_app_page_template'; -import { StackedBarChart } from '../../components/stacked_bar_chart'; +import { RouteBreadcrumb } from '../../routing/route_breadcrumb'; import { getStackTracesTabs } from './get_stack_traces_tabs'; import { getTracesViewRouteParams } from './utils'; -import { RouteBreadcrumb } from '../../routing/route_breadcrumb'; export function StackTracesView() { const routePath = useProfilingRoutePath(); @@ -64,26 +59,12 @@ export function StackTracesView() { timeFrom: timeRange.inSeconds.start, timeTo: timeRange.inSeconds.end, kuery, - }).then((response: TopNResponse) => { - const totalCount = response.TotalCount; - const samples = response.TopN; - const charts = groupSamplesByCategory({ - samples, - totalCount, - metadata: response.Metadata, - labels: response.Labels, - }); - return { - charts, - }; - }); + }).then(groupSamplesByCategory); }, [topNType, timeRange.inSeconds.start, timeRange.inSeconds.end, fetchTopN, kuery] ); - const { data } = state; - - function onStackedBarClick(category: string) { + function onChartClick(category: string) { profilingRouter.push( '/stacktraces/{topNType}', getTracesViewRouteParams({ query, topNType: path.topNType, category }) @@ -93,101 +74,41 @@ export function StackTracesView() { return ( - - - - - - { - profilingRouter.push(routePath, { - path, - query: { - ...query, - displayAs: nextValue, - }, - }); - }} - options={[ - { - id: StackTracesDisplayOption.StackTraces, - iconType: 'visLine', - label: i18n.translate( - 'xpack.profiling.stackTracesView.stackTracesCountButton', - { - defaultMessage: 'Stack traces', - } - ), - }, - { - id: StackTracesDisplayOption.Percentage, - iconType: 'percent', - label: i18n.translate('xpack.profiling.stackTracesView.percentagesButton', { - defaultMessage: 'Percentages', - }), - }, - ]} - legend={i18n.translate('xpack.profiling.stackTracesView.displayOptionLegend', { - defaultMessage: 'Display option', - })} - /> - - - - { - profilingRouter.push(routePath, { - path, - query: { - ...query, - rangeFrom: nextRange.rangeFrom, - rangeTo: nextRange.rangeTo, - }, - }); - }} - showFrames={topNType === TopNType.Traces} - onClick={topNType === TopNType.Threads ? onStackedBarClick : undefined} - /> - - - - - - - - - - - {(data?.charts.length ?? 0) > limit && ( - - { - profilingRouter.push(routePath, { - path, - query: { - ...query, - limit: limit + 10, - }, - }); - }} - > - {i18n.translate('xpack.profiling.stackTracesView.showMoreButton', { - defaultMessage: 'Show more', - })} - - - )} - + { + profilingRouter.push(routePath, { + path, + query: { + ...query, + displayAs: nextValue, + }, + }); + }} + onStackedBarChartBrushEnd={(nextRange) => { + profilingRouter.push(routePath, { + path, + query: { + ...query, + rangeFrom: nextRange.rangeFrom, + rangeTo: nextRange.rangeTo, + }, + }); + }} + onShowMoreClick={() => { + profilingRouter.push(routePath, { + path, + query: { + ...query, + limit: limit + 10, + }, + }); + }} + /> ); From 3ce276dbae8d94679a283c05896bbedfe7379a8a Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Wed, 3 Jan 2024 10:27:48 +0100 Subject: [PATCH 067/323] [Fleet] Fix keep policies up to date after package install (#174093) --- .../services/epm/packages/_install_package.test.ts | 3 +++ .../server/services/epm/packages/_install_package.ts | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts index 3b06d9b2b3cd8..d6d653fd98c4e 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts @@ -69,6 +69,9 @@ describe('_installPackage', () => { soClient.update.mockImplementation(async (type, id, attributes) => { return { id, attributes } as any; }); + soClient.get.mockImplementation(async (type, id) => { + return { id, attributes: {} } as any; + }); esClient = elasticsearchServiceMock.createClusterClient().asInternalUser; appContextService.start(createAppContextStartContractMock()); diff --git a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts index fdcf51db71867..6c30d3a8d332d 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts @@ -348,7 +348,7 @@ export async function _installPackage({ savedObjectType: PACKAGES_SAVED_OBJECT_TYPE, }); logger.debug(`Package install - Updating install status`); - const updatedPackage = await withPackageSpan('Update install status', () => + await withPackageSpan('Update install status', () => savedObjectsClient.update(PACKAGES_SAVED_OBJECT_TYPE, pkgName, { version: pkgVersion, install_version: pkgVersion, @@ -361,8 +361,13 @@ export async function _installPackage({ ), }) ); - logger.debug(`Package install - Install status ${updatedPackage?.attributes?.install_status}`); + // Need to refetch the installation again to retrieve all the attributes + const updatedPackage = await savedObjectsClient.get( + PACKAGES_SAVED_OBJECT_TYPE, + pkgName + ); + logger.debug(`Package install - Install status ${updatedPackage?.attributes?.install_status}`); // If the package is flagged with the `keep_policies_up_to_date` flag, upgrade its // associated package policies after installation if (updatedPackage.attributes.keep_policies_up_to_date) { From e9508e394669c0570251bca7f2fedb386fda6ab8 Mon Sep 17 00:00:00 2001 From: Miriam <31922082+MiriamAparicio@users.noreply.github.com> Date: Wed, 3 Jan 2024 11:07:00 +0000 Subject: [PATCH 068/323] [Obs UX] Unskip transaction duration alerts test (#174069) Closes https://github.com/elastic/kibana/issues/173267 ### Summary Test was likely failing because the opbeans-java alert was not deleted from previous tests. To prevent that from happening again, I've changed the test to make sure the rules are cleaned before each test. https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/4707 --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../tests/alerts/transaction_duration.spec.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/x-pack/test/apm_api_integration/tests/alerts/transaction_duration.spec.ts b/x-pack/test/apm_api_integration/tests/alerts/transaction_duration.spec.ts index 0414faead6c67..8f90e9af5389f 100644 --- a/x-pack/test/apm_api_integration/tests/alerts/transaction_duration.spec.ts +++ b/x-pack/test/apm_api_integration/tests/alerts/transaction_duration.spec.ts @@ -44,8 +44,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { groupBy: ['service.name', 'service.environment', 'transaction.type', 'transaction.name'], }; - // FLAKY: https://github.com/elastic/kibana/issues/173267 - registry.when.skip('transaction duration alert', { config: 'basic', archives: [] }, () => { + registry.when('transaction duration alert', { config: 'basic', archives: [] }, () => { before(async () => { const opbeansJava = apm .service({ name: 'opbeans-java', environment: 'production', agentName: 'java' }) @@ -192,7 +191,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { let ruleId: string; let alerts: ApmAlertFields[]; - before(async () => { + beforeEach(async () => { const createdRule = await createApmRule({ supertest, ruleTypeId: ApmRuleType.TransactionDuration, @@ -213,7 +212,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { alerts = await waitForAlertsForRule({ es, ruleId }); }); - after(async () => { + afterEach(async () => { await cleanupRuleAndAlertState({ es, supertest, logger }); }); @@ -235,8 +234,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(alerts[0]).property('transaction.name', 'tx-node'); }); - // FLAKY: https://github.com/elastic/kibana/issues/173127 - it.skip('shows alert count=1 for opbeans-node on service inventory', async () => { + it('shows alert count=1 for opbeans-node on service inventory', async () => { const serviceInventoryAlertCounts = await fetchServiceInventoryAlertCounts(apmApiClient); expect(serviceInventoryAlertCounts).to.eql({ 'opbeans-node': 1, From 9da2776d6d89b9e62638d47f8fb5e6101c9bf8e9 Mon Sep 17 00:00:00 2001 From: Julia Bardi <90178898+juliaElastic@users.noreply.github.com> Date: Wed, 3 Jan 2024 12:49:09 +0100 Subject: [PATCH 069/323] [Fleet] fix unhandled error in agent details when components are missing (#174152) ## Summary Closes https://github.com/elastic/kibana/issues/174012 Added a null check when `agent.components` is undefined, to prevent unhandled error in Agent Details UI. To reproduce: 1. start kibana locally/cloud version 8.12+ 2. create agent policy with endpoint 1.3.0 integration (can be latest too) 3. enroll an agent version 7.17.16, can be in container 4. navigate to agent details page, open the inputs arrows on the right 5. expect that there is no error banner coming up, but an empty content image ### Checklist - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --- .../agent_details_integration_inputs.test.tsx | 9 +++++++ .../agent_details_integration_inputs.tsx | 27 ++++++++++--------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_integration_inputs.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_integration_inputs.test.tsx index 59139a09a792f..22d571932c459 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_integration_inputs.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_integration_inputs.test.tsx @@ -123,4 +123,13 @@ describe('AgentDetailsIntegrationInputs', () => { component.queryByTestId('agentDetailsIntegrationsInputStatusHealthSuccess') ).not.toBeInTheDocument(); }); + + it('should not throw error when there is no components', () => { + agent.components = undefined; + + const component = renderComponent(); + userEvent.click(component.container.querySelector('#agentIntegrationsInputs')!); + userEvent.click(component.container.querySelector('#endpoint')!); + expect(component.getByText('Endpoint')).toBeInTheDocument(); + }); }); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_integration_inputs.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_integration_inputs.tsx index bb3b6ee5ef701..71b1a1ad6fe3e 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_integration_inputs.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_integration_inputs.tsx @@ -128,6 +128,7 @@ export const AgentDetailsIntegrationInputs: React.FunctionComponent<{ current ) => { if (current.enabled) { + const inputStatusFormatter = inputStatusMap.get(current.type); return [ ...acc, { @@ -156,18 +157,20 @@ export const AgentDetailsIntegrationInputs: React.FunctionComponent<{ ), id: current.type, icon: getInputStatusIcon(current.type), - children: [ - { - label: ( - - ), - id: `input-status-${current.type}`, - isExpanded: true, - className: 'input-action-item-expanded', - }, - ], + children: !!inputStatusFormatter + ? [ + { + label: ( + + ), + id: `input-status-${current.type}`, + isExpanded: true, + className: 'input-action-item-expanded', + }, + ] + : [], }, ]; } From eb83faccb3dab3e406853efe178c7325266809b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20St=C3=BCrmer?= Date: Wed, 3 Jan 2024 12:52:05 +0100 Subject: [PATCH 070/323] [Logs Explorer] Change the default link for "Discover" in the serverless nav (#173420) Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../public/components/side_navigation/index.tsx | 15 +++++++++++---- .../common/discover/group1/_url_state.ts | 4 ++++ .../test_suites/observability/navigation.ts | 14 +++++++++----- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/x-pack/plugins/serverless_observability/public/components/side_navigation/index.tsx b/x-pack/plugins/serverless_observability/public/components/side_navigation/index.tsx index 2cca4b3ea7892..5be456cfd5f3c 100644 --- a/x-pack/plugins/serverless_observability/public/components/side_navigation/index.tsx +++ b/x-pack/plugins/serverless_observability/public/components/side_navigation/index.tsx @@ -32,13 +32,20 @@ const navigationTree: NavigationTreeDefinition = { title: i18n.translate('xpack.serverlessObservability.nav.discover', { defaultMessage: 'Discover', }), - link: 'discover', + link: 'observability-log-explorer', + // prevent this entry from ever becoming active, effectively falling through to the obs-log-explorer child + getIsActive: () => false, + // avoid duplicate "Discover" breadcrumbs + breadcrumbStatus: 'hidden', renderAs: 'item', children: [ { - // This is to show "observability-log-explorer" breadcrumbs when navigating from "discover" to "log explorer" - link: 'observability-log-explorer', - sideNavStatus: 'hidden', + link: 'discover', + children: [ + { + link: 'observability-log-explorer', + }, + ], }, ], }, diff --git a/x-pack/test_serverless/functional/test_suites/common/discover/group1/_url_state.ts b/x-pack/test_serverless/functional/test_suites/common/discover/group1/_url_state.ts index c0dc9c0dd89f1..0f8c9ffd54744 100644 --- a/x-pack/test_serverless/functional/test_suites/common/discover/group1/_url_state.ts +++ b/x-pack/test_serverless/functional/test_suites/common/discover/group1/_url_state.ts @@ -77,6 +77,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); describe('Side nav', function () { + this.tags([ + 'skipSvlOblt', // the "Discover" side nav entry does something different in oblt + ]); + it('should sync Lens global state to Discover sidebar link and carry over the state when navigating to Discover', async () => { await PageObjects.common.navigateToApp('discover'); await PageObjects.common.navigateToApp('lens'); 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 892359f901ffe..f899d6760db02 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/navigation.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/navigation.ts @@ -41,11 +41,15 @@ export default function ({ getPageObject, getService }: FtrProviderContext) { }); await svlCommonNavigation.sidenav.expectSectionClosed('project_settings_project_nav'); - // navigate to discover - await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'discover' }); - await svlCommonNavigation.sidenav.expectLinkActive({ deepLinkId: 'discover' }); - await svlCommonNavigation.breadcrumbs.expectBreadcrumbExists({ deepLinkId: 'discover' }); - expect(await browser.getCurrentUrl()).contain('/app/discover'); + // navigate to the logs explorer tab by default + await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'observability-log-explorer' }); + await svlCommonNavigation.sidenav.expectLinkActive({ + deepLinkId: 'observability-log-explorer', + }); + await svlCommonNavigation.breadcrumbs.expectBreadcrumbExists({ + deepLinkId: 'observability-log-explorer', + }); + expect(await browser.getCurrentUrl()).contain('/app/observability-log-explorer'); // check the aiops subsection await svlCommonNavigation.sidenav.openSection('observability_project_nav.aiops'); // open ai ops subsection From c05b8935d93e4ef656ee6f1e1d1db714fdc9d609 Mon Sep 17 00:00:00 2001 From: Ido Cohen <90558359+CohenIdo@users.noreply.github.com> Date: Wed, 3 Jan 2024 14:21:38 +0200 Subject: [PATCH 071/323] [Cloud Security] update score trendline to support muting rules --- .../common/types/rules/v3.ts | 44 ------------- .../common/types/rules/v4.ts | 55 +++++++++++++++- .../create_indices/benchmark_score_mapping.ts | 3 + .../bulk_action/bulk_action.ts | 20 +++--- .../benchmark_rules/bulk_action/utils.ts | 20 +++--- .../routes/benchmark_rules/bulk_action/v1.ts | 9 ++- .../benchmark_rules/get_states/get_states.ts | 2 +- .../routes/benchmark_rules/get_states/v1.ts | 34 +++++++++- .../routes/compliance_dashboard/get_trends.ts | 17 +++-- .../server/saved_objects/csp_settings.ts | 2 +- .../server/tasks/findings_stats_task.ts | 63 ++++++++++++++----- .../routes/csp_benchmark_rules_bulk_update.ts | 20 +++--- .../routes/mocks/benchmark_score_mock.ts | 1 + 13 files changed, 187 insertions(+), 103 deletions(-) diff --git a/x-pack/plugins/cloud_security_posture/common/types/rules/v3.ts b/x-pack/plugins/cloud_security_posture/common/types/rules/v3.ts index c2b70352aef9f..fb0310c088a19 100644 --- a/x-pack/plugins/cloud_security_posture/common/types/rules/v3.ts +++ b/x-pack/plugins/cloud_security_posture/common/types/rules/v3.ts @@ -6,7 +6,6 @@ */ import { schema, TypeOf } from '@kbn/config-schema'; -import type { SavedObjectsUpdateResponse } from '@kbn/core-saved-objects-api-server'; import { CSPM_POLICY_TEMPLATE, KSPM_POLICY_TEMPLATE } from '../../constants'; const DEFAULT_BENCHMARK_RULES_PER_PAGE = 25; @@ -136,46 +135,3 @@ export interface FindCspBenchmarkRuleResponse { } export type PageUrlParams = Record<'policyId' | 'packagePolicyId', string>; - -export const rulesToUpdate = schema.arrayOf( - schema.object({ - rule_id: schema.string(), - benchmark_id: schema.string(), - benchmark_version: schema.string(), - rule_number: schema.string(), - }) -); - -export const cspBenchmarkRulesBulkActionRequestSchema = schema.object({ - action: schema.oneOf([schema.literal('mute'), schema.literal('unmute')]), - rules: rulesToUpdate, -}); - -export type RulesToUpdate = TypeOf; - -export type CspBenchmarkRulesBulkActionRequestSchema = TypeOf< - typeof cspBenchmarkRulesBulkActionRequestSchema ->; - -const rulesStates = schema.recordOf( - schema.string(), - schema.object({ - muted: schema.boolean(), - benchmark_id: schema.string(), - benchmark_version: schema.string(), - rule_number: schema.string(), - rule_id: schema.string(), - }) -); - -export const cspSettingsSchema = schema.object({ - rules: rulesStates, -}); - -export type CspBenchmarkRulesStates = TypeOf; -export type CspSettings = TypeOf; - -export interface BulkActionBenchmarkRulesResponse { - newCspSettings: SavedObjectsUpdateResponse; - disabledRulesCounter: number; -} diff --git a/x-pack/plugins/cloud_security_posture/common/types/rules/v4.ts b/x-pack/plugins/cloud_security_posture/common/types/rules/v4.ts index 1ee8c584be770..994e09d9b9c2c 100644 --- a/x-pack/plugins/cloud_security_posture/common/types/rules/v4.ts +++ b/x-pack/plugins/cloud_security_posture/common/types/rules/v4.ts @@ -6,16 +6,14 @@ */ import { schema, TypeOf } from '@kbn/config-schema'; +import { SavedObjectsUpdateResponse } from '@kbn/core-saved-objects-api-server'; import { BenchmarksCisId } from '../latest'; - export type { cspBenchmarkRuleMetadataSchema, CspBenchmarkRuleMetadata, cspBenchmarkRuleSchema, CspBenchmarkRule, FindCspBenchmarkRuleResponse, - CspSettings, - CspBenchmarkRulesStates, } from './v3'; const DEFAULT_BENCHMARK_RULES_PER_PAGE = 25; @@ -113,3 +111,54 @@ export interface PageUrlParams { benchmarkId: BenchmarksCisId; benchmarkVersion: string; } + +export const rulesToUpdate = schema.arrayOf( + schema.object({ + rule_id: schema.string(), + benchmark_id: schema.string(), + benchmark_version: schema.string(), + rule_number: schema.string(), + }) +); + +export const cspBenchmarkRulesBulkActionRequestSchema = schema.object({ + action: schema.oneOf([schema.literal('mute'), schema.literal('unmute')]), + rules: rulesToUpdate, +}); + +export type RulesToUpdate = TypeOf; + +export type CspBenchmarkRulesBulkActionRequestSchema = TypeOf< + typeof cspBenchmarkRulesBulkActionRequestSchema +>; + +export interface CspBenchmarkRulesBulkActionResponse { + updated_benchmark_rules: CspBenchmarkRulesStates; + disabled_detection_rules?: string[]; + message: string; +} + +const ruleStateAttributes = schema.object({ + muted: schema.boolean(), + benchmark_id: schema.string(), + benchmark_version: schema.string(), + rule_number: schema.string(), + rule_id: schema.string(), +}); + +export type RuleStateAttributes = TypeOf; + +const rulesStates = schema.recordOf(schema.string(), ruleStateAttributes); + +export type CspBenchmarkRulesStates = TypeOf; + +export const cspSettingsSchema = schema.object({ + rules: rulesStates, +}); + +export type CspSettings = TypeOf; + +export interface BulkActionBenchmarkRulesResponse { + newCspSettings: SavedObjectsUpdateResponse; + disabledRules: string[]; +} diff --git a/x-pack/plugins/cloud_security_posture/server/create_indices/benchmark_score_mapping.ts b/x-pack/plugins/cloud_security_posture/server/create_indices/benchmark_score_mapping.ts index 2f743e2ed8d64..65e2c2fd61cb4 100644 --- a/x-pack/plugins/cloud_security_posture/server/create_indices/benchmark_score_mapping.ts +++ b/x-pack/plugins/cloud_security_posture/server/create_indices/benchmark_score_mapping.ts @@ -47,5 +47,8 @@ export const benchmarkScoreMapping: MappingTypeMapping = { low: { type: 'long', }, + is_enabled_rules_score: { + type: 'boolean', + }, }, }; diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/bulk_action.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/bulk_action.ts index 207143e1ef58d..b31bc731e0523 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/bulk_action.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/bulk_action.ts @@ -10,7 +10,8 @@ import { CspBenchmarkRulesBulkActionRequestSchema, CspBenchmarkRulesStates, cspBenchmarkRulesBulkActionRequestSchema, -} from '../../../../common/types/rules/v3'; + CspBenchmarkRulesBulkActionResponse, +} from '../../../../common/types/rules/v4'; import { CspRouter } from '../../../types'; import { CSP_BENCHMARK_RULES_BULK_ACTION_ROUTE_PATH } from '../../../../common/constants'; @@ -79,13 +80,16 @@ export const defineBulkActionCspBenchmarkRulesRoute = (router: CspRouter) => const updatedBenchmarkRules: CspBenchmarkRulesStates = handlerResponse.newCspSettings.attributes.rules!; - return response.ok({ - body: { - updated_benchmark_rules: updatedBenchmarkRules, - detection_rules: `disabled ${handlerResponse.disabledRulesCounter} detections rules.`, - message: 'The bulk operation has been executed successfully.', - }, - }); + const body: CspBenchmarkRulesBulkActionResponse = { + updated_benchmark_rules: updatedBenchmarkRules, + message: 'The bulk operation has been executed successfully.', + }; + + if (requestBody.action === 'mute' && handlerResponse.disabledRules) { + body.disabled_detection_rules = handlerResponse.disabledRules; + } + + return response.ok({ body }); } catch (err) { const error = transformError(err); diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/utils.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/utils.ts index f026e75702c56..5365d476a0e8d 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/utils.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/utils.ts @@ -16,7 +16,7 @@ import type { RulesToUpdate, CspBenchmarkRulesStates, CspSettings, -} from '../../../../common/types/rules/v3'; +} from '../../../../common/types/rules/v4'; import { convertRuleTagsToKQL, generateBenchmarkRuleTags, @@ -28,7 +28,9 @@ import { INTERNAL_CSP_SETTINGS_SAVED_OBJECT_TYPE, } from '../../../../common/constants'; -export const getRuleIdsToDisable = async (detectionRules: Array>) => { +export const getDetectionRuleIdsToDisable = async ( + detectionRules: Array> +) => { const idsToDisable = detectionRules .map((detectionRule) => { return detectionRule.data.map((data) => data.id); @@ -40,10 +42,11 @@ export const getRuleIdsToDisable = async (detectionRules: Array> -) => { - const idsToDisable = await getRuleIdsToDisable(detectionRules); - if (!idsToDisable.length) return; - return await detectionRulesClient.bulkDisableRules({ ids: idsToDisable }); +): Promise => { + const detectionRulesIdsToDisable = await getDetectionRuleIdsToDisable(detectionRules); + if (!detectionRulesIdsToDisable.length) return []; + await detectionRulesClient.bulkDisableRules({ ids: detectionRulesIdsToDisable }); + return detectionRulesIdsToDisable; }; export const getDetectionRules = async ( @@ -87,7 +90,7 @@ export const muteDetectionRules = async ( soClient: SavedObjectsClientContract, detectionRulesClient: RulesClient, rulesIds: string[] -): Promise => { +): Promise => { const benchmarkRules = await getBenchmarkRules(soClient, rulesIds); if (benchmarkRules.includes(undefined)) { throw new Error('At least one of the provided benchmark rule IDs does not exist'); @@ -99,8 +102,7 @@ export const muteDetectionRules = async ( const detectionRules = await getDetectionRules(detectionRulesClient, benchmarkRulesTags); const disabledDetectionRules = await disableDetectionRules(detectionRulesClient, detectionRules); - - return disabledDetectionRules ? disabledDetectionRules.rules.length : 0; + return disabledDetectionRules; }; export const updateRulesStates = async ( diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/v1.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/v1.ts index 4a35afd6eb642..a2f5c5c98b72d 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/v1.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/v1.ts @@ -17,7 +17,7 @@ import { import type { BulkActionBenchmarkRulesResponse, RulesToUpdate, -} from '../../../../common/types/rules/v3'; +} from '../../../../common/types/rules/v4'; const muteStatesMap = { mute: true, @@ -41,12 +41,11 @@ export const bulkActionBenchmarkRulesHandler = async ( const rulesKeys = rulesToUpdate.map((rule) => buildRuleKey(rule.benchmark_id, rule.benchmark_version, rule.rule_number) ); - const newRulesStates = setRulesStates(rulesKeys, muteStatesMap[action], rulesToUpdate); const newCspSettings = await updateRulesStates(encryptedSoClient, newRulesStates); - const disabledRulesCounter = - action === 'mute' ? await muteDetectionRules(soClient, detectionRulesClient, rulesIds) : 0; + const disabledDetectionRules = + action === 'mute' ? await muteDetectionRules(soClient, detectionRulesClient, rulesIds) : []; - return { newCspSettings, disabledRulesCounter }; + return { newCspSettings, disabledRules: disabledDetectionRules }; }; diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts index 985be3cb48eeb..e7c28d345c52d 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts @@ -8,7 +8,7 @@ import { transformError } from '@kbn/securitysolution-es-utils'; import { CspRouter } from '../../../types'; import { CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH } from '../../../../common/constants'; -import { CspBenchmarkRulesStates } from '../../../../common/types/rules/v3'; +import { CspBenchmarkRulesStates } from '../../../../common/types/rules/v4'; import { getCspBenchmarkRulesStatesHandler } from './v1'; export const defineGetCspBenchmarkRulesStatesRoute = (router: CspRouter) => diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts index 5697841bb3526..bf849be225bc1 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts @@ -4,9 +4,13 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; +import { + ISavedObjectsRepository, + SavedObjectsClientContract, +} from '@kbn/core-saved-objects-api-server'; import { transformError } from '@kbn/securitysolution-es-utils'; -import { CspBenchmarkRulesStates, CspSettings } from '../../../../common/types/rules/v3'; +import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { CspBenchmarkRulesStates, CspSettings } from '../../../../common/types/rules/v4'; import { INTERNAL_CSP_SETTINGS_SAVED_OBJECT_ID, INTERNAL_CSP_SETTINGS_SAVED_OBJECT_TYPE, @@ -23,7 +27,7 @@ export const createCspSettingObject = async (soClient: SavedObjectsClientContrac }; export const getCspBenchmarkRulesStatesHandler = async ( - encryptedSoClient: SavedObjectsClientContract + encryptedSoClient: SavedObjectsClientContract | ISavedObjectsRepository ): Promise => { try { const getSoResponse = await encryptedSoClient.get( @@ -43,3 +47,27 @@ export const getCspBenchmarkRulesStatesHandler = async ( ); } }; + +export const buildMutedRulesFilter = async ( + encryptedSoClient: ISavedObjectsRepository +): Promise => { + const rulesStates = await getCspBenchmarkRulesStatesHandler(encryptedSoClient); + const mutedRules = Object.fromEntries( + Object.entries(rulesStates).filter(([key, value]) => value.muted === true) + ); + + const mutedRulesFilterQuery = Object.keys(mutedRules).map((key) => { + const rule = mutedRules[key]; + return { + bool: { + must: [ + { term: { 'rule.benchmark.id': rule.benchmark_id } }, + { term: { 'rule.benchmark.version': rule.benchmark_version } }, + { term: { 'rule.benchmark.rule_number': rule.rule_number } }, + ], + }, + }; + }); + + return mutedRulesFilterQuery; +}; diff --git a/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_trends.ts b/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_trends.ts index f0369dd3a562a..fdd8ed6b709e2 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_trends.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_trends.ts @@ -54,14 +54,19 @@ export const getTrendsQuery = (policyTemplate: PosturePolicyTemplate) => ({ query: { bool: { filter: [{ term: { policy_template: policyTemplate } }], - must: { - range: { - '@timestamp': { - gte: 'now-1d', - lte: 'now', + must: [ + { + range: { + '@timestamp': { + gte: 'now-1d', + lte: 'now', + }, }, }, - }, + { + term: { is_enabled_rules_score: true }, + }, + ], }, }, }); diff --git a/x-pack/plugins/cloud_security_posture/server/saved_objects/csp_settings.ts b/x-pack/plugins/cloud_security_posture/server/saved_objects/csp_settings.ts index d163ca6e26f05..77c589edd6d1a 100644 --- a/x-pack/plugins/cloud_security_posture/server/saved_objects/csp_settings.ts +++ b/x-pack/plugins/cloud_security_posture/server/saved_objects/csp_settings.ts @@ -7,7 +7,7 @@ import { SavedObjectsType } from '@kbn/core/server'; import { SECURITY_SOLUTION_SAVED_OBJECT_INDEX } from '@kbn/core-saved-objects-server'; -import { cspSettingsSchema } from '../../common/types/rules/v3'; +import { cspSettingsSchema } from '../../common/types/rules/v4'; import { cspSettingsSavedObjectMapping } from './mappings'; import { INTERNAL_CSP_SETTINGS_SAVED_OBJECT_TYPE } from '../../common/constants'; diff --git a/x-pack/plugins/cloud_security_posture/server/tasks/findings_stats_task.ts b/x-pack/plugins/cloud_security_posture/server/tasks/findings_stats_task.ts index 93886c8f8acca..a0727ae4344a7 100644 --- a/x-pack/plugins/cloud_security_posture/server/tasks/findings_stats_task.ts +++ b/x-pack/plugins/cloud_security_posture/server/tasks/findings_stats_task.ts @@ -13,13 +13,16 @@ import { } from '@kbn/task-manager-plugin/server'; import { SearchRequest } from '@kbn/data-plugin/common'; import { ElasticsearchClient } from '@kbn/core/server'; -import type { Logger } from '@kbn/core/server'; +import { QueryDslQueryContainer } from '@kbn/data-views-plugin/common/types'; +import type { ISavedObjectsRepository, Logger } from '@kbn/core/server'; +import { buildMutedRulesFilter } from '../routes/benchmark_rules/get_states/v1'; import { getSafePostureTypeRuntimeMapping } from '../../common/runtime_mappings/get_safe_posture_type_runtime_mapping'; import { getIdentifierRuntimeMapping } from '../../common/runtime_mappings/get_identifier_runtime_mapping'; import { FindingsStatsTaskResult, ScoreByPolicyTemplateBucket, VulnSeverityAggs } from './types'; import { BENCHMARK_SCORE_INDEX_DEFAULT_NS, CSPM_FINDINGS_STATS_INTERVAL, + INTERNAL_CSP_SETTINGS_SAVED_OBJECT_TYPE, LATEST_FINDINGS_INDEX_DEFAULT_NS, LATEST_VULNERABILITIES_INDEX_DEFAULT_NS, VULNERABILITIES_SEVERITY, @@ -93,8 +96,13 @@ export function taskRunner(coreStartServices: CspServerPluginStartServices, logg async run(): Promise { try { logger.info(`Runs task: ${CSPM_FINDINGS_STATS_TASK_TYPE}`); - const esClient = (await coreStartServices)[0].elasticsearch.client.asInternalUser; - const status = await aggregateLatestFindings(esClient, logger); + const startServices = await coreStartServices; + const esClient = startServices[0].elasticsearch.client.asInternalUser; + const encryptedSoClient = startServices[0].savedObjects.createInternalRepository([ + INTERNAL_CSP_SETTINGS_SAVED_OBJECT_TYPE, + ]); + + const status = await aggregateLatestFindings(esClient, encryptedSoClient, logger); const updatedState: LatestTaskStateSchema = { runs: state.runs + 1, @@ -119,13 +127,15 @@ export function taskRunner(coreStartServices: CspServerPluginStartServices, logg }; } -const getScoreQuery = (): SearchRequest => ({ +const getScoreQuery = (filteredRules: QueryDslQueryContainer[]): SearchRequest => ({ index: LATEST_FINDINGS_INDEX_DEFAULT_NS, size: 0, // creates the safe_posture_type and asset_identifier runtime fields runtime_mappings: { ...getIdentifierRuntimeMapping(), ...getSafePostureTypeRuntimeMapping() }, query: { - match_all: {}, + bool: { + must_not: filteredRules, + }, }, aggs: { score_by_policy_template: { @@ -271,7 +281,8 @@ const getVulnStatsTrendQuery = (): SearchRequest => ({ const getFindingsScoresDocIndexingPromises = ( esClient: ElasticsearchClient, - scoresByPolicyTemplatesBuckets: ScoreByPolicyTemplateBucket['score_by_policy_template']['buckets'] + scoresByPolicyTemplatesBuckets: ScoreByPolicyTemplateBucket['score_by_policy_template']['buckets'], + isCustomScore: boolean ) => scoresByPolicyTemplatesBuckets.map((policyTemplateTrend) => { // creating score per cluster id objects @@ -321,6 +332,7 @@ const getFindingsScoresDocIndexingPromises = ( total_findings: policyTemplateTrend.total_findings.value, score_by_cluster_id: clustersStats, score_by_benchmark_id: benchmarkStats, + is_enabled_rules_score: isCustomScore, }, }); }); @@ -364,18 +376,27 @@ const getVulnStatsTrendDocIndexingPromises = ( export const aggregateLatestFindings = async ( esClient: ElasticsearchClient, + encryptedSoClient: ISavedObjectsRepository, logger: Logger ): Promise => { try { const startAggTime = performance.now(); - const scoreIndexQueryResult = await esClient.search( - getScoreQuery() + + const rulesFilter = await buildMutedRulesFilter(encryptedSoClient); + + const customScoreIndexQueryResult = await esClient.search( + getScoreQuery(rulesFilter) + ); + + const fullScoreIndexQueryResult = await esClient.search( + getScoreQuery([]) ); + const vulnStatsTrendIndexQueryResult = await esClient.search( getVulnStatsTrendQuery() ); - if (!scoreIndexQueryResult.aggregations && !vulnStatsTrendIndexQueryResult.aggregations) { + if (!customScoreIndexQueryResult.aggregations && !vulnStatsTrendIndexQueryResult.aggregations) { logger.warn(`No data found in latest findings index`); return 'warning'; } @@ -388,13 +409,23 @@ export const aggregateLatestFindings = async ( ); // getting score per policy template buckets - const scoresByPolicyTemplatesBuckets = - scoreIndexQueryResult.aggregations?.score_by_policy_template.buckets || []; + const customScoresByPolicyTemplatesBuckets = + customScoreIndexQueryResult.aggregations?.score_by_policy_template.buckets || []; + + const fullScoresByPolicyTemplatesBuckets = + fullScoreIndexQueryResult.aggregations?.score_by_policy_template.buckets || []; // iterating over the buckets and return promises which will index a modified document into the scores index - const findingsScoresDocIndexingPromises = getFindingsScoresDocIndexingPromises( + const findingsCustomScoresDocIndexingPromises = getFindingsScoresDocIndexingPromises( + esClient, + customScoresByPolicyTemplatesBuckets, + true + ); + + const findingsFullScoresDocIndexingPromises = getFindingsScoresDocIndexingPromises( esClient, - scoresByPolicyTemplatesBuckets + fullScoresByPolicyTemplatesBuckets, + false ); const vulnStatsTrendDocIndexingPromises = getVulnStatsTrendDocIndexingPromises( @@ -406,7 +437,11 @@ export const aggregateLatestFindings = async ( // executing indexing commands await Promise.all( - [...findingsScoresDocIndexingPromises, vulnStatsTrendDocIndexingPromises].filter(Boolean) + [ + ...findingsCustomScoresDocIndexingPromises, + findingsFullScoresDocIndexingPromises, + vulnStatsTrendDocIndexingPromises, + ].filter(Boolean) ); const totalIndexTime = Number(performance.now() - startIndexTime).toFixed(2); diff --git a/x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts b/x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts index c2e597b2d4873..022ab5e3b32ff 100644 --- a/x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts +++ b/x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts @@ -45,7 +45,7 @@ export default function ({ getService }: FtrProviderContext) { }; const createDetectionRule = async (rule: CspBenchmarkRule) => { - await supertest + const detectionRule = await supertest .post(DETECTION_ENGINE_RULES_URL) .set('version', DETECTION_RULE_RULES_API_CURRENT_VERSION) .set('kbn-xsrf', 'xxxx') @@ -74,7 +74,9 @@ export default function ({ getService }: FtrProviderContext) { name: rule.metadata.name, description: rule.metadata.rationale, tags: generateBenchmarkRuleTags(rule.metadata), - }); + }) + .expect(200); + return detectionRule; }; /** @@ -98,7 +100,7 @@ export default function ({ getService }: FtrProviderContext) { beforeEach(async () => { await kibanaServer.savedObjects.clean({ - types: ['cloud-security-posture-settings'], + types: ['cloud-security-posture-settings', 'alert'], }); }); @@ -152,7 +154,7 @@ export default function ({ getService }: FtrProviderContext) { }, }) ); - expectExpect(body.detection_rules).toEqual('disabled 0 detections rules.'); + expectExpect(body.disabled_detection_rules).toEqual([]); }); it('unmute rules successfully', async () => { @@ -312,7 +314,7 @@ export default function ({ getService }: FtrProviderContext) { it('mute detection rule successfully', async () => { const rule1 = await getRandomCspBenchmarkRule(); - await createDetectionRule(rule1); + const detectionRule = await createDetectionRule(rule1); const { body } = await supertest .post(`/internal/cloud_security_posture/rules/_bulk_action`) @@ -332,14 +334,14 @@ export default function ({ getService }: FtrProviderContext) { }) .expect(200); - expectExpect(body.detection_rules).toEqual('disabled 1 detections rules.'); + expectExpect(body.disabled_detection_rules).toEqual([detectionRule.body.id]); }); - it('Expect to two benchmark rules and one detection rule', async () => { + it('Expect to mute two benchmark rules and one detection rule', async () => { const rule1 = await getRandomCspBenchmarkRule(); const rule2 = await getRandomCspBenchmarkRule(); - await createDetectionRule(rule1); + const detectionRule = await createDetectionRule(rule1); const { body } = await supertest .post(`/internal/cloud_security_posture/rules/_bulk_action`) @@ -365,7 +367,7 @@ export default function ({ getService }: FtrProviderContext) { }) .expect(200); - expectExpect(body.detection_rules).toEqual('disabled 1 detections rules.'); + expectExpect(body.disabled_detection_rules).toEqual([detectionRule.body.id]); }); it('set wrong action input', async () => { diff --git a/x-pack/test/cloud_security_posture_api/routes/mocks/benchmark_score_mock.ts b/x-pack/test/cloud_security_posture_api/routes/mocks/benchmark_score_mock.ts index f24c960783e53..58453003b5b6e 100644 --- a/x-pack/test/cloud_security_posture_api/routes/mocks/benchmark_score_mock.ts +++ b/x-pack/test/cloud_security_posture_api/routes/mocks/benchmark_score_mock.ts @@ -9,6 +9,7 @@ export const getBenchmarkScoreMockData = (postureType: string) => [ { total_findings: 1, policy_template: postureType, + is_enabled_rules_score: true, '@timestamp': '2023-11-22T16:10:55.229268215Z', score_by_cluster_id: { 'Another Upper case account id': { From b0ab92844a4a23aa642cad14b4582ed67fe3514f Mon Sep 17 00:00:00 2001 From: Jon Date: Wed, 3 Jan 2024 07:10:36 -0600 Subject: [PATCH 072/323] [ci] Upgrade axios to 1.6.3 (#173935) https://github.com/axios/axios/blob/v1.x/CHANGELOG.md --- .buildkite/package-lock.json | 129 ++++++++++++++++++++++++++++++++--- .buildkite/package.json | 4 +- 2 files changed, 122 insertions(+), 11 deletions(-) diff --git a/.buildkite/package-lock.json b/.buildkite/package-lock.json index 745e1867af10a..62647ca6f2f8a 100644 --- a/.buildkite/package-lock.json +++ b/.buildkite/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "dependencies": { "@octokit/rest": "^18.10.0", - "axios": "^0.21.4", + "axios": "^1.6.3", "globby": "^11.1.0", "js-yaml": "^4.1.0", "minimatch": "^5.0.1", @@ -345,12 +345,19 @@ "node": "*" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.3.tgz", + "integrity": "sha512-fWyNdeawGam70jXSVlKl+SUNVcL6j6W79CuSIPfi6HnDUmSCH6gyUys/HrqHeA/wU0Az41rRgean494d0Jb+ww==", "dependencies": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/balanced-match": { @@ -511,6 +518,17 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -564,6 +582,14 @@ "node": ">=6" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/deprecation": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", @@ -694,6 +720,19 @@ } } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1012,6 +1051,25 @@ "node": ">=8.6" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/minimatch": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", @@ -1259,6 +1317,11 @@ "node": ">= 8" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -1932,12 +1995,19 @@ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.3.tgz", + "integrity": "sha512-fWyNdeawGam70jXSVlKl+SUNVcL6j6W79CuSIPfi6HnDUmSCH6gyUys/HrqHeA/wU0Az41rRgean494d0Jb+ww==", "requires": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "balanced-match": { @@ -2060,6 +2130,14 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2096,6 +2174,11 @@ "type-detect": "^4.0.0" } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, "deprecation": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", @@ -2182,6 +2265,16 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==" }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2414,6 +2507,19 @@ "picomatch": "^2.3.1" } }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, "minimatch": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", @@ -2581,6 +2687,11 @@ "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", "dev": true }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", diff --git a/.buildkite/package.json b/.buildkite/package.json index d38af884828e5..0321711b7480d 100644 --- a/.buildkite/package.json +++ b/.buildkite/package.json @@ -8,7 +8,7 @@ }, "dependencies": { "@octokit/rest": "^18.10.0", - "axios": "^0.21.4", + "axios": "^1.6.3", "globby": "^11.1.0", "js-yaml": "^4.1.0", "minimatch": "^5.0.1", @@ -30,4 +30,4 @@ "#pipeline-utils": "./pipeline-utils/index.ts", "#pipeline-utils/*": "./pipeline-utils/*" } -} +} \ No newline at end of file From 366a4afe02137bb937966d53db693dd3e63bcfd1 Mon Sep 17 00:00:00 2001 From: Jon Date: Wed, 3 Jan 2024 07:12:13 -0600 Subject: [PATCH 073/323] [actions] Upgrade checkout to v4 (#173990) v2 defaults to using node 12, v4 is node 20. https://github.com/actions/checkout/releases --- .github/workflows/codeql.yml | 2 +- .github/workflows/fix-version-gaps.yml | 2 +- .github/workflows/label-failed-test.yml | 2 +- .github/workflows/on-merge.yml | 2 +- .github/workflows/skip-failed-test.yml | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index d7fd5af4266c9..c4819f86fa1f9 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -22,7 +22,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: ${{ matrix.branch }} diff --git a/.github/workflows/fix-version-gaps.yml b/.github/workflows/fix-version-gaps.yml index e64a4983d6350..bdeffcf380384 100644 --- a/.github/workflows/fix-version-gaps.yml +++ b/.github/workflows/fix-version-gaps.yml @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Actions - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: repository: 'elastic/kibana-github-actions' ref: main diff --git a/.github/workflows/label-failed-test.yml b/.github/workflows/label-failed-test.yml index bfd6e3e038fb3..3d1a26844162b 100644 --- a/.github/workflows/label-failed-test.yml +++ b/.github/workflows/label-failed-test.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout kibana-operations - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: repository: 'elastic/kibana-operations' ref: main diff --git a/.github/workflows/on-merge.yml b/.github/workflows/on-merge.yml index 072767f0000eb..b02129edb6fe0 100644 --- a/.github/workflows/on-merge.yml +++ b/.github/workflows/on-merge.yml @@ -24,7 +24,7 @@ jobs: ) steps: - name: Checkout Actions - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: repository: 'elastic/kibana-github-actions' ref: main diff --git a/.github/workflows/skip-failed-test.yml b/.github/workflows/skip-failed-test.yml index 039d0ab8aa8b4..3670157aebae9 100644 --- a/.github/workflows/skip-failed-test.yml +++ b/.github/workflows/skip-failed-test.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Actions - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: repository: 'elastic/kibana-github-actions' ref: main @@ -30,7 +30,7 @@ jobs: token: ${{secrets.KIBANAMACHINE_TOKEN}} - name: Checkout kibana-operations - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: repository: 'elastic/kibana-operations' ref: main From 9215e17cb7c9ce49e7b9347ea578ec363d50dd8e Mon Sep 17 00:00:00 2001 From: Mykola Harmash Date: Wed, 3 Jan 2024 14:13:09 +0100 Subject: [PATCH 074/323] [ObsUX][Profiling, Infra] Show "No Data" messages when there is no profiling data (#173633) Closes https://github.com/elastic/kibana/issues/173153 ## Summary Adds a message when there is no data for flamegraph or top functions. https://github.com/elastic/kibana/assets/793851/2a6158ca-86d3-4b23-9807-dc177ce0361b --- .../tabs/profiling/empty_data_prompt.tsx | 38 +++++++++++++++++++ .../tabs/profiling/flamegraph.tsx | 5 +++ .../tabs/profiling/functions.tsx | 5 +++ 3 files changed, 48 insertions(+) create mode 100644 x-pack/plugins/infra/public/components/asset_details/tabs/profiling/empty_data_prompt.tsx diff --git a/x-pack/plugins/infra/public/components/asset_details/tabs/profiling/empty_data_prompt.tsx b/x-pack/plugins/infra/public/components/asset_details/tabs/profiling/empty_data_prompt.tsx new file mode 100644 index 0000000000000..07cf4773fc418 --- /dev/null +++ b/x-pack/plugins/infra/public/components/asset_details/tabs/profiling/empty_data_prompt.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 { EuiEmptyPrompt, EuiSpacer } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +export function EmptyDataPrompt() { + return ( + <> + + + {i18n.translate('xpack.infra.profiling.emptyDataPromptTitle', { + defaultMessage: 'No data found', + })} + + } + body={ +

+ {i18n.translate('xpack.infra.profiling.emptyDataPromptBody', { + defaultMessage: + 'Make sure this host is sending profiling data or try selecting a different date range.', + })} +

+ } + /> + + ); +} diff --git a/x-pack/plugins/infra/public/components/asset_details/tabs/profiling/flamegraph.tsx b/x-pack/plugins/infra/public/components/asset_details/tabs/profiling/flamegraph.tsx index a00b9373c2f02..80a7f0ad8539c 100644 --- a/x-pack/plugins/infra/public/components/asset_details/tabs/profiling/flamegraph.tsx +++ b/x-pack/plugins/infra/public/components/asset_details/tabs/profiling/flamegraph.tsx @@ -17,6 +17,7 @@ import { useTabSwitcherContext } from '../../hooks/use_tab_switcher'; import { ContentTabIds } from '../../types'; import { ErrorPrompt } from './error_prompt'; import { ProfilingLinks } from './profiling_links'; +import { EmptyDataPrompt } from './empty_data_prompt'; export function Flamegraph() { const { services } = useKibanaContextForPlugin(); @@ -47,6 +48,10 @@ export function Flamegraph() { return ; } + if (!loading && response?.TotalSamples === 0) { + return ; + } + return ( <> ; } + if (!loading && response?.TotalCount === 0) { + return ; + } + return ( <> Date: Wed, 3 Jan 2024 14:29:39 +0100 Subject: [PATCH 075/323] [Docs][Maps] Update the asset tracking tutorial (#173999) Fixes #167484 Updates the [asset tracking tutorial](https://www.elastic.co/guide/en/kibana/current/asset-tracking-tutorial.html) with the following improvements: * From #167484, @Danouchka contributed improvements to the way the Elasticsearch assets are defined to work with Elastic Agent * Moved some content to use the Kibana Console to generate assets, instead of going through all the UI elements * Updated references to the data that tracks not only Portland buses but also trains and light trains * Replaces the alert to use the Index connector * Adds a new section on visualizing the alerts * Images updated to Kibana 8.11 UI --- docs/maps/asset-tracking-tutorial.asciidoc | 547 +++++++++++++----- .../agent-policy-id.png | Bin 0 -> 45821 bytes .../alert_connector.png | Bin 0 -> 59261 bytes .../bounding_box_icon.png | Bin 3887 -> 4527 bytes .../construction_zones.png | Bin 2561913 -> 572077 bytes .../asset-tracking-tutorial/data_view.png | Bin 90260 -> 83246 bytes .../asset-tracking-tutorial/discover.png | Bin 263968 -> 352361 bytes .../logstash_output.png | Bin 498928 -> 0 bytes .../asset-tracking-tutorial/policy_id.png | Bin 0 -> 20878 bytes .../rule_configuration.png | Bin 40948 -> 61759 bytes .../top_hits_layer_style.png | Bin 53670 -> 41589 bytes .../tracking_containment_configuration.png | Bin 27325 -> 0 bytes .../tracks_and_top_hits.png | Bin 1060389 -> 547836 bytes .../asset-tracking-tutorial/tracks_layer.png | Bin 1017542 -> 956238 bytes .../vehicle_alerts.png | Bin 0 -> 1105222 bytes 15 files changed, 393 insertions(+), 154 deletions(-) create mode 100644 docs/maps/images/asset-tracking-tutorial/agent-policy-id.png create mode 100644 docs/maps/images/asset-tracking-tutorial/alert_connector.png delete mode 100644 docs/maps/images/asset-tracking-tutorial/logstash_output.png create mode 100644 docs/maps/images/asset-tracking-tutorial/policy_id.png delete mode 100644 docs/maps/images/asset-tracking-tutorial/tracking_containment_configuration.png create mode 100644 docs/maps/images/asset-tracking-tutorial/vehicle_alerts.png diff --git a/docs/maps/asset-tracking-tutorial.asciidoc b/docs/maps/asset-tracking-tutorial.asciidoc index 7c92c7b05b37a..235d9dd92ffb7 100644 --- a/docs/maps/asset-tracking-tutorial.asciidoc +++ b/docs/maps/asset-tracking-tutorial.asciidoc @@ -1,17 +1,21 @@ +:ems-asset-index-name: TriMet Positions + + [role="xpack"] [[asset-tracking-tutorial]] == Track, visualize, and alert on assets in real time Are you interested in asset tracking? Good news! Visualizing and analyzing data that moves is easy with *Maps*. You can track the location of an IoT device and monitor a package or vehicle in transit. -In this tutorial, you’ll look at live urban transit data from the city of Portland, Oregon. You’ll watch the city buses, use the data to visualize congestion, and notify a dispatch team when a bus enters a construction zone. +In this tutorial, you’ll look at live urban transit data from the city of Portland, Oregon. You’ll watch the city buses, tram, and trains, use the data to visualize congestion, and notify a dispatch team when a vehicle enters a construction zone. You’ll learn to: -- Use {agent} to ingest the TriMet REST API into {es}. +- Use {agent} to ingest the https://developer.trimet.org/ws_docs/[TriMet REST API] into {es}. - Create a map with layers that visualize asset tracks and last-known locations. - Use symbols and colors to style data values and show which direction an asset is heading. - Set up tracking containment alerts to monitor moving vehicles. +- Display those alerts on a map. When you complete this tutorial, you’ll have a map that looks like this: @@ -26,8 +30,8 @@ image::maps/images/asset-tracking-tutorial/construction_zones.png[] - {fleet-guide}/fleet-overview.html[Fleet] is enabled on your cluster, and one or more {fleet-guide}/elastic-agent-installation.html[{agent}s] is enrolled. [float] -=== Part 1: Ingest the Portland bus data -To get to the fun of visualizing and alerting on Portland buses, you must first add the *Custom API* integration to an Elastic Agent policy to get the TriMet Portland bus data into {es}. +=== Part 1: Ingest the Portland public transport data +To get to the fun of visualizing and alerting on Portland public transport vehicles, you must first add the *Custom API* integration to an Elastic Agent policy to get the TriMet Portland data into {es}. [float] ==== Step 1: Set up an Elasticsearch index @@ -35,6 +39,9 @@ To get to the fun of visualizing and alerting on Portland buses, you must first . In Kibana, open the main menu, then click *Dev Tools*. . In *Console*, create the `tri_met_tracks` index lifecyle policy. This policy will keep the events in the hot data phase for 7 days. The data then moves to the warm phase. After 365 days in the warm phase, the data is deleted. + +.ILM policy definition +[%collapsible%open] +==== [source,js] ---------------------------------- PUT _ilm/policy/tri_met_tracks @@ -73,18 +80,87 @@ PUT _ilm/policy/tri_met_tracks } } ---------------------------------- -. In *Console*, create the `tri_met_tracks` index template, which is configured to use datastreams: +==== +. In **Console**, add the `tri_met_tracks_for_elastic_agent` ingest pipeline. + +.Ingest policy definition +[%collapsible%open] +==== [source,js] ---------------------------------- -PUT _index_template/tri_met_tracks +PUT _ingest/pipeline/tri_met_tracks_for_elastic_agent +{ + "processors": [ + { + "set": { + "field": "trimet.inCongestion", + "value": "false", + "if": "ctx?.trimet?.inCongestion == null" + } + }, + { + "convert": { + "field": "trimet.bearing", + "type": "float" + } + }, + { + "convert": { + "field": "trimet.inCongestion", + "type": "boolean" + } + }, + { + "script": { + "source": """ + double lat=Math.round(ctx['trimet']['latitude']*1e6)/1e6; + double lon=Math.round(ctx['trimet']['longitude']*1e6)/1e6; + ctx['trimet']['location'] = lat + "," + lon + """, + "description": "Generate the geometry rounding to six decimals" + } + }, + { + "script": { + "source": """ctx['_id'] = ctx['trimet']['vehicleID'] + "_" + ctx['trimet']['time']""", + "description": "Generate documentID" + } + }, + { + "remove": { + "field": [ + "message", + "input", + "agent", + "ecs", + "host", + "event", + "trimet.longitude", + "trimet.latitude" + ] + } + } + ] +} +---------------------------------- +==== +. In *Console*, create the component and index template, which is configured to use datastreams and the previous ILM policy and ingest pipeline: ++ +.Index component template +[%collapsible%open] +==== +[source,js] +---------------------------------- +PUT _component_template/logs-httpjson.trimet@package { "template": { "settings": { "index": { "lifecycle": { "name": "tri_met_tracks" - } + }, + "codec": "best_compression", + "default_pipeline": "tri_met_tracks_for_elastic_agent" } }, "mappings": { @@ -105,6 +181,61 @@ PUT _index_template/tri_met_tracks "dynamic_templates": [], "date_detection": true, "properties": { + "input": { + "properties": { + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "@timestamp": { + "ignore_malformed": false, + "type": "date" + }, + "ecs": { + "properties": { + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "data_stream": { + "properties": { + "namespace": { + "type": "constant_keyword" + }, + "type": { + "type": "constant_keyword" + }, + "dataset": { + "type": "constant_keyword" + } + } + }, + "event": { + "properties": { + "created": { + "type": "date" + }, + "module": { + "type": "constant_keyword", + "value": "httpjson" + }, + "dataset": { + "type": "constant_keyword", + "value": "httpjson.trimet" + } + } + }, + "message": { + "type": "match_only_text" + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + }, "trimet": { "type": "object", "properties": { @@ -197,133 +328,179 @@ PUT _index_template/tri_met_tracks } } } - }, - "index_patterns": [ - "tri_met_tracks*" - ], - "data_stream": { - "hidden": false, - "allow_custom_routing": false - }, - "composed_of": [] + } } ---------------------------------- -. In **Console**, add the `tri_met_track` ingest pipeline. +==== + +.Index template +[%collapsible%open] +==== [source,js] ---------------------------------- -PUT _ingest/pipeline/tri_met_tracks +PUT _index_template/logs-httpjson.trimet { - "processors": [ - { - "set": { - "field": "trimet.inCongestion", - "value": "false", - "if": "ctx?.trimet?.inCongestion == null" - } - }, - { - "convert": { - "field": "trimet.bearing", - "type": "float" - } - }, - { - "convert": { - "field": "trimet.inCongestion", - "type": "boolean" - } - }, - { - "script": { - "source": "ctx['trimet']['location'] = ctx['trimet']['latitude'] + \",\" + ctx['trimet']['longitude']" - } - }, - { - "script": { - "source": "ctx['_id'] = ctx['trimet']['vehicleID'] + \"_\" + ctx['trimet']['time']", - "description": "Generate documentID" - } - }, - { - "remove": { - "field": [ - "message", - "input", - "agent", - "ecs", - "host", - "event", - "trimet.longitude", - "trimet.latitude" - ] - } - }, - { - "set": { - "field": "_index", - "value": "tri_met_tracks" - } - } - ] + "index_patterns": [ + "logs-httpjson.trimet-*" + ], + "composed_of": [ + "logs-httpjson.trimet@package", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 200, + "data_stream": { + "hidden": false, + "allow_custom_routing": false + } } ---------------------------------- +==== + [float] ==== Step 2: Configure {agent} -. From the {kib} main menu, click *Fleet*, then the *Agent policies* tab. - -. Click the name of the agent policy where you want to add the *Custom API* integration. The configuration changes you make only apply to the policy you select. - -. Click the name of the *Custom API* integration, or add the integration if the agent policy does not yet have it. +++++ +
+
+ + +
+
+++++ +If you already have an agent policy, get its identifier from the `View policy` action fly out -. From the *Edit Custom API integration* page, expand the *Change defaults* section. - -. Set the *Dataset name* to *httpjson.trimet*. - -. Set the *Ingest Pipeline* to *tri_met_pipeline*. - -. Set the *Request URL* to *https://developer.trimet.org/ws/v2/vehicles?appID=*. - -. Set *Response Split* to *target: body.resultSet.vehicle*. - -. At the bottom of the configuration, expand *Advanced options*. +[role="screenshot"] +image::maps/images/asset-tracking-tutorial/agent-policy-id.png[] -. Set *Processors* to: +[role="screenshot"] +image::maps/images/asset-tracking-tutorial/policy_id.png[] +++++ +
+ +
+++++ + +Execute the following request from the **Console** to install a new Custom API integration. Put the corresponding values for the `policy_id` and `tri_met_app_id`. + +.Create a new Custom API integration +[%collapsible%open] +==== +[source,js] ---------------------------------- -- decode_json_fields: - fields: ["message"] - target: "trimet" +POST kbn:/api/fleet/package_policies +{ + "policy_id": "", <1> + "package": { + "name": "httpjson", + "version": "1.18.0" + }, + "name": "httpjson-trimet", + "description": "TriMet data upload", + "namespace": "default", + "inputs": { + "generic-httpjson": { + "enabled": true, + "streams": { + "httpjson.generic": { + "enabled": true, + "vars": { + "data_stream.dataset": "httpjson.trimet", + "request_url": "https://developer.trimet.org/ws/v2/vehicles?appID=", <2> + "request_interval": "1m", <3> + "request_method": "GET", + "response_split": "target: body.resultSet.vehicle", + "request_redirect_headers_ban_list": [], + "oauth_scopes": [], + "processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"trimet\"\n", + "tags": [ + "trimet" + ] + } + } + } + } + } +} ---------------------------------- -. Leave everything else as defaults. +<1> Agent policy identifier +<2> TriMet application identifier +<3> Retrieve vehicle positions every minute +==== -. Click *Save integration* to deploy the configuration to any {agent} with the policy assigned. +This request will configure the integration to make requests to the TriMet REST API every minute, splitting the API response into one message per vehicle into the `httpjson.trimet` data stream, and encoding the vehicle's data into the `trimet` field. The rest of the data management will be handled by the ingest policy defined in the first step. [float] ==== Step 3: Create a data view for the tri_met_tracks {es} index -. In {kib}, open the main menu, and click *Stack Management > Data Views*. -. Click *Create data view*. -. Give the data view a name: *tri_met_tracks**. -. Set the index pattern as: *tri_met_tracks**. -. Set the *Timestamp field* to *trimet.time*. -. Click *Save data view to Kibana*. +In **Console** execute this request to create a new {kib} Data View called {ems-asset-index-name}: + +[source,js,subs="attributes"] +---------------------------------- +POST kbn:/api/data_views/data_view +{ + "data_view": { + "title": "logs-httpjson.trimet-*", + "name": "{ems-asset-index-name}", + "timeFieldName": "trimet.time" + } +} +---------------------------------- {kib} shows the fields in your data view. [role="screenshot"] image::maps/images/asset-tracking-tutorial/data_view.png[] +TIP: You may want to tweak this Data View to adjust the field names and number or date formatting to your personal preferences. These settings are honored by the Maps application in the tooltips and other UI elements. Check <> for more details. + [float] -==== Step 4: Explore the Portland bus data +==== Step 4: Explore the Portland TriMet data . Open the main menu, and click *Discover*. -. Set the data view to *tri_met_tracks**. +. Set the data view to *{ems-asset-index-name}*. . Open the <>, and set the time range to the last 15 minutes. . Expand a document and explore some of the fields that you will use later in this tutorial: `trimet.bearing`, `trimet.inCongestion`, `trimet.location`, and `trimet.vehicleID`. @@ -332,7 +509,7 @@ image::maps/images/asset-tracking-tutorial/discover.png[] [float] === Part 2: Build an operational map -It's hard to get an overview of Portland buses by looking at individual events. Let's create a map to show the bus routes and current location for each bus, along with the direction the buses are heading. +It's hard to get an overview of Portland vehicles by looking at individual events. Let's create a map to show the routes and current location for each vehicle, along with the direction they are heading. [float] ==== Step 1: Create your map @@ -347,65 +524,66 @@ Create your map and set the theme for the default layer to dark mode. [float] ==== Step 2. Add a tracks layer -Add a layer to show the bus routes for the last 15 minutes. +Add a layer to show the vehicle routes for the last 15 minutes. . Click *Add layer*. . Click *Tracks*. -. Select the *tri_met_tracks** data view. +. Select the *{ems-asset-index-name}* data view. . Define the tracks: -.. Set *Entity* to *trimet.vehicleID*. -.. Set *Sort* to *trimet.time*. +.. Set *Entity* to `trimet.vehicleID`. +.. Set *Sort* to `trimet.time`. . Click *Add and continue*. . In Layer settings: -.. Set *Name* to *Buses*. +.. Set *Name* to *Tracks*. .. Set *Opacity* to 80%. . Scroll to *Layer Style*, and set *Border color* to pink. . Click *Keep changes*. -. In the *Layers* list, click *Buses*, and then click *Fit to data*. +. In the *Layers* list, click *Tracks*, and then click *Fit to data*. -At this point, you have a map with lines that represent the routes of the buses as they move around the city. +At this point, you have a map with lines that represent the routes of the TriMet vehicles as they move around the city. [role="screenshot"] image::maps/images/asset-tracking-tutorial/tracks_layer.png[] [float] -==== Step 3. Indicate the direction of the bus tracks +==== Step 3. Indicate the direction of the vehicle tracks -Add a layer that uses attributes in the data to set the style and orientation of the buses. You’ll see the direction buses are headed and what traffic is like. +Add a layer that uses attributes in the data to set the style and orientation of the vehicles. You’ll see the direction vehicles are headed and what traffic is like. . Click *Add layer*, and then select *Top Hits per entity*. -. Select the *tri_met_tracks** data view. -. To display the most recent location per bus: -.. Set *Entity* to *trimet.vehicleID*. +. Select the *{ems-asset-index-name}* data view. +. To display the most recent location per vehicle: +.. Set *Entity* to `trimet.vehicleID`. .. Set *Documents per entity* to 1. -.. Set *Sort field* to *trimet.time*. +.. Set *Sort field* to `trimet.time`. .. Set *Sort order* to *descending*. . Click *Add and continue*. +. Change the name to *Latest positions*. . Scroll to *Layer Style*. .. Set *Symbol type* to *icon*. -.. Set *Icon* to *arrow-es*. +.. Set *Icon* to *Arrow*. .. Set the *Fill color*: -... Select *By value* styling, and set the field to *trimet.inCongestion*. +... Select *By value* styling, and set the field to `trimet.inCongestion`. ... Use a *Custom color palette*. -... Set the *Other* color to black. -... Add a green class for *false*, meaning the bus is not in traffic. -... Add a red class for *true*, meaning the bus is in congestion. +... Set the *Other* color to a dark grey. +... Add a green class for `false`, meaning the vehicle is not in traffic. +... Add a red class for `true`, meaning the vehicle is in congestion. .. Set *Border width* to 0. -.. Change *Symbol orientation* to use *By value* and the *trimet.bearing* field. +.. Change *Symbol orientation* to use *By value* and the `trimet.bearing` field. + [role="screenshot"] image::maps/images/asset-tracking-tutorial/top_hits_layer_style.png[] . Click *Keep changes*. . Open the <>, and set *Refresh every* to 10 seconds, and click *Start*. -Your map should automatically refresh every 10 seconds to show the latest bus positions and tracks. +Your map should automatically refresh every 10 seconds to show the latest vehicle positions and tracks. [role="screenshot"] image::maps/images/asset-tracking-tutorial/tracks_and_top_hits.png[] [float] === Part 3: Setup geo-fencing alerts -Let's make TriMet Portland bus data actionable and alert when buses enter construction zones. +Let's make TriMet Portland data actionable and alert when vehicles enter construction zones. [float] ==== Step 1. Add a construction zone @@ -414,7 +592,7 @@ Add a layer for construction zones, which you will draw on the map. The construc . Click *Add layer*. . Click *Create index*. -. Set *Index name* to *trimet_construction_zones*. +. Set *Index name* to `trimet_construction_zones`. . Click *Create index*. . Draw 2 or 3 construction zones on your map: .. In the toolbar on left side of the map, select the bounding box icon image:maps/images/asset-tracking-tutorial/bounding_box_icon.png[bounding box icon]. @@ -429,9 +607,9 @@ Add a layer for construction zones, which you will draw on the map. The construc .. Under *Add to dashboard*, select *None*. .. Click *Save and add to library*. -The map now represents an operational view of live bus traffic. You’ll see the direction that the buses are traveling, and whether they are near or have entered a construction zone. +The map now represents an operational view of live public transport traffic. You’ll see the direction that the vehicles are traveling, and whether they are near or have entered a construction zone. -Your map is now complete. +Your map is now complete for now, congratulations! [role="screenshot"] image::maps/images/asset-tracking-tutorial/construction_zones.png[] @@ -440,49 +618,110 @@ image::maps/images/asset-tracking-tutorial/construction_zones.png[] [float] ==== Step 2. Configure an alert -Create a new alert by defining a rule and a connector. The rule includes the conditions that will trigger the alert, and the connector defines what action takes place once the alert is triggered. In this case, each alert will log a message to the {kib} log. +Create a new alert by defining a rule and a connector. The rule includes the conditions that will trigger the alert, and the connector defines what action takes place once the alert is triggered. In this case, each alert will insert a new document into an {es} index. + +NOTE: For this example, you will set the rule to check every minute. However, when running in production this value may need to be adjusted to a higher check interval to avoid performance issues. Refer to <> for more information. -NOTE: For this example, you will set the rule to check every 5 seconds. However, when running in production, consider setting a higher check interval (such as 1 minute) to avoid performance issues. Refer to <> for more information. +. In the {kib} **Console** create a new index and Data view ++ +.Create an index and Data View for the alerts +[%collapsible%open] +==== +[source,js] +---------------------------------- +# Create the alerts index +PUT trimet_alerts +{ + "settings": { + "number_of_replicas": 1, + "number_of_shards": 1 + }, + "mappings": { + "properties": { + "vehicleId": {"type": "keyword"}, + "documentId": {"type": "text"}, + "vehicleTime": {"type": "date"}, + "detectionTime": {"type": "date"}, + "location": {"type": "geo_point"}, + "boundaryId": {"type": "keyword"}, + "message": {"type": "text"} + } + } +} +# Create the alerts index data view +POST kbn:/api/data_views/data_view +{ + "data_view": { + "title": "trimet_alerts", + "name": "TriMet Alerts", + "timeFieldName": "detectionTime" + } +} +---------------------------------- +==== . Open *{stack-manage-app}*, and then click *{rules-ui}*. . Click *Create rule*. -. Name the rule *Bus Alerts*. -. Set *Check every* to *5 seconds*. +. Name the rule *TriMet Alerts*. +. Select the *Tracking containment* rule type. +. In the *Entities* block +.. Select the *{ems-asset-index-name}* Data View +.. Select `trimet.time` as the *time field* +.. Select `trimet.location` as the *location field* +.. Select `trimet.vehicleID` as the *entity field* +. In the *Boundaries* block +.. Select the *trimet_construction_zones* Data View +.. Select `coordinates` as the *location field* +.. Leave the *Display name* and *Filter* empty +. Select the rule to check every minute +. Set *Check every* to *1 minute*. . Notify *Only on status change*. + [role="screenshot"] image::maps/images/asset-tracking-tutorial/rule_configuration.png[] -. Select the *Tracking containment* rule type. -. Set *Select entity*: -.. Set *INDEX* to *tri_met_tracks**. -.. Set *BY* to *trimet.vehicleID*. -. Set *Select boundary* *INDEX* to *trimet_construction_zones*. -+ -[role="screenshot"] -image::maps/images/asset-tracking-tutorial/tracking_containment_configuration.png[] -. Under *Actions*, select the *Server log* connector type. -. Click *Create a connector*. -. In the *Server log connector*: -.. Set *Connector name* to *Bus alert connector*. -.. Click *Save*. -. Complete the *Actions* configuration. -.. Set *Message* to : +. Under *Actions*, select the *Index* connector type. +. Add a new conector named *TriMet Alerts* +.. Select the `trimet_alerts` index +.. Define time field for each document with the `detectionTime` field +. Leave the *Action frequency* with the default option: *On status changes* +. Leave the *Run when* selector with the default option: *Tracking containment met* +. Use the following template to create new index documents: + [source,js] ---------------------------------- { - "entityId": "{{context.entityId}}", - "entityDateTime": "{{context.entityDateTime}}", - "entityDocumentId": "{{context.entityDocumentId}}", - "detectionDateTime": "{{context.detectionDateTime}}", - "entityLocation": "{{context.entityLocation}}", - "containingBoundaryId": "{{context.containingBoundaryId}}", - "containingBoundaryName": "{{context.containingBoundaryName}}" + "vehicleId": "{{context.entityId}}", + "vehicleTime": "{{context.entityDateTime}}", + "documentId": "{{context.entityDocumentId}}", + "detectionTime": "{{context.detectionDateTime}}", + "location": "{{context.entityLocation}}", + "boundaryId": "{{context.containingBoundaryId}}" } ---------------------------------- - ++ +[role="screenshot"] +image::maps/images/asset-tracking-tutorial/alert_connector.png[] . Click *Save*. -The *Bus Alert connector* is added to the *{connectors-ui}* page. For more information on common connectors, refer to the <> and <> connectors. +The *TriMet Alerts connector* is added to the *{connectors-ui}* page. For more information on common connectors, refer to the <> and <> connectors. + + + +[float] +==== Step 3. View alerts in real time + +With the alert configured and running, in a few minutes your `trimet_alerts` index should start getting data. You can add this data to the operational map easily: + +* Open your operational map +* Click *Add layer* +* Click *Documents* +* Select the *TriMet Alerts* Data View +* Change the *Symbol type* to *Icon* and select the *Bus* icon +* Change the color to pink +* Enable the *Label* option with the `vehicleId` field +* Add the `vehicleId`, `boundaryId`, `detectionTime`, and `vehicleTime` fields to the tooltip configuration to allow viewing alert details on the map. ++ +[role="screenshot"] +image::maps/images/asset-tracking-tutorial/vehicle_alerts.png[] Congratulations! You have completed the tutorial and have the recipe for tracking assets. You can now try replicating this same analysis with your own data. diff --git a/docs/maps/images/asset-tracking-tutorial/agent-policy-id.png b/docs/maps/images/asset-tracking-tutorial/agent-policy-id.png new file mode 100644 index 0000000000000000000000000000000000000000..daecd11bad89b532a9603ac05b803431b79cda1c GIT binary patch literal 45821 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 literal 0 HcmV?d00001 diff --git a/docs/maps/images/asset-tracking-tutorial/alert_connector.png b/docs/maps/images/asset-tracking-tutorial/alert_connector.png new file mode 100644 index 0000000000000000000000000000000000000000..7a4d934d068de9b3866c79857d73d603dde57ea5 GIT binary patch literal 59261 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 jDjh%_Z?13b|8g^w_sZ)QSUb)Hvw delta 3679 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 diff --git a/docs/maps/images/asset-tracking-tutorial/construction_zones.png b/docs/maps/images/asset-tracking-tutorial/construction_zones.png index 0487c3d040a3b23798c5883a938e001ac11321ca..e956f01d3580a36d7715620128c87675b9ecc602 100644 GIT binary patch literal 572077 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%0Dt>jex5x>I+7xu~@{UD*nN5muDI4#%kgbT%l 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%0AMuzOk<4dh%?Ji^x-m1MlKtG)L5RkLiN~o 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

EmWc*Kt2Dsjhk0suomHP-fx?km)ezE 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

}V@DzPsO??m!pUfW?x;`wO4$$9jCCP8I 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%0AF;UL#7Y~Sg$7#I%$2aCP5V<@v97GR2b<uE1LJb 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

f{mg03@{#o5(PXi1!w)K&E;X-r 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⁣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%0A640fL>1Cw`N==}FKV>hsJ;z6%a>BHysPUPh$_-- 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∾HOsL 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±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

sz)y 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

l*eqtxUyWb@~&#{zK6_k3Un_ z_t8<~xGi4VrYarBBMy4JZxhPlWbOL(O&UiDk0%F`cq#hI~TKt;73@9kXbX9$z3nfmlabCqR~z zYFNqb1S#vLaRuf`yRuT;?_!{4ylrxzoCzgOq!UW3gjMoCkco8n%-%>z zig^IYI?$j-S|wq{2oZfQQR0MT9qr9it~j#6IBzLjkm@Hmdv2?mxurX=;-YDW*(R~B zS}ddFg7}SP3qa5n(x0BsP|62~v{Wh&k_eFwNV{4RpRqitRtNPO>2`eIxpNNE)vn&= z+L*{MFGw^(J;cnzkTU!)l*mnx<`N*4FYcbemN0J+c@ofp^GseVbfJ=3uF`m4Ao+QMA|}l#IlO4Mb8E!!yEz9s7b<~ z$H+jEUTA^h?s|xgo5XJvXzTpVH19pJYCOcA|{A zTcSrXAOELq&wZATI|56hshzB3b47%&<6HL0UW_2nr!|v07Lvy;l%jX=F-il?>LxkJ zGOuy?RNTj`wN%>55`MTVXbw||7Q>|ksSdvfqHoVcq5!JGljxS%?)B-I=}Bx!BZ+XNPQwJ$Emlxu5} z)v4=ngX=+j$1%XxKU5rzwKF1}StV16gk`&juE1D89t5*hdhSxpqZT#&OEJM;K) zur)?>3@Tn!utb0{&yl_J5Mtu$px?*XwHWz*(ZNw|f>ISp*J8(&WTCsQKnDOkiO9Sk zsTANwfpWs1fjdh?xwgRh_-Qg!I*nV8$wFRS1+kj<(g2G8L2JmftiND5R-K`=d=q&& z*#Nz5#GsFvI_?PJ8@UOfDnyX;6^P{gm8K$(X-~G!u1Dl%=grXC-tzuor=~sQjO;-w ztB1QUyq4&=PR4Y+{K72LdH|Lm*c3tVl{>asy5VIdApVx!WJ?K;!|uNzsFrqiYcAr* z_S|!*jfMYA8iYrXnp>vbL#Zs5xoPKEQsNc=%l+Xv zU%JvH36t(VJUwHL+;EDuWMUQ~`2mXevAstTAo!q2o%X4I%{#jK%b}Ifb#7B@%A$Z)X@_rLDZMdb zp9+afMC6;u`r|OCHnxV184{@qEpMLa>%OhIP2dr+bzZrLeArn(|0GHh&8FY@9p<0rar1^cfxl9st}uH zMs~j(5RX5g4*p6PbM&n-HI}LK_d=Vk*wIZS)5Za0D6kD%>Cn3vhw14J^j}tx@7*4a zk)JIII<52OMA>cKVpwZzu!Sz9LKAwiQIZkkZDlHH4r83`%y?-i4!kO(Cn96T?NRQz zvjHsHT67n!c~f{HDk73>5Mjc9jw#wf)H88MAs5b*8sct!Bgp#3DM_ z6Sp?*JQd59Vi(+dT2Nw>D{khHCPyJi`ce@++K%Lb-IMOO0!esh=$jt8GupVFhZN0? z!&rxuHm!GJ!UJ;H{8*|pgQ>iY67Tadn^B!3B445-lVHgOwj<%e!yto(O$I5T6DX3< z6ov~n9Z)3oIRXEXcq_OaUqzzKzq3o?OOt3JNNoY5vDb#B8-9WT7 zE2r6k=F6`J{P027)ocyebpuF6RvhVokxgODLVma=)HGN-L+;hSod3&5ek*{&*(#j5 zbl$FMqpVg|pm@ZnGvr=*wgHr{f{I@7b}4XAU}!jh5M%OvU5!O4!a7BzPi``G?6%}) z-NTT}{uU_wDpGNWJ>MUSv@B=)yNQgOU1JMn9=&Z}FeV_9@d8|BN@NkmZ)83Dir0>@ zT$F6f-jSk>XR@^YYhKfEr`Qd*#Sr52Go`y9{-ysm+(J2H*h);(thQ}Bm{~@UD}jmh z8n9_{3lN*c8J(X&2LcG02zfqUG}aX3gFt^A;jYNg=XiR32kZ|576tKq+Wh;B zWO;99cdM_-tD9D3haCM`nXCTn{8X{W&UwyNf^8JfBVtHlZHU!ph3R;P^SM)YMu@1s zksd#cB>bk;IO~A{1(b^9dYJ=6dH?&FyLv!< z>K9Im5OBU`dD(fC)~1Y6FPk)Ov}|_F*7VHeswAza%4@8XEF=I?svo_@7G3j1E>g*U zOxCAxP}o!D`d|M@n%-@Seb398v+(Ar0|~+ITkmES{b7PBt@&0|I=<#CrCGQC@tK~Y z@6ePEXl`Cw2a4{LR}e%KFZgWMUKWFTULC_=qtFYF3OoX`<$YSk=7^Mvsu%6u30O-} zl~dFrp&+7p#&3x_dx#e6KRw=C7vp&Ay1S~ljY#g2L`uODlV`YS-rh#u&r@t}ZMc$Y zc)fzO>N~n3_v}GKAeuC!l=O3F)aA#!*}R%W+}ew>f)n)x@rGP$!>$7=G+*EOnYY*_M;{5%GF(& zFP-AhPS1$LDwU_5_T2xY=_|aV{=cW+yDTLkCEc~4QUcN?-5}j9AkrWW3n-n^-Hmj2 zx3qLgcXvMf`Tovx?jNw{?Ag7qduQg(xRuIk15Pz@efeJ5Vdu>$!|LN|W}%ykygmAd zFO7~m3*XZCl9vcoDAK6!uvw6%>rxwnLm#bK{_X{zVmA2+9kUk-08{#gx%`!;^x)?mSR zY=b-7P_@K1_hKMKKr`IyTx++cUZZRzk^D)~7;}_DTf&>!4L|UPCk@JPrq|xMflXH7 z**qAJ=0_7cI}y{ZB%V8*-bK!s-o~Y}bs%RWJW9U63j6|aRiihv?o#M=Y?k{waLTXL2-95 z`F;48A3fc$8es^PFxZ49r5}gzV19ePFWwF2CaW)-Yi{LsCJery^%c&1&p{mi#oaw0 zx|0;)Gs^R_Z0qBEELg9w%=>TK@x;Jm`vlkaZ<(I+_q?a0C%K%$IZ@e>)b(RAuC!mB z|IqhgX=I7si_3o{H*V?2Xr?i;IlCGCR5H^0ue)R@tx$J8G-g1;Gt`{)Ff*G{|86Rj znOk`XlvP&t!r?gb#z-f`9^ChC5}xdSkZ<6AVwB36%PrllGQyYXe=eV>D0*RHQ=Aw( z@S(7-im>9|9p$EJrN~zuN4*7N`w3uDx7K&N$By-rr=nVcD2S_9sGZ_#Q@p^ z0K^S(b5z#cU>yz`j}r(M851l;^GBbtdLk~+j_4rA%4X4Zo_`Dx-nzn)udB>N?N-n2 z{qdaMiNTF*pxH7V?Bf^AmA)ZBPP=xr3w-{mA@gof8eAxIF1+Bq)te9bSSaEPlNtD1 zU_;50>#r(jnXALa?{+f~htm%cDzu@c=#jNs7JFB|fWMVpAB*)DN~Ur^U(3YX@@r&Q zsFjJD@wAv(GjUP*m&P-F0~`%`wlPg9K*XlW{JdCmgJ9<12KpkAviW^8o@*i^iiI98 zX;vO`46CCiY(3D}NE6==69MKj$yTr1F%M zj^cQv3Tb1HwxWgC&ta?MONbK&Y`s{wbya@bz03Yf_o{70de9O+r+y4?>cxa;IC!+NuOlk!!Bwr?pCvMKWyBLd!zbi^drhcB(*lF zf+a!jem&(g@^hNDRs@w*RnTddTh~uk7kA^h7NJ!F4vHCG^W2DG-Bdc}BS{njoo-wA zbIX5E=0_3@66>(Z9hpp1R(zuY{`!>ux>BEu5_n!paORzRjhm$V25LE`5bGQA4L`VN zZOY&9R|6vEE{;}d!Y_Da7S$~nPFD_#2e&dnUoz{Vs-?TToWzIEC%s3c7w^Aa|9cHV z2JU$iJeAg8rawDP=Wovlw}PuJxj`^?fKXSv3Wp&cf;B-9a3RNMS|cESPpen_`*%(& z;voy=HL=&x?W#b6%O>X&&8+U`gjdAuo>0^G^o>+*DgJ&hAhkjP=>9|)T>{B5=Z`5G zpeR<%$v8RgV( zsLf664FU=e^JUpeN$;4m{$AC^`e?|l?Ir;5=8R7pOwm50o;fH!7;cu1*_H*hCwhyw zRI%;c{ZX4$nqFF=I-AQG+?`A(s0sb|k7oUJ!U|>Wivrji3tKo}e7{)6t}tP|oj%$eit! zP+(s{a18Gs`*LslF0HaAsM$d;G_UKj{yk0#%uG+e600}$yD;DeG2=hYmXPBMsMXqB zzif|~7=N>xZzZ25#aF~G@7;~m4LA&r1%y9aTa)3LEu!}=P}+@5o`2FRM+9h*cu0As zDFqi2A&gb9EL^yvl+8n#?Oph=XbUu(Z$rH90P=M~q zDZO$he}+C^Wws@hT)>UX9E_(K$iUOn(@IsEszDNV_w^E(K4;d{#-2sku&1<|_N>XF zA+Y$%5+2iLY;HO!-H$vZ&bobyN&7W)HdD^> zecC+MPJ1IQzQR$6?7J0rF(Exs=Wv>tETxk@oQ`0immF`>nq=CcTdP~}$;f))&T*#4 zP9Mdvd?-|ag#tB~7tq8Dg?y@yZH0_0&W>v$%q(!$hHp9*ce4|0ke*_cmobkodHrGE z?n)G^Eeg~l{?^=G=t~;xG;tfuIQ4|^>{S*~?3F#(s9bhlxtA-G`MXxMPUs1Bd+Y+O zdNa&Q)<<>Ps^*`9gDc}r2A;wiiieH&(6w8L+@a;3G|+?vIL(ELj+r+ztGnYc2=?nD zj|BflK(1CdI4DK7Jv!8Z3M_FSPRMk?YYmX@a0Xx>4njwjg+2DbQqhVIzffRC#UgLx ziHHaTZjxT3=O(uNM?kVQBEi!fvOYE{4_Q(z7b*a9Th8>S*g!4^WzVN{8(8SMyNHMB zH%UH%y?71e-V|4PbA%qmNJfWQg74Bw#)BP#@qT^`H+wHo-8J5kECV03XiQrc^DuaP#)%JbkUqv=cwk!@h zBL>TmTJh=XVJqR~O%3MdoW*`{7X zHZkwm^E9}yom_==-v3B1^wXy!&)yCGwve6EEp5;%qNpU~5ag6IsD-l6Lnh!W@8zmK z(XJRvP=zu5?~*h$?q|^2=+Uf`({M_46WfiJ^8M^C?@~Vqhx7AswUYYrPV4ME&=RVw@X}HF^#AfUQWNz?S(gXm#$B-1+pDoRB z4XL}m_Udm{5I8qsOh2IwVrYkugGdi-vnp28td;mVi_}jwmWO z0deKhGCyB0OC0Kr&OJ~V4g6`xQvnC1LpD6~|HwN4!fQAF!g=6lNxh||xp#ts?#((( z`jn1ha3>Jqy!_tbP4CW*zieB+1_}hKb@4hD(R}Fq~5$d-&&qMo!;^oW{I7S1G{#jk1>f#9(DXOAWu`T4|muYl;c8s-$E4jNMO*^3v~)x0k(B z>qURzM`{$Nu9I`q)HaP*3WqLYb=Fzma|lTRot;72KcIsW~WndjMKr7_Yt4aWe-o%oX>74!pqq!6)2FrxR^3UtI8qh z*4IIe{qf(p`9!9|Jk!U`UHZ&A**qbrnV><6?Z<3Y(xUiih z@9pVAP2=F5$){0&PFpuJedklkmDdQ#d@VRpY?&?O0OKHptXf~63tTgn51#BtLS{fY z^$qtE7N!%XQDrs1_*6nt-x8$&u1V-_iVmI>iYj@fFj&JB@D~H&ZT0VziaNqt8(Ne& z;v7K+|C(ivsxlJzp_H|P+afi;5wz34FvEBcb!uJf6|4rZW+Sv9&xbyO;*>8T2f(yH z=HX_ObX_n1!6~JH$jGKjU`{Dz3G_46mie@N*WGUsw!u%MLKcB|&Y%GJIW_DwOUt=l zJ#*eICvqK`Wegx77TmqrT4ivj4#8B6pEXe2^x_x63Co7AWm1J;i{-!RdV1$7Vk)-R z64a;l)me0Q(}Vxtsfe-;E++IbTP#;cp@t}op^-oR{7V*ea*O8B>zi>$VFW4?HhXm= zyXv~r(S%Iq5?#ltD;`L16zY6j^n!eH@HDTny(MCDu_7uSTFlR%Ad0$6=)=&N$82EQ3S=AoIs(@Jo)h?$kKl^PhjsOJ5vp zY*ii&2oztzq(bC1rfX#-f%;nd*)pee!N;M5E1hF!0de`(qw5E0ieqfnfbU)r%z}=3JB#Bw6bnZ*DDYOPkH7X)MIX5$w)yB3flHXDIh8L=Bcxv3=N|WN4N0 z1|~8*Q3BGhz+*w( zjmT3w#iW|fSRozB5NtOE-7gFmU(v!*U4Xh_CuLrlJ;qKLAroT$hxMs=P#U(CV z?4ITApHq4E`TOYWSMM@i_kI?Lk@0^2ZlNtTA{YXCs$cvii|$Q_vE%kNsazw zi1)^aS-xwBkd1dL1_70{eX)c(=eiglvFKa;W3(@Q9_|CgF?goU{i;86Gu4{X!JeoN znLxVbxTI-Jzi5)Uv9}?5X|0?51H&xeM7J%;5LP4U-uZt11zZY{0)~Gur&4u)hsXUw zU+;OhpA(P@WWFH2`EV{!o@31P=^49B(Ro)}ipS`WUm6t*IUX54tHd?Xua~RN4x%y2 zrX<9{;3do`n`vz4y6Nz?A%UR2JN$4W?VhO$8I*U*2fI3rV6lkQ2Q&D#{$;fg*5il- zzqJ#Y8YuyP={q^FO8WyYlkythK2HXkKj}X!0NMT?H#NRMAN^N1`89o8h{Z+zCmA=( zPOzErCqc~t7?&r|MO&y1k}ui%=_!YXFGa)BVU=go!E*7old;F74L0lGOCMf0fIuf+ z>cIM@?jLTWO;EzH;MQ;Iv57(gREfMMdHeLNX^h*c0|E!l-+Y5$x;enWQ$`F5Ydv#`92d$FW`GG zFTrtxe8X#~;X{^gCEzQKOpQfv6}f0k$oih>tV>nDm1$d6ad$O*Z}Fl={A)SAB(vo~ zaAuvX?>)K3E#oZSizV&a z-E}8E=G6D%kue|8^LT&o;%c14wJ?t}+6az%j$5SedAAt!fxc6~Q=@R!6GuCsq+2u% z5TiISD~68epDlVu7qndJ{n$f2t$Z^f>zvPTB5IiFGyTK^V>8(>U$*ivrZc3&(gQz+ zOWK1oM^XQZ8!8~UlY0de`H0sK@se)vy|@LkrwbD&U1|*=o1v!Q7C%ZR#Cx&N;*9%F zr3#`aZx2RIfdMV*YeI9>4&kgwVGTLfQxV7kH}2)fvDz&5O4L_fQIi}qF|UVrDN3U| zrAmU)|CI~~&qf-WR@F6;qETj1L|%KlNdrh5i93aT{>8rd=#6ul2aYtl7;9P;aCFefH|L4IVF65@6wa=-8T zTDj@aP$&O5^X8^$Uh&X6^o8R(7ufy441ppF&AF*AO)qU2F`_(M(UdBbM#~IM7cVIrGF!Xfar87#b z)J5N1t!HqCH*NWn-}P#=zx~d9(s=VhU~m5zcUIrUPuPNFeXoH0N`Ctmqkf_xPbVxg z4cC0d`|pjwmG5yX+E`!TXcTtqOB=&ClZx5bWWip*;nl%MyT+C3FC^$QV{7aq-r$qM zA5Z#!@2c+K54ok10lSYm`u{H93YY__uMUHLjRI>Np=1bai7e(_gtl-?yC~egugdZd z)1DC~Q8~)n$&qVhRsvR5!=5GYBSrlsX$H3_dGBm3EeUFCofSy3>+pWk7ckEi4k$y+ zR_*CBc|l$Ba7f~fyf(CUQ#Gg`_f6bij)+5aQc311?qB_2ehrl)C@b?|k3?2g)n{}} z(z8=csE}rJwJBW(&TgjtcNLR&22GNewP>N$mD)624X;FeDpvERNO{)7{rxr4SUjxh z)}SER3tIxhmV@;Oi;#zqE?84YoMQB>}P9# zw$yCiaswzE`JaT{qUkR{^LJiG&Z{Yfk3_L(rWkVm=>wX>R0CN<1T7_ zi_G%vLGQ={bv+Gg+nAD~9q|(WQ>yf)Xkf|$^#SVXn>ywF5(4S%-Wl9AiYKDB-|+2q z3BS<>Gd3NN;&gBS}piScDpF#FD zeiwND^<9jpB0QkNxcoCeBTqGS$jEX=`Z0Z=9s!sxvEeqP5#KJUU37Zw2idJw7?Jne zCgZ51N<&8Gxyx|*5uQN}pZof7k+T#w^d&BR(jcELDgABI3~vMEE#Na=9yMrroC2Gt zAfKf#*=yGeJ=tw(gk);`MDv5wcKToteI>J8{0L_>4Qx9f|HH}^vPzCZRtlEc=&v~8 zHo8m_b7~>NfY~Uc3P!)sU?r0|))-94g zH8j+3ONu?iBa9&J@)1heV9douUU5gqW*zju|9m~B;4w~kn&2W#AOwx~z1SIu8|gF= z)x?+E|E1I1M?U5@&E)lmVPhK~$wzuppr@j}t+G<`(ct?M+#zlCP$9jD8V3Bf(>;1G#@3zF(&HCmOuf*+hwe?ELcH^PGmCz&z z7H3^!(Vv8py(Ig6E*(0}(Hpw0P8@N!#mpd>@`Kq{fticUB2Iei`eznHV;N{@=YhL3 zhyLLq@g?5TPRV`mn=5Icnw0bp=p+zh?qK)=C}BV`KMR$V*HUJ(K`Qx5wVMg>9Y4v$KN=x z;BcP3!;lnLG;|#Q%%VSwD>~>AhbF;eHy~u;fJd62ijF z*hWb86PDcWszdBMv->tyN4|Hgl@m2e-rA0l`W9ubUMb!N-I?zoTuA$a?y5>HMu^cIy>1PT3^lh@=2z2XKZM8@swxZHNJg!Df{kSD6+!G zx{f4SVFQyoOyEOIUd==9b7S=Op1k}Z=QmEy-K(owac!1W%pSgun2zrOzN(kCGM9`~ zY%XGDLj&mq3gE<@ns<(tqi#Mv8HX%ijJf(dTPQAk(!P9w4n$uDcrU{D(;fwI#R2ko zD&y>dNotwE7kXdfSDD)KK9sOimk+5{C5@6=EaE<6u2NHY1eugK7UTm*D>-+UtBkS*=OKu`@76j!79daNU#gY>iv45RF5YI+RaAtW`NFo2@3^Ka$3 z$YZxfBMt3q=;t1ML&2iBOgDka+B?MRQ}`n=v#h)>Cn+$wp2o>Pk~uldL29n>K2(>iu|2rkm0H8>l}x{i{;v{Ceo(FKegS2!WXKOA z_eMg~H)61lF$hecT_(c6uG>ahfKfA6>pa1U3mME>7mGYzr`V!qCf%j_Z^EW!!36?OU(8A(s z%*EDq9do;e=ZWpfw~$snu@pUgJ`Mw(pdViE2;GZ4=(lK*lP3qATNOewH8gg(NqF1~ zMLcuudsIeN^}O|3IG*!&(pP_eW!=BQTpg?Rb<{8~@3%Cq1j*LdU<4bGH6(?;(_htp zli~TGd_xQsSVl;<$OND!=thifI52>stgFZ25oZ=HA;h9_im5HkxN(mAu>g{j&ey z`!EfSP)udt?&Z>A+5Xy2GbLbk>c3iLjRtI0$ok1El?`&lH`ty1)-{irz1%N)ZDnJL z>kK+@bTgxT9c=rpRC)7=u2R(SkH1(`3{NcCsQq~V?DVvonEgL$QXuw#;g8Dn00A!y z*K6WZ?iy2vn%&Ugy&I|~GSFDm#j9;=X>}wwp(91+A!avPsqi3PCP2T;HJ@l+^3TcK zw>O<)OQPvxoToIfQTV;8SBY%UPT$^%VQOK4N?V6FQQWQP1`!G%_uBs|IK9r!rR@;G z?{F%c?URwgV*7$`1+M)oz1T$t-a%l&iGw*7l}q!wjr+jK+?t}Z%92jP&dw6I&g)dn zRGf}4lC`Uw=6mEC3%qm!TB?YH}44>9B=g{ou;ds!0R77Sftr8nI zzXJ~uCkfirO894F)-|Wk5>O!cPk-wBDp`L#_Kv7~+2jsYoX2r3YKZFy#Zo9o>Zr<* za5xD#;Jgb2nEGLA=Y?B;=*blEo3e+(29P$i2EzE1!Wb{bf!w`sD3lnk1&Xe7$`X_f zV=%223M5#NuKur-U*VhGTXBgP4q!^(s~YTlmuIXPL%fW3r?MzSAIf-5~Wu@>};>pr(%Hy&p1A%w5Fql+Aai{#v6N-^^mveOa~ zaK|}wWw@4ZIbEqqzz=I|YC_sW0Vet%QLww!2Mevj0o4a5n?V^$0vv8J?5%Odk4lT8 zd|{u0VBm3~u)zst*=VeP-{9-E8JXjaKl$CCHvs~S$q-@^9gC5LjqS*w^9zW@TP{B~ z3q{2bpE=ruVx7ZbdwGC@CATWm^KJ4?!`~|Tjrhn&FQFOCUSMdMn$?Kc>57vpIDG}g z#_6Wqa@QxzDAc;sCTZdAEaiF9Y#{FzKmy-h!^6Crd*R!wC5;3z9bQHXuW)w{(Y;3) zQ597f#f;@4td4N|2X%_)`t{;{^4pN}nv?mBaFWRRbAN%xz5oe_ra6|F`@sbfdoOvM zxyPl^s@oG4mVrjO*cPW8<@VLh?hZG@HP)jSwMMNj?8UD2QV+e|nCO7-XBn?oH@@&y z*E4xPh1)jFa>L_^2!2B_jXxRin&miDaT|N}@S{7Mg9lhQ`1lq_Q$q!7FdPmmYQ-be z2BZxcl_+=sn5epvfq2?2fqdW=&&$PdxtCt4-on4(nutVrNYl>KWy-6w!@ZMXXB-tU z@Y0RiG0$EeTp4OEUk+KBnq4_PUwVv9MMHkVa<3%xn6cx|S-6LsB@V+cnB$D?)`Fme zpB;hB50P$Kj*caZ-ha*W?An^^X|}iX!xWlid|$q~krEQ-wY4nB2h4gHTA>tZaDV8; z&PBYfr%oQ2HG92_g8?VGSi=4*J90V@ZHE`SLqT$M5wD%Ki3+Xm3s9iWG$1oDol1+ zQ}B@v@Tk+SYDL&Gu^tgJf1uSv?U*5Q{>g~4z0cRIKk_S?e8sX*zD&A!%ntLx@zD&t z(C^w=8SHW@?7q;jLXV8dyE1W^?yYFh|I-9iDxWJF72_Z5RKfhH6Z^MwRnr`JkLyu` zQvolAH>j$Y7?^qyXbl?Q{ZNIs1cmjI6Nu2uDkjz>@FAzL6=frXQDY&#_jbHyP9t)= z17{Hso(Xw=c5pN!3(TWZSo(eA4@{@X=UWf1~PTXvfkWXeKsgx3VR5-<&=x-99hD=`ds;pkq0tF?m!Wlz&&o8vW z>-g5TPfy|gX~y8ZI@;QQG1x$-$FSyCSVkc#77PxNWn#E37-L@kC}JA2<H1dmU}#=bk>ue=996;?2&cQ=ziM~ukC~vi-H5pEB# z$B)=We(X~$R$w3X)hdYoe36EWZ@fY^jBCwbDUP-k9|8p}VF`L1T2I@ z)O&fJE9(6J*zXWOY>sLQhKN#e<7rX_76-}b9RH|&@~>e2(VFD@Oq1PSEb=Hbg{@fo zJTXLc)-wmcvGXQqnkZcLxcgu?17Z$^JO|>|87q64{l1MUq4-`MIF)4Jc}1~gmAbpi z+9rN5H$;=IX<(RvHKC_gFr`e`M?B8V;{m{sE}D~*wRsd5R~K`fZ(K{oU20r{^Ye4r zj||F$sF8|E0|AB&^F9N-NM`f82xoYI{*{w0!Y24#J=N`jGiN~JH3cqBj>b@J%+7$c za6SZxX_Baxj`;S)92!1oBrv>(QHh)?3I(vO*FtLJ13sb{a;h}$QiZvtSa_BBrb-za zppBNVOY!6D==iJD#v!z?!r{t&`%*C0>TQpfmh=5hOAUt$Wna!-ozBR-)u27a6!oCx z6%e-A*m9ki2IoLwBU^#a?qO&XFS|c@E*JK*oid3`g+LEzfAuvKp=nkzqEVHV>^1my zr`Jc5(J5ZD(ZW_%$UG$nQrO6;^DI$baPrb@{S(us>g&~XnMB)8RM@gV{6{yoK@Af7 z87P1E(Rc85Hj}vSKGjcRyDSsl)fCijLn)vGI$Y1N*UaTKvxh)j^gca^ z9L^J%VHT(00YzC%yp*S1JRnwtKNCpY)UE84BQsP#ZFOjqL~ICkJGT&9xGQx-|KdNn z%KJsW%7scXG*x4H7VC0F#XzdQj(&2;hvGPkX5^1ZKJ{HFbKM>~vsNnyny{viV{^x* zqzk)g7TneL`jT^d+;t%BuE#SNjEZ55;C^?a2xt`Y`6rJ)aHIm^!{p24Kb4QX zOH3?gYd3J9kF&1VGy{=*!>}gkLy-wQkN2)AfJ)8aq$0($$oELM?Iq$K>1iB2x zfZUfC?3Qv%&~fwoi(Ha}q=&+rn(qaoEkZC(-*Vk8oaeHDV6waxk3*1CBy{TG;DyDe z&wx$d?UC1Z@=fs9_j7c+v-Aof^LgvyL0<$PBZ6R!^%>qZYw0WA_V7QXtjR32{e_8O zZCPwIL}AH2Qd3_ai-q51GVy3&myON+R>uDNNTYXdj%S1K`U^kpxB~E}f^CPM2l$lR z&hR5>MykB7j``A=8vrF*xS3I1E`Rm{STn{I>pJu+ZGyAE4Q0#R4O$j(2t2J}AQE?vgX zv#G7^?b^U^&CEBaKY0kIp483;2Os{w7eLy2^u0|R9!u$H$cy^~e}tXEhtwJur{E2) zCFY!z4BorK2@x`2v3})yIcal;*2MMqZGeXR^FGaT2c+Wawx==HR<6v<(gRe8zhv%# zE%dTy*3V^kQe_<$q`A2owcoitcRxuKu8*8H`KT(OO$e^#uiD2_L{i zAeYzGpE9rLLNsj$6~S*NC&;%ayd&Hzk!wCVZV$ccU+I9)2@BPCTk)e_r_+Ducb*{| zMSDqXHw$oJ^@lWIjbgPNh^`P@u^nD}(tx#X%#_>>4x<`>=}d}(6Q>PQ!1W;zVUKlRPnzZp`bOQZ+ zat!57RGEHw6KR7H3E3pnQI&1uBmR8eis89I{L|7x-oq`FE<%QhkSt|C`b@Wb=NMjw zaW`={Bb3A8cWfzWO0WmOmse4j`H zB&BJ_Q_*wA^(hrqbi%fysI|EIP*!6l)r?t-z2Ot;4~K2Mr4)Oe9+%S7WD|jZu``S; zvlvJ%_bxd;9^TFy`68$fK3o%NKVh#o^Dw(wolUO91o!EaF%^H4l)X?2_+otHN9N&O zGEjun^^zW-+D!doyYJttCWUcb6f2^%T2I)g`#L2~mXUPV2i8!|I>BZ|Hc$y&6NNWN z9H}BL(01GZdc%f?z3|h`%e%X;AhSNY{kX-L9DlJFvIWxzikUvs8}ahXDUzD9;_q9S z-X<0lV-;a;Q2+0n{)cmVUH;6Q8ovI4ND+pn_>!FChI|9nl`-ef3fnRh{O+5yr7~iI zK{VtX^^Yflciw`oN$k+MNJcoa%{ORi19wNJm^&z7&`MHG4X-ldS$K}LhnIdEr!hqR z^JhQh#NV{tMuY`mv7c8oLSP28Xhx$b_-|4;4hSnHMsZbE%=96{%Wmu6v7@i7u4Y@>aBNyC@kos3^X2f2+i&i%G;*rztu zuV(dG>Hp4h(U!H`Be4m3E2O#|sQq7i1J){52|*^{-E6tAs()g&aoL5S0d>7Nh*6S^ zfP&#xgIMXuvxG5^qZ`$b5}`RJVvjV2$f>d4K?&X-j2T+nOh*yP^k+pTuiYnKM!Hhg zCyHhTZsZ8)bCjn%zP%W`$A@~@I{~MB8m&5)8gywmkAWA8LF@?(C zwq)HN<7V3#c2+%y`Eo^z>Q_9at`Kb`?-A{A_oh^Tq|CZ)*(LfrwLfi(o^+#gCE}PKeOGw zg^=MP13#nk{?K@!qEFt0I6LN(P5P>!A_IRpn2%0mdGAa7uRXR+KC{rnbv&7vjJe&qv?BFtakiw;&e2LF!6v5yP9AW9qFr#o6**kL{L8~`nmcG_W*4q?+6pYS?i}%kd!B( zord=(uasO-8!&+=P8Zfj$PI6%ACSqjRf3SW6zsf4-Au6bE?m2aK-E`& zNg0en#diVW_U(N?Ec=qVkswC2LB7I;J&9EQ6=Ik$3lj%WnRCccPZ3;m^z}ElPLt;v zGQ*r$M1N`gl2ls$5ub3b%q9Hkpbsc?8Ya=?S}7cQ-jWCZaXSTT!BWoy5TrJc77$Jt zSUS8cYsK&NbPxK_DKW}ZQh7mA18RuP5>}y&v$#n>p02)QCX}$^4H9LX^#l+b5}D3A zjd6xXHi$R$4i*0dSi|^*iwO=cUQM5FKUJ5I`T46L_!mOk4!?sI7kW#CIu{W)h%$cy znN+4GhkMViIvwS>`js-5&3_x7`^!F8I?!$p9w>yRPoL0}nNx9WvwCt#lSS-|W~{oz zwAT^JE3P%eCQxt1C`yO?-7tCatC#`~f?vHAZK6YYtG6dGg|YwTOJClZ>Rw!r!#6r5 zLR3RSv9C*c<7c?7M6+&^GCsIQr91db>3CvbfcHBbi}Kd^gVm>du_?deXQEa#ckwwM zfc^7FkX)kf0A2^U=1K6I!@Pf&7scNDxQr!*8e9L%6FEfXC$@>cP;nl)%!Fa@b+m(W4>Wjs!+Pb7i znL|?A!YY2d8(iNu(DSX~@R?zaHbWve)tZzH@Lb=0T5oE?|Dx>azK?h|?dLMGFf+rb zoxHg0GQ*|b`{?QUK$oEGfx`e2BSA*_iQ3@>D2{Xa+qKozQFop`D#X&vNYq;#0Scfs zfY~4y!8&@3WhOFYqS&2lSSZC)%hQDIUVElvjUim540m`_c>gDyyWA^;K92U?C%bO% z^-oI@Wta%$>je`>{Gg|22@(hy8HIQV9wJIsUJcBqbAH1Nsq}zL{p{XV^m9uYTAT)z zKs#TPYRk(*(|)33kmv109O0)c%B2_Bx)Bt_q68^ePuMu<|82jSgy} zGc!my+)X|e13Omo^J%SZrNYPmVlqYGGQOauV&d?OA;{+AhYS42)5HV*{l4srODilN z`98j&!+|R4{(z-WszKJqmgg{QK3`w|qo&}w0Gw-qpOh7##qXy*n&P7b*N1Z^+`He8 z-oO6;xKlpl?LBfJO9{E1mT&d>HG(R=uhBo)(75>bUocD@7wF6@i`Q!gz`G3M zU4{t};xs_Xc(>H>HYAuI*CloIOC|c8e1VjLGxw1rvU%!Uxu?`i_{BJ*<^QrF(j?gzJ>ZaZ`6p^a7As#?X%pO!9}q9w0SnW z1yPc0mykATeUptQdm2wsNegSX1ouyf$)XfRM}IHE%^#O(5BhSUO8R2QIhL>XIKUoe znp_cOj4kknQ%I5T`8OPO#B=--GRqdcbo5TQaVq!_d2$?=-%WOg{2D-1Xwv>~ymeA~EC7itKh|(nv|y0(-9^ z64o-mmz&x?OTP=eE{hXJl>v}e;rMuylchnJ^5)2Ans4eRt>_1VnY<2QU|~VpMz_S# z>FyNvg0O)L6MF(wv0ekqz>OKs?<-hny=ka{0rG~3Sm?LxE4&@PS8vffj)TY{YtXQ) z*VKEIhy#E--u*OOGQmchi4dyJShbstuT?|nxkatG?CRiVCIYT^i2lwtdAm7*++(L# zopROg@xW$p@6kX z>G?bl6;nKc5fTf&eWX5FFR=UMcyM$hjdkZ(kfHRsy1+gfMxI3Ec{G{oX5{_Wyu+up zw1NzfYAh=Hd7YFtP)h1n+wL=s;@8noN16(nj(BB%6}TvVbC!ENzSTV|YyPo^{YBC< zdyUP&s9&h%9$72~$Nt842HHa~mVx=Gbw~;*)i`*P$f-=3xFJe83X1d_5I2f0O-*mK zoj1ZylQaqpT*~diX^Zf+WTjc`-t*gIn1{8Zj0)IJ9jU-f4)A3ve?N3bo;^YH_I)Z) zQ&$tZ(BzK#HuM9*=B3>ac4?SR-5?P#qv(k0_q(__A7wK45wEGaShS^Fa6a8&RTD3R z|EA$Q;Dxb|rGE7cn9ouTCCKoRd9N&{o2D&=&z067JG!Tk=E+guxco0GhaA}>iXhdW zeamw!`D1*gdVm)aZ(QyIE+ro8%&=jC>Y+2cmyNYER{blF_W=+mSo<*`Jp0>`&ztgRNjup`ha{9aBkj zKg4T2GTPC!uvcI5Z>A$y&{bhO-yornX5^Zu8oY{5712O0HYiR?8~MnH3Y5l;@JBvV zpcudLF1nP&ob3~nZ7c>BV@x3|64394&AN`J`QRyeYU;#Zi8^m+=r5V~qx96##=k?) zu#b=@eiUhwtMbk}{DVo%jZv1ufZdi8o8V?77!~==+(OdH2L7KDrhoR=MHnU-$3GLW zUv99D#!(TYo|1&)=|%9fP<(ww*dW=tMQ<&#U{}WoL-~FMrOa~TV)lg>wPJzIt8ysA zf!H!c?6!~3a?frj1@7W+_OzZdkd-c+)=83de*|~_H5<;iQANfuJAnu*ls;blkSvH^ z^Z!_>j9eOeuEI5OC6=jxHu0~_5$~&{_fyHDxw1rJ(Eb+26s|>%efE8F@el8hB#d?$ zZ=hu4@cSb{V(XgZdyZZASVVWQHQg+2dkQ}v2xgE3-62 zRKL)uoBsQN00=Li`{2Bx1Anu8X0|1wsw#TALv#VAj979ghoC{8y?fE5ZNv&q**7@} z?dQ!#XwLyj5oJw7EK43{MTC|L6L0f9%5E};u+Uvky_c_p25GZ8Iy!lLbU;1I(QhZi>vJiV;l$?_+RPhY;6PqMFH<16i+i+t4v|t}WM0I7 zGdKG~M=*9D8)5qz84)1}H>hU;Oq~XN) zq=daCyY?nce=%IGUH2!`Xefn~bGYs2GxeW3dz8t5(y65itZDdkm8MF`@?AkW$kYG) zw$hiR=XGs(Q@N+Lo37{gM=kgg_E(KFyWOY9@iite-o_MH1_7Er`3!Ne5i!Yd&Y-Me zWtP=-PK`P8ib&QZ#r+iz;cZTK_Q~Wc6KnhZ=I^=zC!I6m@l#*YNl4M}H>pUIZ#49w zNJtV}_kAhl?WUeLa6xPEb%c%m@!`Sx`p+faPF9dF5TNEOv+{&F_c7P+I`@wf<~JQm zpfotAeClW@tZQ&X-YXnOORwQpo!qfTS_k!3mU09HI~H?yjw3yRud5q$KB$}9($3Dm zcTY&JX}|R2liSas!EY_Ofy`PMorAGc6v`9(wM_*+LSUHD4>x4e=+Y^Q?LxRzyW-N} ztR?z-k&n+~Id{k`e3B{ZKPH$}!?NJ1^sDykNz^84=7YfHnq$<0#kX3`!fM3VE#o-C zt4fk^s^w*IMf`_j^NPwYZ^d1&4)|7rR5!(Bad63aP=EajB{0i4^0ran|GJna>ZT<4 zO-@cuf+Gms@lB&&azBjWp8Dbc@${BKZS~(5?@3636qf?Up-6ElUL+JN?!}!JDDG~B z;w}Y>dy(Sq6xZTf2=4CA&2xYMd*{5#i<8OBNoHq%*Iw(hsT#*gUZUql$Yr%!bqrtP zgV4NkkUsEt)KfGhiQ?<(=XQMqVyG_z{5vdvXnAC{veN@Ws7Gp&(3<{E z2pY##jI@B^mogG(Sf>Mq3m8c0FcP)Xkt?*x@w3kXjkLnlU11U!VMCTy;T(?Oj+O!g z-q8-6s$l!z1g16(E^O+0pT?F1<+4l2cKluz)ie}#bP+f~P$U;a5s#E0(+7nmXM6-# z@nPK_f?_^jLc#+H0%YYBX#nSkLo$3J&|ysZY2YG}u^lx?@WT58_YD%`$W5l`2zOCB!lSw-@7m$=H_|ID9gRdF$-N(Z)z+1;pn8FN+kfKNkKmeCZuXTMYp+ zz81VK26%6A098A%pNnyk7Y(*4b5H)iH%NcvIm!P~R?wkeGP~3Iafq9kgnP#4er@7C zKnU?5T0hjouTwJ)>}3+}0B2b#jhP6PG1$R-?WA?BDTs$P?j~SfqkCZfCaNoIJL@=E zEnxcUiq-yRM;$-5Rb6sILR?S8SZV3#2y>+UYxizpJ3Z)|&v7()qe?^sX?zDCAE@J) zxkn7Vq-WY+3c}giE`-`uXmcUs)Hce8a%yu)I>gv-I_nr;6f#O!TjDmL1p~>mejDy< z4T{RmY94#8z1@4e6C~BoN9tJNZN(c+!?Ux6J(-yz`2-_w zr|q6t!$&c;D@8GW{dM|E?k_ zISDiz_g6F>X&jIc5>Lp_;mASz^lRcO&JM-qnLEwE>@Kv!{CbC!0z zm>c8hK760NMQGjz!!%~rfq z`%Yf*8sJwu7ci{%r>`pZxL;?c_2V~WnOE}TslN{Ac^;}Fy4wB(c25F&l{=I=KfP*@ zrHiO7eFyvq`oF@kq48gPlbe(s;0*#nl|XaA+hqzONwkf;PWkYIVmx3H%zu{DVL6Cq zapQl*_a~b{oAJu|9q6ZqI)5x4DD2q#!D5wzt9vkN8xitI3A~(a#t!ybycaP^RTe(*T-1y7)TtQj%h`GU9%@ zx^2kVzvJdrd8&t~&bY6S#o^LE7UIZ1b6Y@gd7C{t4L~J$R&Foo5@NdFKfJvtI~A#{ zsN@|u9eI8@zLG#JHq~@G9UfYjoSvZs)05H3%LxR3RJ{~W#%vcC5JXJ>$7n^Z$ER1- zFuil}Teb>pawJp#wy*^4Ldy`w&WHa&GyWhV*(H0qA9h0*82e(T6btj=X5VXj%-5kP zJAZNgd7rv9DNO}Co#Tr#{Di;xqh3JL;_M8fo6L;$zI~USUoKk8Wnr&W=<+PnO|&It zD0#%_rP)z*DyCwmxna-ucbzOxtvD4|3kXx&ejAtM*JMwCa$+4PH6r9|g0F`>ub)et zSR8wn5T%PNKngE>I{Y4K9ZR>6lBr5nMq(3gPV!6tf*vJZu2*9wc{8j2rH+pXB7LH? z9cZ);-Kmo6^C;8L<9gWIFP&^KP`hu<(^tD=mI;4y4ZR=DvTrzRx_|E(M*;1K0mrJ$ zhh#X4)&$;ue@)Vv^ujp$GXtpRel^>4ifiX@xQT6&lh*#%;tc^hV>@F^&_bTGQmM7} z60v?QH@EWyj^E2KpL}Z-doKWgP3#87#0eo3CA=UvI`CUCa$tzKdG35FO+riI5Dupp zz7#?$`2GWc%^_qW82{Pqn=pc(g}NKT=0+jJ1rt*j67aX@d!F{f&o`^CA*mz+dITcx zo`c++?l7(eZ0MWH-n}ka_8MBsX>3$a6FUD%)a*8+3GoxLp*zvjYeib{TsyT5lDuxa zYD$$L1X&SmnRO4b37H`Fmob+@*uNa?lbxAAmK$Gr*)7>S zU*lt_hc1{5slB6BV`F@=CHVfLT-On9pR?$@otZ&+Kcp$m#L`saE&kx}97$dv!r`ML z$Nbmh=vGhM9$eA3+279=sk?NXZ=3t04TlZ@gV34jmgaaUeY{r)lD^lw%yiqfUXoq^ zR9sjzXC6-@l`Sn}3GeAKckZy5Gx4HPk^-j5Uu3;3^oft(uKt4U%}+Ye$pDaoNne5r z?So1zWsNNzRSynq@K8nWu0x!eyqB(`23<}SiQ{lSvmIE6is<|5L@1`k->0P&dI!W3Y*YiHZZFpMx+A@(&N=8u_O&tf_} zslE)h?x)ONOP%KNK7#@e>1*;d_hL*K!j66*EY|d)<~Ud;EAcMnQ-0S-vh_3T!|%jbrFJ}TnEVAl0wydL$BJ-_ z=;j!VnT=K5P!2rz{slUV|5xC)%R)qM*txu32VE((l{yIp-O-T0Qp1LXq4Yxy-6pA< zF%u?Q_m!`>Zt1W|Iz9=9AB5bXmw&Iwa_z0HHDCuaHTioR1r%2eb_6)rHNbOk2%D8Rx2tm(98$R!r=wrvzSfD_E6ryBz?BD6 z^>ozsf*?5+#WfN;P{$>=MQUW*FIYbxmMY{lDGQo7Y9*lJ1u~qw(7ach&C*he9s5m1 zESyTO+zF~|lx%8SB^hj|nqu#gaR1iWOpLGIPT?sJmDKg9jN{n}G-I)I5|iV!k<@?^ z<_#2M6mqw9^$mnXn^5omLKei@L!V;^&wh9lI5EBZh|ZjSz16S8!o@L_zn?kBvQ=s87Jt(66U3+uzlX+ z)RUxtd|duWv1!<$FF9=zj{6RpWpKV@M@(;+mVY%~I+<3P@wY_`LAxjotrT>^#Jh+! zE0y|t!4Ybv5VC!-o$^<-F!s;og%)wSgRWRgCv1Z2*wE*IqaF8T5kKe@(($}Yl)IIr zn%a~Id!osbQekoq7AI2u5N&d(IyOhB-{`jn0d`W-k z3Z>Gej$~yWjXygVRYYu1)foj;59~cw(gW6lgo7o`C#ZwznSy{byuy~rNs;M=& z$sdt~lM=Jbc~}?~nVEQ>;>Ct3Rf<*l4k&G>Tr+HrKF{SlK_d@(zN|ARmXVa^K7Dc0 zF0;4+F^o>*JuE#8lk(+xo&L$2esr59v36~CfMIZTfi7u;zMi0)BICBrlgtH|9t8lH zK|3naO=#A3{?u6D6J5Ez-xjzC?1E_0_mm};(|y~5J@}nRnEAiN2=fT@y_-6g!~zJy z)FFt&;aWtdps?vjQFQruMMzh~6I}Y;=ozwaK<5em>w|JwVmK1v zDt_|bxgF`c-W9Dq2-!RI*S=hZ9x;hXSJIU^t&$RSXMeK^31FX`eV+#23dnsmtWjC_ zWgr$vqweI##XFcjv0gVHkm*naqjZ7*t3Rvem9emAO&!cP!}KdKB;UPc=wm~l&$m0b zrKs0D&|(&GP5nkUeJw3oWQ61u_wC&N{?Jq0n9YF(1o7N4KaM@O6_VxyX`X9kPQgcJ zxvzAZEy(0uPyB^uHWPciK3h)K;+`Y|2VNv!Oa5)oK>e6rBI3N*jG%}TQmc#rsZ9!Y zo?K0ZS1JF$?oN;Jdt##N^@1C#8zMukeMCJQbxh4Ds|fjmpn_*GGjLq^dR&!P&9!k1@9n#b#HNGeAG6ls z#B*Uc=QTZ$EZIk4$IGR>YGp>y2*`uFfknWBda`Li-F}IzFq>%-jLcCLhKe`6(g?78*&6rW8ll^Y>Sd3L%Qp)^+Ce-Qer^dG+qP$1v zEfm`X!p(0{z9S(Qv8Ky8Ht&&c4E#x3yQ!i^hN*wTy2leSMvn-F*SDm+7wWIg04g-d z>Vp!0<7c|Yf(TmN-+`?5%t%L$5$Vwm(OBSu|Bi-Oy9uI~w5<8}pIPTB`BtwFq!o23 ztkRjxU1Vn4aiwb#3p>*-36oV~w>kzZy31W5gp+BYVRt_Mp9~Q6DxIvAGbcX7K{tnB z&uiY2$=^#F#%s>(i~_{qrF}gUpi3kEK)-L9a~o&Ym><3q4TPcKbd26Z&>Q8_d1flG zwYnr7UdCzKXLjC{Rp<60Eto`o>Ypb~%h1079bJB4o{Mw>7S1V~G8Y+{>W^I1ob>B;8o^M5TLpj?lu899Jo zMDSM<%YZ>rGJ4?cCpO_{{PqlogF_Ph05PdR3RJ~sP{*?!7%*H-wQYG@Kqrf}QJPew zRxTfPAtMb3bp0E_bWjKN^sSe#Hb?Dbt&(i{W6Mh#yui(`3)_CEj%vuvWc$f3cYVj$|!GF+rjG>Z;h|^fY#{ z$6PPG@ZmO*x-X7xlU+f8Y7P8bVqskoR*D_WIihIB|b0 z1jbjpK?GbFIw!fg>g_fCS;!Z1K#j3`S)sU(dcSD=#Y|q#x;(Te9b-57)jpal{JuiY z%-vp;nPoH_rC6Y+>vHKVV)k6Dk2=ehBhFS=INw#CsKx87JS8d2{N+N^5EYHI6w znX8QV!$Y-V90EyzWbcHs`YV&4xIMQ#_D;An-xX`N1-?38@^NnOmqiu@w8~oa)6tVa ztL_eJXFtWh^b81~F=D_(X!%3(n1E9uKO>x{xSSD#%E_CTmzS1@XSRiHo{0%00lp*F zU?|se9TV^p;@A4o3E-Pah9F1Tt703$zl%P9#do}zXUw8_M^*kPUW}ouBz)^OGdIR8 z@Sn6+Z(+qFZ^DH*fZWCbX(!GxT~ZkVzivy*V(}&=%JEb$-Kj=9Dbg(V;6iC7e+K>= z9ej|5x#n4<1NcqIRz91Qpojs!4#skLuC86vTl-Jib}J5Vt62j6N4%h-r6dC=#rpb} zL5H_UjNB{S5x1{wDuZ|YzNUw$;9_T$W|mlfHn*N29-cq1vZ*johzi8j3ltRG zdsKOSHZNHlR3kq=1lV6n2tpG3FMSpDOe=ro&WMT86=Y@USlVo69o)vx5PzV-& zSj<8GHMNkV&)aFu0aCmCooYu9#OP)3^+G;eCh+FjR16&VPq!l$0Lr^~{OMwGPOyP?{Oi4RtbW%qDr{JW>jQ&$MYC;d{8XH_>)TRu-DCJAMGWBmZ zBad#>z8*OR#hfa6kR6LXW7R$n8Fwla-_~T(dn*(_?O0?$xhddP>)){Oj5)>+3DEvu zN_ixTsX2wO!U$8N6Jh^olnhi85snHa10=1OyTnJF8#}?;yT8zC3PthRRr``cl?@ch zSAg&zC4<7A9qxe_QB!Su-wKUgn%CD5jDLP{y5H{UB_aU0R|qYdi{+J4Sd3!ZtTw zz-tZz9;9I?Cx$J&?d<98=q7QTGq}Z;U%O}MU`4x9lD+@(+Om}oj`(8B0>Y-}rkLT2 zwsW|%57jQ?u7A*?%8SYfYJ=V`dU7GdsiXkU_etFY(Kv2CeJLpR`umneSsFfH1bFIe z;?|>GEQYFDYgx9w6jCR){{AgiQ|sCcxpZDt^78w zD4UOed}sM?4U0bW75Bw5!7hkTf*t3sz3C1)Zn_Tgi{l_GE+w$;~ zC5%dSoj0tmHKFQvEhs$KJ)x~rw+C=5xzNIEvK90+WW(WpE-o)|Qhtv}KHnpG`_%^> zuSLg$V+w-4G64n5AlA6t>^~8GdjtG#y!=oN3wL(~0VrF6HQIqmSS4?`j|zfa=!0aL z@S_wGM&1RT=P)T(gBcYpeD)arW9Ub{3#NaxH#{A4r!?zIC_WQ?*|CmxN{qrsNs? zTT`X-)4Bg)(PZ}{%+_<5pES_OMrZhOP}||-{L;IaDw|5!6@%tbJwl;2hawn>2><^F zS@@QQ4K6!BQilT{7=>|YZS#|r4*CB=+buHx;TLt)P6{CcU-dr$-@rGEc-}%UV1rrO z2tl4*X^`R{3B6uldr+b?6)Xm{E9{-1Bo&gS<9USUlw-DS% zki1(aJ|F?uortBP3cwX-F$o_RCe0o|0tb(uy>Fcw-iT+kTc?z3-;&UnNBRThz*wJHszc z^!pf|f236aa4b5NJW&Fs43co(b}cjL%62flz)>jlR|LL!e-t6 z7${~%EPg(Kz@jk?g$z(?b?*seH#p zz#?bb?KMQK0ATCk-S~Q45h2+g=V8qZ@MhX88br^;v9_n`>?2ga7h;7>jsMz?&Fn(V z^U%)UU07=dY*^7OFV9H#4jh}R+zFn{w)SR0kyYjVVOAcEZYz|tX_ zbx9Y5jjT!7p`ZAFLFYKf`fUXfqg<7eKMWm>7J?kY_8C@S7ql2p`)WR)_1|l4DC7hN z&w~cx^>7a%>n}C}_RS5?o!23!r)X=o?Kk|K0=(s`^)+>&6gQn%AyAKF&uE{nk;2U@ zv9%^F=kOn^$m3Jf%vZcF5bUcYW?H_+0;HF&&d!wnJnrzK_! z_iI=!SnTGWU4~_GilnKiwq%NmVsH-9Qo1M*5z0_+tTY zZuj)>dN_;1zdOv+8xuJ8_TM&^<>z$~rWG&BU(czjsW`sZv%aE+#K(7k`*)P>*F)cT zza;~a2U(647c*AY)KKcX@A9ube*QU`C*XP(KTR#c;QOlG^IW~Mu@a|0zS7RU;da2} z7`KZX!)EY#cTII|WLoV+4-Is&fcmSiMv_tppk+q5bg_-9%2>6wd;a;}9WudLkW2Q@ zsJq)WDG1pN&II`U#s1KS6@*@vy+8JdA#IonQ&kjVOmEncgDEaKUyC`g983*J^<25E zZuO>??a!-CjDzn`@n0bFr4{sx zXoT=H-9-#WYgqbn|`20X6;~Vx5FU*Nw!XfP4)Xk8mPQ%3IP-J!|f(_6oAp0Da0l+#=UWHrG zVZUI*U*V0@0LJWMvrOGXH9W9UkMbjx2TDFIZxnoMZ0Ub_3jm!kKD=`MtVWTO1yD2f zPwrMRU%8bohUj)YKv1f+zeze_77G^Us;rM^9_=o1H1`WcA+6BjCj-CBzo?uCzqAQQ z@WFi+j1kCjn{e&-4ttnz{i+s35J{+k_h1nXS)blLa-{;W?*2ueP#3}jJM7n74)OR< zClR+R%sdVyZEQQXEx#EmF6x@8nJ)tbJ^z(L5c1m;qUoi}+{Ii(R`Kq?2Un z=bu_Saxe7H>$gv|`49>8aTO)1=a@O9MQWd;DfwhfEXSL`W5(u6{g28UCSL32Zw4y$ zzv`e*;=Q%S2N)0oAKe$V5_vuFNNwJm2tB67giPk3hS6@pfio+VUTyvl1gJv@s+#*^7Z23IzZ$FC-O5 z)MbL1(PVal&g48&)VsykLz68ry%$-BdVS-j{0ZgQpMPbC;Cr`<@eh2>jIiWE75s+E z!=6@)m`Cqq$&bEP4#cjk*KKoW)!>Kw*+mWo3h`s(vhVIv8oDr`=KJSl zyI71X;c(l3^(e)kiymJ0T!;?KJZc~HekM8J?#YyI-}z5`%nit?=cdc8|1METEaa6> z^jb(#*~uW!ys7bbb4hul^2G%vE~WF2j(){Hd9}|YeQW2Ubmm)R5nylvg-4R`I>D~>!Bo0GdPxO(lvS?QnbOMUdOG7h-f)GUk`A~ zYGsqRKYUNvNzeF$zq4jQ)~fMODJi1uUTTspoPMjQlz1BVW4Q)scXxcMcJ}ad1g+n% zsS)`B0Vy@<3wTdfCXoQu@@yQ$_h=F&^zq)xJlv^go2R!YMRwoV*;%L})AC=RANJ0+ow2uX^fi27R{o+0>G6%}cC2m^ z0^IVdWXO@qvw^?rJ#{N;D#W?{jlpLOSwhQr&0N!Ocqxbp;(0z|)QqnN7TaJatotZO zgcccDc$M-%Dh1pDJf&sDpKOO5OWTby^oM_SG045T2@;M@PEW_TBeq0{rZoNzcEH%w z95vZQ>R{n=SCb%V#LX_sk`LgiuY6Ey2v;hFF{$UFpxjAK8xIPTc{l%ec9#auwIScx zFNcPP&W+taS1Og}ZKx_*!j~2nc=dm#=eEW6q9gk9mkgkNNLI{5ojVx~)DT_6K$X^B z=)GrPY>o&*D)`^EE1hL*Xns@GW;YUV?DwiNCHd8uZUG282kGR?RfTmdL`DMX+Smb0 z-)&)E8tIlMrEK^=iq(|9(tJBx|V6VE$U9oPin6>Sj=22 zShQoE!z%`?pT<02T__}+1^Le@=>v0ulsv{fGVXf%VuRr|ax03A-?$2p=P)-Dt;LHB z5(wK9F^SD_5L9x3W4`cVqs`4G1jFbS8w)de9(_TK+{S&^yVd63T|P##*DS^jM5G^Y z6Q(29m`qb{;paJj`|WNiFpxjpY9jS885k(qPQJF&YnR%8STbb1W7Vj zS7b$<&DLj+j@RQ`yOB-VS9j$Cxl70(sdz$7!s|0&Kp;wqw{ZrqfAP`g7x{Tn*K4_8 z!Tb#NgxP5enwSdVaO9U!jxQwUvzS#}t1t@%V+d!<5zI-}+4f>fCEBkPhlO3BWn|^E zs&uzKI_35#Osui+Zu&v=r;B4`mM(_ycFe-RD#XNrms$uuCYLkcMi$;+{$L<$zV72- zIK0`KW2i~`2XA%L_)v~Pvvd5;y`0AfYpGublWyQc^y{u)tgAGGhaUoUeURldK7j#%C?Z$OimFoj*qYljZHeF@N2I84PwzTQj2tGGOf{6RSJbhTU6N z5$DS^pgfz}6JG5hI^iVqg16J_CT7qIGvxbT`JnvKXv{w_16~gIsI=YJIb%s4Mu^=t>%dB} zWf}c8NJPx~Qht1vmvR*E?SrhrO(_*273hKv1;D_FT=Tt;&CJ^A?^=8ReDmt`-#dDV z7q`Yl?!Ezhr`b3QYAU@`TwK1-?X5C`tpY3=n#6>KpXejpcX>hPzJKqR*?utWJ!+uV zAUefgB_)Ke4_Ci-T60AYu-$yEedN9N`_hHCXWk#-xVEl~{@3y1+v<79l(vg{nv*DC z0yDxVWfa)ut!LlngdLS17Wxl!YMW-_AMy6zt+D-p(-}V15s?zdd6kxzt5VETK3$cI z(D$->+}9x@z^B=nkK4w^YdJRt8I$&3)>FMEoB8axp7v=;XKnb{t?zM7@7O2P zEu56o>)g^;s%h}Oa9Q@RRSg4AU33fz9QgBceZJMnBBfR*zoMQV*>2JMZfnR2}SvUof7MuH|ZL);gUV`5!+Is;p$&A zo|O<0Vd9bj(Y|kPtBvtTmPF++v$~qvaR1IOhxWtW!ZxOKa045y!cX%whi|=1`x}BA z7w@9?qtP6!!<3q8_};kG%?_0LTWO%zVYLLO;(3Di-Wg6Rm7;bsn=XNXnXu9>ryo&5 z1lr&(F^!M+uuURmMV0yJYbsOusM|s1k2=lCLv?ypI~I zs$lzbXs4g&I#P}9Qu-moglK@0av(;R9TjfW|}YW1lwGE#k46Q8H8hjLh}Vy1X<_#p7#`|0Dw|3()w z9Ri^KLMQ756fJPYyWb`DR)28%=WBSpV>V5O{+DjUrt=Sr9UmV;2WBE~$?VFjE3Cmi zQlP_4hgh=jo#191cC;04Yx52!&K%bgKn(d601I(F@pK~gaF1`1gftWLyrPy;FBlPp zD!tKfX%PSTA1wUt)~sBA{E9(ckr<^uyoG4>kI_WDckdcHw)c z?<1r2bN;FSgSwYMXy2hDNg{mFY?TgB+V+Dxbmm7x`VQJt!P6KUHs;~uovrRuco|Lh zZ3egLCflr{v5UsAC4{)pDMe+C17|TUz!Yv|@$l=H7{kLx^To6O8on~55!|&aDlP;P zieWf;h1NNit9%()*>0p?6iGy8SD`O1teyGdHNKeQ$CPXqIuVk2$qrdlvW)K;hGbF4 zba<`(?NZIXg?}IEH=rNV>74m8?)jubRhDtb@T$fJMF9UnTiGJRX#G4_d20?tkpA@mG`|dFb$DSgQd08pzt-$YZ<2(@>#3ZRNI@pXL>-8g%+?5hRHtfjNh(bH1 z92oDCiAsNt_6}ucg^zcFyD(>8Rh&s`%HhAcL4x1%(bkrQyuZ`eA{B#UB^h|70&)tF znnbcRDNOBC^ekDg`PY^u6fSZu^xyDmsm4cLQJEzrr_`YK|DyGMKNK@PBK)inVICo& zN628SRuz&`W@JnccYOOB>Thqp5vx|dDd3>^F7Ra!0O~ORYf(erNJWRT`R~ zzkdkR4O|BcCa`cHpavY*R@q|Z5FSGt+jBi97WE3l)>%)^ zv)87WabU-zTxP1Ls+aSYbK3j>Bj913AU;pmf;@Q6LR+F+t(9;3`nk&ALl9 zreoX2Oh?b!&@N^0AN3_{rVjJY=DMdE;nd(paio#w!w2`DBqn8KpKe8@N@gowc>h^i zBIDq976m_Nkz}_|wHhGo2A)K*R_^BQ-}IeBC;i%(KLr{ly%wm%1k^0%&W&ZW5YZz% z4kGw!Pi6g^>hF~>Po1Q3={;h8pko<-VmR>Rw;FjdZZIR$fCZC(!1dLRZSWOWIFez6 zcFjR=Qp(#Sw@Z5Lh>po-?VW8T%imPo=6a+0(yG zOoX14L8Si_gRj>=fHZL|vkSq8(NIC~VbG}lYrL^l>f8}0UA1^`T=sOLa%n*`U6cxx zN(ZZy{{Sz>Z2n=&4gk<#1Qj9a^8a|^#>XVeEXxJ;W$wTBe7wp z`uK*L9?tQ%$RR@|pLkdBa9v>=qibOX?&+>+XLt1yee8%X`-~d%45Neux6umeX=NFK zq=*~Z9CANMNhw+wi}TvPVxgo5!!J-`YAFe7W6%(mjm6OvYhtkP8#O!Tl< zkVmRA=8D+F#z^pa<}wG7?9;D}gxM&g!e5z!UzU*6u+3A9Lru{c)s{BI6b-A0t8L6##Y2p_o{StUXCad*FQ*r0RQVG5nq#xvOPK^LUZU9;Sq#zi*NhEuO;XeeBROcdieRR}iPVvAo03sJ8=7xbRzk~GqG)B~% zzu`rf0+Ac%@84{)u-66%02V@y1L!sEX8u6PvCP1ua4g(+xx?q>|Wwa_La5hUtmRGC%fskJT0IZl}q_7 zPa~#rtw#`v^$bEbK?7YSYtsVRn;rtrm0%nZBm(yGjAX$~4!a_JiP$0}KmSgn)78x9 zWVhWOv!2=ZJKhT+^l+?)xnKm6Pl&ed@{+AEk&M{|D)%c;{J!*ir#Vjc}V-i`SXzg zr5L^lAJfi033leKuP`kE;TAfAArS5=gnBQ@xOBbpX00IAmeAn#o-L#v?j`Sy??z6? zRC*oY;_4#qZ2kM@H1ok-``7?K^Lgl*p|jsVbo+GmQBSIe?Lv2Z%g)15*=w(qf6ZNo z3DgJ0AE~Kodi&!eT$_;viilY(jU*g-W%wqQtfPEHd9c%QD80VBD!$oREHcR?a0qm` zIZ1@9xVGgFgq}mre0x44S+;s3iLK2g_HDM(lRp=fP}r^akCzOL4=NWi8F-vpRMwcg zczrvC_A=OUT@K2AF(a}ma2NK+MEHlVHgY82&s@iyQkOff5}6Jmtk$9)pEzdEH#82= zF3b>=dOaQ)Z<}?3?u>*y2zKL7vO7Bvt8O5Y-%d$iGW-M9>@2SX?vZ^`8l)2n94mL? zNYO^xV&d=-W%)!j8qI#oMY^OIAVzs z^-$;S=&(}4x^=T+-&sXp9wdhki1B{o{MG(o_9PuKZ~g&)C-WKn+?BmNvlW(BX?0kz zz?|i)afp{Y*HOu$rxMr0-*qRNx(E1O#j|4~mV_wDLAkiNaOT>i%Gh?i#P!yve3Qa0 zA3a5Xj=e_2QXT~n{m=I};7&bCZPdNYHc_Jkl{M)C$-{+-Nra~7lbZQI zJ46BQFCtR%#$lZDT)D6}5=YYn{jK2#%A%e{D~fKOAfs3?jK364^|Lzk1e0yYq$>%& zxYW!{Mr?RHz5xN!p-+Dh<@%c^D5sy^kIQ;Y-*AZt=1D`(oMz{qE)mNNN~FQh!-E`g z`(G)s4WrDmOc;Ie{FUchp@kIoa^XBrv^^ZGu%ic#^T8)!f%kPgU@Gk#QHxNbHzWoO^N0X$9kKb8i~6vXL`Kmy_FMq>7gBuu4R<1(cjV6K_gv~0SA-o2ti&w}04bF1P4@dq%M5jx+jZt^ z>IBrMSc8FQ#h2kyyF1Vwj!8G_*zd<6IQoLXIkB@~_Sv2fFV&-ELX-VH^WK~jibmV_ zw*e@Cn6t}O6Rl`>)qLX=s_YTkRX1XHo~&Owki11UW=2#f2r2a9+Vc%D zs2^#)!+~bUZg_Te48Nwenr)k)bjux)=Xww=K<1P?+>?a{JYVHdA7pE!#itA5mJjQdm9UrlBzfVYUPY4rB?rf z*cB0_>`#I?nNj4oWsFVFOL!yoDp zf(IU1DGqm-9j$+oZS$iK^vL@%anjhvMc{W1cYRIhbmEkGkA|Liz|J8Fu5IgSTyk1V z@~59yn->Vz2%H9CKmA8xq>r(_6TrhdGzIGLT)y@Jr@-l+&Z?iqboqRPuKqFhp!nVq zihFt%-W)vN_ic3l*+>2444gdnwXxVVpOf34v$%#nXSQAg)$0wT;#htIuLA}^{IP}* zX?8zDAYMEy?qevvG)Jh+k5@BrkJ)?ScJF%^va5N0`uPHh@wjA$t+yQ8G>BV?V5aDP z(#atMuiduG+otQAYztG5ho`7emg<|E_NI!8Rd*i>h3_}SJT~*qUOU;o2>yi$=o?ac zp7zr$)fjTKjMna{Rs)HtOJc1xMeT_^=kVT=vTTX)ALC2yPlQ`V8qoZIXMwvp!RUSO zzHfd{P>qp|Pd6HyNfSgad1X2YAq7rCmy!+AT|8g0e1#&#B+l)0eEYB`a!u2;&HF4V zh7{2953}7%|^(&VFlOYr0spt<{0SIUEW$~=_)`ZTkm~6 znvxJX0Y3f&mhXev)PzIKvfCzqUmFq+VV9U>CRl0tlJ^nj=Rn@D9rX)+zx`>1MCkMP zS|1=`)d>xAWOUK(^>0mgL7}Jq)~V&0(lE;WYfG80JMG+QHU;xs9OBO=*ZW(xm&k@a zGM^Pf@NlqP^P*i7dA%ug!RNPJ1IEJYD!3g5NT9Uq{*%zQna!jLIP<(==#}DiyL|ea zQOxfv?4Nh5*1!K&o_tDo+F21EsxK^mZ@~9vq0+l#^R}s))v(X%_JTj)+0#RS<#>w1 zEX^HMuDDVCCVK>@NfRTf_?}ZZrKa13)8c;hOE{9qj=FQt%YEI9;NNy`%@}DlBC_gj z-wJZc07zm2X3|UOT>AB!ksmV!$ybSKe%_o|z!m5u`qYRMx?e)noEin1WAL*VVeK^- zkkg4=JkkUyeBpkpnHbZSgo}ze89rvETBk%X>1hn}RuF!(cgB1#{mFuILsz!8kIRa5 zy;^Y?KQ$oaY;v@FYHjw~A^}L-{c%nTb$sz21KlBWV~uZ^oM*f}{XlzVsxY_Odgga4 zt#+M2+YSw-B4d()1qz^odsj@0ory@zj0~mI&kXj71t)Y9=00i5!Vs6C%SS^6Ywz_+ zLqr_(t*~;I(6k+X_}Lz08A=o+;qid70_=O^koQ1*PACMB9#+%wvI79@VQ|Y9{G;p= zc1*{MZd$@SmKJJjpKUaBG*Gz_Me0jCTlNmAx9u`Pu}PF9loM!Gi)&#CBz}~qVBwC8 z|18E9${K=$l3-aSlyBdzm^X*ux6=~+!^7oh<-MNk-TRtDk_9;OdU9+HyxfS%qY%B2 z5kqS7KJ}g-I6=lg!|p3@PFa_cKbZ1+-M7(r(*fH*d(^O}Pm0?g>Gg%E&iy?O6AU(> z$8r@+Oo|B{7Zo%oRQIKtgckf^5e@{@>1KJK6vYSC_elDQH*GI|2W^ZrC1cYAMnY7J z70d?8JlO(%X1g=1U-bgfd$kBZ8uO?Y)5nx8(nXr{hW+>9RbESX8tbj&X4xb8UrVGg>`yPSsgf|@{}g^Zgj4hunRszd&AojOAtDJKIGJHN+I=EL?m`mgMAITN3?c z>T%-X_Ch47l=pl}fM4c$woGFfp5mgar*6v;6WPlzrtVDkTics6(}q`$!pfbAy&tmj ztg0ZCs`$n?fD9C=DPHB%mEZD3DEgrANgKRN0gZ)Ok9_!ZBR@eIAhik@)+sY%0)su>QV}@J`~U&ydmJ2zi)J^67KFaSng0jspC;-Y#ud^6Ss^I`CO& zHY=oM_A!jU-dgmLxx|R%;v_|0-*&}P(vrm*vE9!mMRvbc_LLTOp8YW{BIw9_oYD~7 zzO(wBy7=FkAR{wNUg#**yRW4VM#A|M)4pvgkFV`Tv~@pv278$6c;azKUaEHSn>jQa zNVT_}XBO2LhLd?uP5y>ILR?G4DUUv)sVcbiV&NI-C!{30|e<@osp3>8&5%77C8Ln6hg*Fx>nV)x+P*v zsVMxoHJbT;REm*lzgy5OP4wL40J74+O+W5Vs4Lm-d1oZt^MJ-Zn6Rv|O)&Ya<@rCyt4Pb{xDk&|qJ@6wgxLwnSie(g<8T6yYbo1Kr(&>kPs+Pu~M&isCxLfJK`c{01{ zPNK%@_SCqo?y)+WdP05{$ul$DIXWteK+&bb=T)6GhZV(?H_FcEximvX;zb-y6jdmF zgc$tuIYpV){Jd4NKII*uU(o6eN{3MbXvP%K6n0^@lFI6Rb?j}@r81M*OU3uGIlq=+ z`R(PkHkd=Y16mV(7vk|64fLQR+)fRKkjmmd*}t2v-PsSE-wj6k4&wd1GiYc5vkkkz z49wsph0)*@rHb6@#M!vgb=QINwy#hcG4NTQ!|Qq%FePnvxi^!rZgHPdq9%G5JeS;LLpLU9MHyxuwwU0 zD=JDpPM4=(_=7V}RZV@X+8#77e@5iw4fI(2{=$Oy3&jXUQ<6Njb3;3#cz5-O4_FSb zhn~z4I5-gROWzJK5#TFP(7xVGbrS-S8L`Pu?t79KcKm= z0cFP_pVknz@Be*!n7AM7@PK*V55Yztf>~2OkX`>zp9BE963ChMD@%orsG;~_$CJfh zF3xYMq2c$Vp;{ru7Zv?)XWuSM1QASypKJD&-tr1pNJP!Xn34ATR@BYpWaLJ@}xccl7^VLa(%& zGcP{u}R$<}>K;7q&=JJ{_i!7r(Sj0Dsc(_;=Bsurq!ug}Fw#ET(Cq&gM6INFA*- z%gS$f*nDY7Am;ugchdHhR~Q{Kk?u6ys^$G~oj&3P&ozLvAT_T^eyz!tr!>Hv*g4Rl z1TwsynVj#*c1E#AB;JbE`&oVy5*CiOy*pNuYi&C@_9NN&boW6N=&;pRvUrni*qTUX zp3wn}3VH5Vq0>X_lW_q5E;AOs^J0QiNz_J(U zk84RrQ{W)PM`Idu%Nke%k5)aS>AAQONzjg!ZTv2h(Czs!o6=0@`NV(cyj>)poIp?G z_C8|#SY>8BmOG zezEn|p6TW7d+1s^I)k{tvl8%?ljb72zh76;0AdS6fo-UXrwV1bfhD?!(XT}y4wZh{ zWh<5AjSsi%gS%A*=b2O^pDush#n~NNp-#ADhby z?xQsG(3yazMJPj<8fHQixEF{oQ9oT&Tj(btU5>0fyz1!v^hjaFLug-7wC9$M-DA8v zLcX7zrqtcnk-P1)ZReBE6r&7=h@{%uh~W#<+WXESQyUCMv$F$8P{e-_J!hzmRZOLW z7g5Ohz#C9Sgv+(N+31ni5#yTvqdO%1dpDz${^i3Q6VikDz3#CGubNf%N{hsj|A zwbE#_w2sI$CIlUT%XhU~SLEP6IpkjXfI6)X;&Fmib>R4Rd3CB2ER9j{V;G#{?nU{W z-uN?X ztKFqsKSfpRDcY<1wj*_#g=_uZc&$zAqD0?%235_#d}K-c#Hd^ zHakpv{VcDVmU}r1vQDqswQp}K*%y$aI@T2$MWWsS*JWfJ54pxmOCagTmv-|yxGgxx zUE#YB%D#S>?HR04$lfaGo@&$VC$NB#R8%7_oXN77Bd$bj6o146Y1}ui`zvPLWwv_` zFjI3*5b-;r$&e6N{A7L_5<<Kp(0G=Qk_whxSuNz&#&44= zjg;mOV~zP4CX%;>WP!gCaVO&`y7aq992E%sw87qR6(bP8nJ}gQGL%gh9T>F|UcP6b z4v(CeP!m@~LGk(aZS8h5!%6tO^fY;VBYJs&_9c4A4XF3qL4OJD@9*E+h!&ba9OLAR z%k&fu$fVnhA6PEOFVw=CxTRunfzyXhuM_+nr#mjJVo|f5AK5?w$+?b~o&)Fap^BVD zZ*p&rOE{D2q*HF4MAJW~tLzGAudQ3}kx2|yy%$s0lv75Z+vnzQq`j6X1N)s`es4O= z?6WGJddx02^KVj(3Q%COA=eZ9(JOYbv1C8&Hk+tm6*Eh>C`f?sYL-EzgP%JmH6JIJ z5L6Z2zP` z*nd`Nk9-!()QZ=B@Av1@8w=~D)s&y=@Ss*))9)2=;^_Ruw9`X&!BD!samTOb4FZTx zXA_KMYKptSbYMnZ%?;h>c`ii%?Zo-8lva9ulfc^RLBR5(SqRs%a7Ce@!^c zUH(XMKm0ss^PA|1N)$k(wZ7_T7$MN!d!?+(J^$eADnGuma@jv1mMj5`C`~hois9gEHeM|6>qoj&4TxfY=LS9om%V9oTIY_mYsZ-#Y zm7TLVF3vF?MIxF9%IEa1E1s3JG;FZnWxohV{1{?H#BJZ6aasz}gjg{Tg~FuFKahPen^Mk1-1iusPyq z(gb>s4j5{|0^Bc#k?Yqr!bH_O#U7DTwlJ_a+ySlxmIjKByjy9nA1L82Jkp6Rku{DX zKa<;uP_bpR@`fCXlh{*?SHa`wC}I+J(q8=5_VV z{J$TB_@WXJdtzXi|Ms0veY{-p_shI#A~b2r>T{>8*!L1f-0Tl_pQ2lw(+a&skiBRk zA^9^zz8hdOGrCbT`@>av-xjpK3eo!S!%p+7eCG$k^>w1J9mk2f=CD|Hi&(lC(Em_U zjO4o@!+5K;7lYgIiouP_nP{nsnXhqUMcfGB&eo8LY{Tx2%Vnu80^#Y=qu2eNwm?l6=YMS zR-Gd>p1Y^;K=`VQsf5JE7;6G_VmKFji~xqAWbqpp!rm>-SHI>O(-|QK9dG*5YC&;y zNU%o64*aw3P+Cd@RpEdM?1;6GX`I2Gs7^I|QB%pOpJ+BTp?(cSEKALS^Mf504GwI- z%p;8`$dgCo3V)&6n=JICzvHsBq}WYgY5J~qxkQ49&EdbLWbv1}y7eJ2lmeW`(0KkM zBO?pD6~aM;Mk>wEu=AFiTP$%Ol79R04aI~N@p!UiI-=>pJ5K!lk;o~X(H4bxDk)uF z*3f-Tk*5*2K9)s1-0O?J%bU^D(H#3Qmorm?!VNV@V!gF*`m)c#>v-cSqz)gq6)u2j zTcxcNBASkXi71}|G}-J}DIqzt*E3_OrY^NHNR4kx>wabnJt;NYox)i#EjkzEYW+4b zUarRSYDS7)4``1~n`IY^c|LXQemvHDFk}8On zbdSCemNUz8qHgVlB1 z8V*+w2>49JbNwD*I2ShMe5YNWYx8-f_>aEd7?<)8Fea7?DYk~`HeOSG&45T5nc|8`0tgUC0aQO|yNTi8 z6+bhoq_(v@w+{>#n}!j^t>Dy6FrZ7uR8Up?`Y-$4$Ehpl91D_zq1z1oOo#2eua9?o z^*0_Fu^u^^kkHa!27?a-|1k;ixW9wQ_pb*sY$L6T;QV-e=VqQ8U=2Yc<=5|5@Pu?czQ^P7CdCS8job6h4Wzu zvPlp4g`*LC_I>g<0(5CrQ2+w)aiSsnCW*9@f_@{4ETt_LvB;;3TM1})X^PN;XI2$Eui{^j%*|ho}i{M`%wqbx-7?tQiyqq4&A-q~z~3b_qbiR;g+xpW#c5YavcKj_$FZ1=#I)xl1Y!{HZ!Kt% zNxj=}iW2R&vgn}URMjWPuMjx=v>J!7DKn(@+U5P5@{*dbohhi3hvzZxna6wjxY?(fCpA z^$`1D{*d_}bFaR)DFuKI@0+3*d{+dl9d zc`W@#7zoL7a)#`ZM$2Ym7|+kodwQ-{d6inMP!oV~fwrro6U-if`|%lk!5{Rr|8YiB zPmiG$VV8e7$3he8=8FpqV%&Z^&S-4Odfhir-E!v){e)su@S&fi5NVNv57 zcq>Czk87?GRVRPio_x^wNHAh3DG_S86>f_hDQwZme@M~}N^g8N=0CsF9eFwC-G>}v z+x`&)r0?`yh9a>EOA3+=ywk3a=HArMmJ{0Jv~f3GD(g0wmyS9#yV?E;Qt64N;g$>^ z<|yHb_bu?kdpbVFz4+r9sEL1I*=_t8Qet5{SAjNmL&oJFhUp6A0H2zgW|07~a1~)a z{kpL7UphwBV*(;FepM%&YB_F38sOg&HWDGJ|Lc^)?XgYdx19oA5o_j&e`y^_Lw2`8 z&=so(@Lb;}$i^$+>T+|lffXg9ht3R$->K$Dc1VLz;+|$t+ObJV9D)pa-a-L#ill0v z00%{k@!eyQ_p-9XP-iXb%hn|6JSIbfmA8)}V(vp3Gq23Zb8QBsYFZHs2Non-kMCK# zJDRZ}?k}9WG877*wM$zwsR-3JTyzDw?~zY(FHBtn&=*V!(GU>^994>-w$$>R8&CQBZ$e5W zcO$)TE$Yr_W|1JnVov+66o5Chk>Er{DcyRb^jTX47Hf?Yi52~p_h<0E;|C6y4hIv9 zGz=+WJ(ORY&rKSJOuHqph?Iz}wWZ7EA5m?n?)ROZBu7kZ(^!BU`6b;55(6yq_EMbq zybYsdMqV6wveS48op+aV-)=u#p;*&WYQL($eumD=Bi`e}02!A2zjzGX~& z^(!@g$YPp2bzs1?iC&Nf+j;jt^EeHXCrSZOS$J-B)r{PvQ!nTWK&Xf;n`7@#rC&9Q zlYeN6`{qD2n`a+5{F7JLT6iuK^ z64inq&uEpV3GGR3<{)+Hh~B)DeE`)vKZ>s1o40S$g7O>lZfNhL?m=v-K{*S)?ALzg zN#ECv!B=^7+Fs3XJ${Jdvr!bcbw!}qL?7g?3Mxw&5j(>uGRltrhO8#u1udhz9r>Hr z9hi)>ll;GEQ<@6fEvtS(lLnKM8ss0!pgvO%I<7!GTWyUb)zhZk-`zMPww(j;QZD%< zRd3I(-_{>^v+UWVwDd}EXiIw^(ME}s@8~17cI^eZ&9fb=k?)jcs1lkOW3r^Pzc~rf zn$q|1?W&CVvGoO=ALx-3=2M?;7qJB8Q%_suZ^ZLq@fy$(X=GC&&aL0*-n6TV6+iy; zL^ke!fA;(vlRa5Y@OL>Tg_vc|4>l^F3MTv{;QllAeOKDV=-LOhhO1BiWo`>k8;|_N zZTh%xR%y6vZ}r0Fg0o#*6~)pel1b&3vO{J9p^n4-VUOB(^C)zw2xdVhefcq(+ps-S zu_*|%Zo!{i8j=s_o>x@wmo=yZWiY}fB7mPs&JFqBameI1N67sCHPLMwk#ZYntqI^} zpUJ56>3nYP%~Nnl6M$k2y$hggTEnJ|u0UNknJ~Z2NJ}#@0~iG0!+?DzS8;!C>-syw zy7u_H;4?K2_@8qxpGY-ip7XK|Ax5xESz(>h^Q1PXe~>aT%nT^UB=p_uo|ot!6=M## zg@W+=ApCdtR<1yd&2adSXZH~+0Z3Nr6W69rpLCZusv@hY*zj=vC^{m(F&aSRN&`VO_L2&M*|CQy!A&|R;PtIh;g|P&m>_7{^0Ain4FSI0eW$`Bb;XX zmiNVsL2kN76Wb(kj7!>fUF~p#{DvTQ7riSt@~1Jprw5}rYxr9nE~eh)qk!8|7CMXU%hR0$|BlY(ImDV0n38J@?NZ z_C`CImuXT}gjcRL&yMWKUeQErc-rWp=(Qj7>GJSEGZ(29(9l@JXG|R37c>7ImD7qP zE0YC1OdA{#LUE$b?o+Ew82+;b;oX|e$sV?B#Ot0lTYXJvOCc{9uNls18~<{Dy5=h$)wnA5Ltyi@kxC`Qyf?Dst zPE*Bs&V3q{4#+_5gIs<5zmecV;IK8lp6Cf`sMFIRc)_nv1!RVWX2mP;rFgNjhODi z8pv#v31y60Vp@uykYZyf@ISp@l_N)^B{V9mdb2KTDz}B&cpj#NhA!ZbDsO*Sr3;&h zayXUkWG5!1T<;KOJJkioJWxnFER>*pf#M0Yc@Akg?!$QJ>lh{2NZ;r*wR!m6w_Xl` z52t~{Bkx06@fSL?W0cf8LIA6ve&XuHAjn}jyDJZsGu|fiz|8P3GV~o(BPz9z+s=$R zgcew|loz>`^!udy4CAq;#yeAK2D0T)hj;NSxBY1HldMt{to&h*9>(T+!cf zf)XyrCs-g(C;CNBy~N+ww!+7z#*=3DRE|O&EtTe~)neNCe1V6ubf<-bSkzSznWm4y zJfb#$;*e{%zj_4$aS+6Qooyb1u@!c%i6fA4Nw5#2_v{RbKslquozeh(RhTPzf|++4 z{fCp98yV71ax^iF-j7p_8tNI;Qoy4k!uVc|~(G7K3 zDaaJqE`#FrgBIyX{HTugNjODu9CyNCO|*UUw)9s)*gI~hyR!8X%~{fOKk9otjH<$_ z74AN7_K!q9dWscDlWMf#`VjBa&)edom?&u1=!f46vK2Kl0M^r+2!qrOJ z*gN?z(B)%1!IRfMN_i9GXBOc1X5h{0ES`=VTT$^<_W&2rWn_9*$8BHL$a)neoN4qQ z)Q1?30slhoB$)qlHMvF!Up5m-#DijY2XB07Q|1vb|9aSOK|b=Ah!;wrmO@6l0@HpJ zde$yqueu#yYdxX}lHUHiaViYYKXuxuyYM3WPd~CZ?!`{!!1tJC!s0acQGEYZEoePa z`ZWa;(mT%5Kq>&hmPlun3Zd$%iV7JH?s6Vqt9eTeQK~6w8XIK0@7_-G**>rhIB)V2RXxIc^P89|M!zyBNw^sam4%HX2$%o zn6>D`H^7$@A6{u>Pdwh^tN0>a0qj4V)tKzDS(<-QUT6F&l(ppEr@ebKBEIf^@4C@d zSnJ-$CR%AHOeHy3Z2L89U>Ig)NuGavuyos%f?mA%^%&xkkcoOqx?0lE)5P(-`p!@} z=?$so=hp@JD_BY5I=4^GbX ztU8|gtzQpUlckAX%VZ)g(cES=BfqXL(cur2kRj7C=_`jR|$V-##O2+jE?3=?O5FT$R7-Z ztW54(&iJ?>DhqU1dWyFPUlH1;;%O z)OnqD6W1qbPVPs*wy^o!;2NL2M75ZKv?zfmvd@1hi5L<_n+jms)a%B)w!G-qHqjIK zXui4T9q7xl^})Ep^DOK9BGwcI__cz}KuI(EAW_LWPtBch>yzDa`0jP$)1{=% zEMelU^Xeyh|CU3JX&m{NU)LzTZIeW6XF)?6cwP2V)UMU>iz2xxZibXmXYp3qri0)r z+*NsqQavGsSAXfXtA&V`SVXa+~p6c z=2v`im0nvNVR3P3y`|XI^gVi9(tn%P3;?8|*HqR|Y;=;F2GVC7k!iGwII}KRgwNBK zd$T-iSL}N|%LEhsSy$n`frmU|swMt9qgGoo_x*(Wx~B7YX0QSpne{Z?G}__G<;f(X zXgN(uQ(AEXrdH#GinXA_917Ao6w*vfnM`yriQzi2RS}%%tm51^AhS%dngSUCs^ank z(*N#7VL93Wnl$B-}f$acQINEBtR;}*r)vfS;r zwfM4ndigphhmb{iPEK@-p|pvThJpy)bUbyh1v>KeGcbmO)<^lQau)rfU79sg*g=Fn zF;J<8VK3Yl<-xor4fE@+>Tsry$h5c2RYp0S&An0lb8r6Na)szINYv{|exwBj@;rv_ zms6qdA~7@b&2#NW%{{nhfJsGrRD^=-8|<#<@(ew_q@*E;tNonZ^4sZ?*GbFv?NeWI zdA{a!R-g3M((m-Pm2OpK^Iguor0E$V;@R1t1q5A8T!}{dI{=R6H0UsY< z|1h3pvDzOW={bsK^E>TV#aeVe*_nxQEKBV$=&VNJ-)--O9u{?yks(5>Yrem-;f}j^ zBw5&zh>+zCOrOU>_VOZ+3^@CtiII7)r8S=6$rK{F;U4uMdD`IVNny9qjQVv{`=l^p z;tS%_cj_v|uK$hiwbLyto3V3r`S04MED$&BN#=@TvANH3g~b`I=>WbyUF~v?@=^a#_Uyw0krx`7^KAi0O2s zG&rmgs(k3$4(<8aDzOy2!EWq7MF>AarxY`4!B)`J$E`AHQbgJCkkV~%fAgA{7^~-# zJ4M+MtBUbO&lIY{aHPZ2c zRM5*j3i8gCQhhad^Ckd-a6_Bj(Kxyx{1{$cKZ%*_zCZ_x1QGo<3mEd-;Mb$^ioJQI+N8~F7jyV(OiuOBC>vM} zhZ5!90r9XK2i_GPr$2-VrrA3t>>sS)p(i$cd%5#JCTmOyxPFGyCBemCb?kswmGe_> z-X-VZN@y~{JP3Y9R_YVZTy9O4>UVd3|6G@pBKYN_j2Dd4Ky=%Sjpkmm4uRFqjJjjf z3UVZn0s<7QSqGt@V1GfkoCHLK7J5}_4l-Ks9PoazNCuEOrN74e&IriMY`t?yWYO5r zhoO7K<^1Q2s7r9px6tE6S|O>?EbCYMIYYpkYJbe)tu%vS{7p+y(g)69G=(qO6JA0So3~JLO#)yV(xbwI~YbhqDay*e;90pNHgR7nMXpg=X?SpH{ zCTHf}C%JY9C>CW^?%F4bjfZ_yJ5^VN4KDR_afftfzjcOOtQ~U%u|P6l@%jSuk$?1S zHUtT?T6rB!#s(#R1r0L-m~hfnps7$cc${3EA4_XtfjzsodXgafBu+ zsl$0$o$DvpQuoE#$o^^QP0?Z#m@WdY9rjK|_z|>){IHfqWTz#;`124C2G$m`o_5(0 z`}vT}+8T=HcjGS7^7wH#RQsp*X-m2ff7dSUZQ16Zo z5x7+#n@m_9qb!}&q%1qAJNRqNN{9?SV zoAhSj77y3+RHhRDUfBFTmHe0mRi)&cetF-rfskG9($hrG9d19NA$p=cGBK3&I)97( zcJri3&O2-y$lmr6a&fK&#~^1Q=Vav!zkmOpZ#OTI8P2k+KA~?ZTFFk2u&?O|P59~H z@h+!Ua&>;dM+BZ?zv&fm!9Ha!NQ*fvZQ#Q2S-MVMFv+uVxP&V$cWc2 zlJI}Oq<<$^fkx8g|FN~qTD*(;F}rX2&K%YNG-$6q8`r!iGyXK` zi{lyE&mqhkiI?U*yjtVgxjqH1kcw@hMkb`q(P>xd=gArDWNDit`f$y;_l~zZqTJEX zE>r)A!Ou1~JC}EBPf2FiG~cm7FHp)_y9t1KG1%2^ z{2GRR6TX0+fYNQMotnT5+e+bo^=4IH%q%A0P~o%c<-)^D_tY9~+Z$Ha0t&k)0u+9$U2V5V%^+iPGP{p1oJ)=iYO_^(V2Mr( zyQf{BJGS+(yCV+@?)-^4CFRX64fJ)b!qjk)a4OU*`0 zi!)`zXX!d)^%0J(Jz00CsPv1^K3==sH!HbM53b>t<*jSY0)DZR&E&KXGNxPuq* zFBIT!$Q=ORD5Y=i<|qiSdZ(a(HNactI+)LO4Jz%o8g)Ljl3S7p@yPD8-zF8nr9xn2 zM2zb2VF_iKsD{Pc&a^B15jw+kzlhgD;ze2Xo+vD zUazc&dPiee8%;uFpW7=gX`{w&UgGi>7nQG( zGEbMx>Lhf?#1ozBA{VN+2EZ`Y2|k{%=_tZt&2LRQ6%9$3jVpsHbE?4X>I7bKs~V^M zCmL__QU5Vm#u`Aew1o{*61DAsAON;-L807({MC3gb6z}_W>d~uC*(X&NHl&%eU1@x zkwRszqeBUKDMIusyTKdn)BTS^kJKzDqEifl?TRC%*0)YZqoBgASLiG@NdLr=a99{& zOkdEYp-{lY7bOvAN2j3MMnR8bgChly71n2>spdj^lb-)2dXf&y9Y@R@1EZyWO74^m zHe(Hf$$36l*jmmNd{(1v&)e8wk60A<*gDTV_N3phR>E%(R@8Gwz6rhxYOcXIprV#m z1EDsD$seCa&)f3psgbq>KXANMI~>=j3+c1$iT<#FOIGjJ!bB-Csn6q|8psrodx-R( z*qtkqFVJ@XN&67@#1B_d@7GKcLD621dQ=bRBRB1z0-iDvh?Qya8ECvJ;!4Mjp7T?i z;)0qQ?R!xSZzHt6!?Yj=(R*2`{sG*~)qa`<7f9a69$sIE!u{5z4p*3PlUHKovDR7c z#28^OV$uCn^tG*g-@Za}fDhd@h2bB<-R!HnZ5DF>&}Mb$cj3!uG>3LZ+iq=fyo#Dr zm5`flVGPPJmBF)FQZkCH|NDdjlya&AsDMp&T%ZXt2Gh;X@Uv_A9*gq|!M!mUG$Qhs zGHM6QGMx0u7Bvn2%*OprN_rA^Q_LjdQCWX;O9y?}(2O`g#|-N9!;E`xPFVA_SrvrI z?;kry1qe8a1$34pzR7pWIk~>2Iut4<8Kpn4SpIbH;ZI))kP+VMKhx`GB-({-M3qxr z>i1Az+&DK>MKg6e;ltLtgPA@k8nT_o= znr{C>Uue%E@w`rJKN7w^vr(~%2NLJH_f}F_{MjVm5DuR(BI@AyZpvD(tfb1$)d+Ex zD$6TQo=@%;1@Y9Pm$4^(V+X@c>JV;kzlnpkV%GH7=Ed1eMp}eZ!4r0Y|3%cEG{Hj$ z?n9m<4I~MLrNu;DOH0`vn#5sgCB+I?=nF&m95Jo3AVE$-0_hHg?=me=qR6v?%ybdCvz27cwdRmx9q7}N;VjX!&|tbsovfjlZUxsSD;u($Duoh)qiCwqhhwZX=!BFIuzDbeDM% z=Rb5(>l55*sf)vly|4=XZrlU--mt-A;4c(dWU}{nsGe8RZp}TJz{_f@Tf@26@g2#; zcM?75=Via-w+|<6A{HL7r0# zaH55TPZluoEHUCA>5v@xg}sd4bmoTFepY(dMnFU9Ds%D+lrB^7%i>-UIGDC4<`qp7 zadI;BI(Nht`z)4ZbFcWH(@!Rz8blCncD$h4Dqal#?1Ql$g*JlNuq9MSx*6Xlj*7DB zM*lP7lN~)>h9MB<&Nbu~O{SxIY#`lX70v&j=zm>JMUX?{5O4O>x77ap>D5N* z#;OW_$sULqWC+nN{?&!?H6j;~lLjL}n6H6~+~-btDpF?N*&T|Hyr11oJ=Qaqz_5~0 z%4`b7#Ryqa;h>I%dSzTmMjmV&qE%i2(4tBl1@dVTI90@-j{uJBTF0qFdJ-8N;_Vff zDr?$pL087Oi*&l5WDvyf9*HJR4#vj1=)W^X3woabok(Eku3TOIV=Z&{4>@-*iY%ni zn)H+l#lD5WbOUMrf{g+~FFgkn&jjon5LlV?UyYKhh_NW)$DzQ_N}}beCx%xC-~9 zZnm3RBvc-Wq8S%_Mg!d1H3>+Hyrt)&f?CsV37YG0B1zK?{w!&voR`FS=|9zqQ%-ey z8`Oc^6`}#OB`o7!8G34~KFowLh0}R4XoA?SXuJ&Xzu*x87{OV>}Me% zbl)*Na{S^qoKG_b(iJeeqyLd&o!~DYejD=grGHM=CUCe-Rb;+QJdcd6J)?ZYaP+bJ zTk31k!$iXX;h$3;^5%toPF{aiB3F ztV+2k(F_enXIVm7e!I7QU*m$F%A_m3o;n4u?BANbT2+v&dd$GtDo*=Hv0qxp;i8$|85kZ$90i$=%rbGJQ94X839rMYz{>xk1f5i4 z31RV4l#Ve2(El$k0hLOp8nh`&HgKOO?!OInwrjalNEqt4 zmPJqBeQtiq+>XsZ7=kJ(uj@sEf`Q~PaF zBV_Yt?=n0*?wkkQ{Mg1Hj(pl*J#<>q7Brfl@!da8L=Ux;Z``f|Ii(hOt+$Ku0$tL6 zVpG$CJP^N7@L)8;gwDk42xr9<9aMOE8rc4|$7j0H5^BqpX}_*}e>f3s?#=N`RJnl& zC24Gb>=ymqLZTfpo_ND5B`%y@1#q?#2+>EJsrpJfgZwDyd%+uME{D-2fwM%44~AOC zvy;Ds?D?Me9DkcBOz3#UItOKzG>D+Y8eJkt2O=i*fhVnc#BfJ+Hz}^F2FAud_YR@z zEJ_~@-};WL_=6-T^|)pCvJUhu55yx6dImO>Vr+}~s}hLfizy{jzKBvgId0Qi;=dRV z+C&IMT7GX-y%k;#c^3XAT5p%PM(jkss;=dAVBY42iIpz-NTzdYkKx~H)Iw&Rua|_@ z<$twQ8w;}s09y@(j|^UbqQ)*;FF5Q&&>CjI7M++O@fj^PIVSTHPq`cNzkEki2g#@1tl!q^58D2chXE z)`MSq<;aWS=cb+W1Be5>)*+Na($d#wAow%EzM?qpn{E3-r=Q`gf=$)_)k4oQL-MsX zv@X19t_)k{(;fx6`(QHWYU`G(pxqx0PyUbn%zK{5a8;y!G>`X1S+L@)99;5mO*>ext{869- za5FC6hi{|pWBcG;j>4ueA){*)+&fen#U8t|of)&cE%Yb-ciD*vXP|kr$|~yf1PhkT zyk{kwKrcGCV|JeE5dYJl=o)-uZoQ9ahEJ^$_Wkqj2c+AD=Vi{#QnZjBW=@c!>bK*x>Stn)uEo z+s*K((_Y6go2c4y=PsE%zimVS+~I(;fAnhmvgJR<2Z__t>%dg_pKY^yl@8kyv2+~k zvFU1A3Wm|Un!fP*C#@s~pQSE{)BViptRs)zvA8Q*40nWfq$<~0h0daag#R} zD*8L5n0)~u?EB~bzG!9MRXUrH1tC)h$N$en!y!z)i#~!kuhKz+GJ%fJLvT80v#lh; z*V0lMDBn79FJG%g^6mOEgt-f9pxBc&fS!T<^aYZ4)SW(^1mZ6PeiRpbfUD?qEA znu>StNDZl0)Qy6O#39)RHQ;oKIg2Ic$q^TQ;q+_Q5jE&;*`8!+thVomBl#1SAuEu_ zhJ%Nvu6<*46}#2u{g&ys$eJ^v@O*bYy8U|&eP-R#1lv6itL-Y<;YsuqQ|95lN6p1G z%)~Vn4H=-q#R&=o+7#LY1*aPyskg-3aG|$wYT6ZJO*Ez`C>v6c5I@hT3d$jd^zRGs zk9k5l3k#9#Q?=?3eZcPXaPJFms*t$v$?1jqzQiMBEA>f%AP`SY&nrr&X7;+O zeVLVwjSj|)b*HPPLtnl-AT@uEn+^TkTdWZyJjJ2*vrP;L`uc$IIb&f83Fo1O1-n zK4SE zI^Xe|_<7x)JhFtL!kJIfl{Q_MgdH%*`E2y}IPu9)MhL#%A2q`G08C3C^juPo_B5hE zq^`bHUvHLwS0`E&O zr-{kp!1E(?ia`~h8Be6yUK_!X!(t(1P#Sgy9ZSqe&E%RP1Jr04Ii+EPlejUb^mxX& zr6VRDZk80*2b>HtEK}^*N0F_*T+10UZ$qnicN(33dxf?K=UF_nmy*#{STA4wE(0q= zx5~OXvRO2T`zFl6#)elzzqSQ3>`0H{NfbnV!@-iobcl>eDnb5&Rf5MkF?tuY{i{Vg ztcf)nfap!oYJW$u@EY2D9$hpGGH(RKR41yF@PM$)ryJ__>N^dj^8yAeYx*%{2#S1Z zP_5ULt*I#!?MAaO)suYzADdAQqa&Rkdzf~#vxBUE6AB!0Et!#x4X5d}94wm;3v2l& zjf_(UVteJh6)VCbgY9s#uXOIpUGKb7Y)`UwZ(X>d)s$~F8Jwn;n)IybcoCaXD|#C! zjC*6rA_|}5CwkNL%8DHGph6fjuwq z2l$u;9v}YM4Ro6WX>uE_FxPBpt8T_H*6;Fvp9; z=MEPCmR(1)7d@We{lRNTe|73H7XsW~UvKQyzSXgB;BAs0tw@bu>QT!I02hf{UC^2& zwZHvZurHU9NoE%Z4ZF$DFs2B07Fjr?fuaoNLsroEF&rR!u0S$3IY_t3Riq}#B>2>~)by*ytC#q*%E7+0OweJ#N88Z-gSg=#{0bUB@iiv4 zG;s~#4T?ClKr2hzJ$5q(bhXn%{+FOuf?J`qxwmZ9T_40be5J#a)~u|MtA`pV!>`?; z5dCqs_Q{Pm{i><#SOyqqNw<#9DW~98X=-f$ym0fmlZZl7Rf{SYg) z>!I$BsPGcd7^8&dOc}JgAyNl~&O-W=TgFbaJhnLsb=KMQdhWU@Jo5%TSp^DAw|($9QEf zt~R{e^I|r!+1myBpd?FUW77W76*Y84TLpqrp;P9^S=P50egTZIMvAM*d!R5F0t2j4 z_*_8iBR`2J>Dc3a)M$#$@OTzJIy!mhXx76wXr3GOFjwCW4cUCZ-hwDh+w2ht8t8`B zVq2+Kr0h2^NUnheADo)*tI8*aSp`4qdDTVC>p8f+CNrhYi-EVkv0w;I*S{(y`$4N0677SX7?B_xUcd3vFO`K;0!ZSY9JBoy?ivoQzdJvmW; zvSID7vDlvzi!(TXq;Wblv6eoTQEq??hVz!sI6w4&s(-U9u~66ru;XIZF0?Tiuzk3n}xRX113?#h0f_u|1^ikHOua00^FutpE zwd=zsK!+N!r=Sj4&O7xAzb<>&l-xKRRLPNg?RSa-j00#7otbLTwS7yA;akfJ;P3T3 zOmC0MX|eccclaix8ah?4W#Q+`i@x%+iq>P~*+CC%xEzBjSAO#KRiPzes#xMR#@ng{ ziY~IK?-ZcVBTjA)_hHiKVO*DBw(4>kH?$}W>I|;3ip^%|Lgh5`1fwz(!WpFF`|8A} zR~R;5PHtA|eBlvd?;~&8qGJ9q?2mfIA~$464~^k-eh)Ux#yVAwYX)U0(%eYqf#Ys^ zicYCqT9RIht1+VV6dLxapQW#P{L=ww!Tk2@W}&|!yWhSsh4tm*3A+ze2dnnVB~q{> zb_rJ4fN}VPVKnm{LGsGiWnXpL-&Y_CI*GQTR5o)j@o27ZnGmS~DN({4z*!|M-bkXv zM#{pTlI7jrOpXcQaA3GnEYnK{SC7D8yk{!M3u1uE7y1_>9k>JK{O3rY7;47-X+Xsk z&;WHF48tFXRJd(W$Re!lSYcOk=SYVr0o0FjB~bc3D0NWHx!aT5t$ExK?)2Xff3++} z=Rt>&^!kVevZTPAqh_XTEnsO$paB+u-W-&4VEJ32^r}o;zq;E1uc=gy1-7`Wm@m5c z_$*oNnof1ek`yG{Z%+NFd*_Ev%0rY!8Bu z@gsyKAAMg(yuAHU5RPq)Epxmk^#{V>JG=zVN6dOb3^a0sZ`zrFeZ#NNy~ft{u6p7H zk_eEg>p~d0?t9S1Q9Xt;Hl>+0C=Dw%kDm$s?g)BD}&WhLLg&noNM-0vs=Gn&g7S1Ffy$2^Zx zk92Hgq=40X9ohAAk->MWPcwusnP=lr+>ME_V-ugxsHWyO#jlyZO}{({y$+>KO9V2n zu29X~%)ULtlpxvBAb~NPn=!Tea(P3Ey+5TH^DBO~R9-r6T_Nao30?LW;Rt?l!r5 zeYRXaiFn@5bZb*-WMcXW-pZ7N@zyDc zL;V%@^>rJQC-fX5NJcJ>(Mi>?2x9f^7=76kz2AR^)q zY(vds?-Jnr5H|q7VYD&qvW6?-evv2uaMI zPRu^&xh|bC?=Pbv9S|&9s2uw|H)h;mq%&!{dl@=OdCl`d_oIgSky|Y^ER910vycya z{n4D8%z_$HQjQSBkYxYkkD>lEC$~RbbHU)29u6wjl_*IkjP@U8IUGkDUf2zh70VQI zXq?7wGsh5+;D?pX1>_rHx+RS_LqSMGDy5W#Up~lAT2oWQREKn97)g#GBcA@kC!YBo z-V`YZ`$71hE7mu$5nNU<9GqN1D8YTl&v=v^QGQk306v}U10@7p1DRu`puKD(Y= zWMQ4usB^jmihI$&Kq|kHv%U_}S||y!(yHYhsuI9_5are29*D~;Jf@!7?3JlKrDEY~ z2P32u!d0$)*{$MR>p2sr;YcZrZV1+UJt3-45VJx zJsOtYQ!AAb8%8i@8X~wE_{$=##jVb))DM_tZdTb(;HGgOg=j}Zseu!3msnT7ohB>{ zXE!SkLX8q4X2N_te(_IR-QNm~kE z{t~Ra1=sxxN@_uv#1${-E$NOJjF?x)Y!MAMlP?7UZC%LjgmA@q&=&NmiMygiQ80cu zG8%(Gau&f!)AST(h23+X2Y4HqlkeC|C|-}QyUkE263!qGqhD~?oEh`=#ff(d%W?BW zkeG;UQ}7p=1XYB-cVe@@e=CMR#fZ*qWvNj3YdSHqnH#r(eiMmu`T7`xa<7bPLI|o)V8+gyp#V7$?`M;jDA#uJ z0NmWG{hG!f%>L}ZXwz1HJGjt{xQ{n)IA}I`{o>88Fn_aoG&)9f%BxSUdf4gu3+0GB z5O{@3%g7uyt_wl4@wd%VT!tCl>;&ME8j?$XW4jO-j%fBY_&#}5d=*^qjk39ulR7Vz zO6H;Ge~L?d23HdOBjJ~8DW_uOFo(~FtVz}tl20-Mx_O(qmn6lOhyZ>i|7&5HMV4h4 z!8B3hCf`Q)sldUVkSA&PHkF@IEf?y?C;SNsK*4fI8~F<&BJh8CE*gPuPx`pt3r*A0 zi_lcX56z|%UVbMtR<6@9C+a{Xm@~oSv@l7%M#Cr7GsAtYqlz!@##|@giURrd1|xA` zeyAXe)(P2Yij}}gt;bHl>C_f*}OH4>kx+SrDkA*R|Jm2n4 z19!1MZHT%0m8QGLfp~N* zK<#wJHNW2H{he#|rPvqSgA{!0K&bwn3=p*?d782E9k_!F@D|rq({bb|&;#GCISVYq zbGU`H4`aZ{ZPJ=rdBxK&YHU06cJiLKT_NCR_u$`K{?Q$$IMMA4Lvf zFIsZvkv9#3Y!@cm=8TU*sunXa8i%S!M2^pMnUP zp9H_O&Cid-bfigz;Txne0cMeuQW=z@R5{-+3&44&xY!Ke#8@yxK+!1XY;My&Q{-E9 zKT)WeFs5P>!Zon)K7a4~Hr=&A;Rm$2ZhvQ?=iMccqW(~A>Jt;W2?91_DDrxllWC`c z@#usdDFjiUOEA3X0tw36=d8vZuCix`EvWu+F;p4c>;)M%FE%y=gsG2X!e#b& zh@2JkH@|Zu;hyF##LQ4ioSm_8CGp^v`1Rj$PPCktF%+R~)Ec?}o1gj`+h|X* zE&A}w1nxlal4}o5^OpyFckw5Q@#C5H9|F48QDXOf4PyVmE5+W4UnC-Mo#DJT#*4}6 zv=n%EBQ(M$!syFKtV$xap_~{+p4J27Z<{^EFGNO|`_i(gJNp-dati80eN62chC;qV zRD?5cdD^f`$f841Ww>aR{(`!kKijIt5woJ)W#b*LP7wc)h>&F*I*R)>XCI5%cssQi z3Y}5+sKdPw?~xwZoI&`GISntXce>kkCko#_oxOt@DyWov7=a)FD(z>Pp)3?(VLxJa;}9 zj+#|uIxa`{R|Q%9qk zw;u=P-CArB9$>bi0*k^J@ll(}|^6i?~uA>E^@Bvvf4O6ZXtS+useD zg3hOWIhZTAm-J7Tkh>sAJ2N;IYLg-9qU!j0WdU=|33oBd3rDuxn7)L3>kv%^hfMmh~P7V6rAkqmyt!RDsBi_k`EiS@@aM<7dJLO?3n`K-tCitaM^V;WJyLC z=zUe*-yIYj$H7Y;;H`|s-v!<}$W?B60M5LPqPg!-F@>x;`Avhm8Qi4f0-q_B{*Z z-=ih|f41t9pA*aSuHaD%A11^+GRSsroLncrpUCP%lLJtQj4#-bh9<{1mB8T$Q-g-3 zhsLUdcYPb}C|JVJvg{2*z@lX1{8eMX;cUe{t!*<L>aryBtDay7mD~CO|f3xv<5&!En%}Xz)5DE3Ly`EgV{c{jd>M}A1*98?ZnJ*W} zfa|-vZz2MeX!7r6c%>)u=qTy@9?46sQHz-jo*1FNjJhCexD394 zL5v&LzKH%hl5CF$`Qk&hpZe$Xb|W;6s}Gjg?lOEY_%4w5m#WwY{r84nKDDF+1IYYC zN?e@XJ5(Y(J8}U+;*`SgnkX9Pt*K*i`A5;2yO8v_e0bc^{dK$v7Oh*Z6go5Yd?MtO z7m)n`uZ0g)@rYMZ&+>M#Q-Hr(pqL>HQHv%4^Gs-x>0;m&(=-;U3biVW09fzp2W#rL z=!vJpZICF-Rl}|t_;*bEpP?XBnfR|}I0vc(e*=OjohKva1Czdzf`PoPTWcP<3Ea6R zLfwO~?+Ua|9FfV&&ctq9&gk>l2XF;fUyCyIb$&K+l3WLtFkNbA6PW(ah;~-A`61wc zyA|`Dzx`L)J{7g?*2X%UTr1;~T62cqQQr?!PTK9*b=gMw)`OY8m&gCczemUy{yw8& zXgWXv?dG?i^AqAW|E@u?{Xf~K9BBsTF$zKD$g`ViZN<}YQB?*BAMgV4 z)J1KBIVGQmAn%M>{~3i>A(!{_CPeT<-!EXyEVoB+1A6C#QNsTiZ4X`R6a7}RCPy#a zO+I&~2wc0XW5SJIN1R&;;}zEBPrd`VIiLi7F5hF4kN!@wlt~facb`@A&w1t~!lW`8 z<|CyUaBNrT+%KCf5CPq($#aub5R|-Z*IYv^PQQF_&p&kE&cc@j9>L7)@_LJTxmG&f zpJrjg!{btk)-$?7&-Es3@|c81b#W=fzn-@aQAY61G}wg#AAvl(hSr2m&}VZWce>ho z@|?N3051pab~PuCGcvF(sDphVG}&&;c}Lb&h0;)fttKGduXjsUzYkg0^u0MwH1LvI z49>3(vlw-X{1QGn?$U1c8hIn#cYfmyUHp^J0018_$jEawzdSBuOy@`3I7C3pin9b?zA8D^Xy#U zH_nPMP0iF1Q!tMmEy!*I8ffczIvIns<1r~@r7TH59t60GGfa$SA6XzIGlBUd+23D% zg9sPU_Eh%;{cVY~Dajlbl`a44-2R+g#gyotu&X!hBO`blx+!F7nkrI>*?D~Q#}!e> zP<6g20HrX9tWZB)35S#e`WTle`VUHnVwHLPpSu3(kA-T!vj-g=1UYi+1jJy%YfR2S zFupm;R%A%EzP4uLvJh(xd%5oYgtv70P!J!N$^@>LaRVkct#Gq0;PDc!Z){g&Jzado zSlcgZLNE_Y)tv?5F3NMQwM4SW^t{Bk1x>{G?}eF|!saq6Gw`pTA&UhRIeP(!ZtJPm zQM|e%a;(r)pT~Y_(ji1a1i!-@IQ{&2f4ZOI)t}|Z#_L%6^5G(bFX{%mg17$@-Y=N# z@X+^$p{J6v^KEwn#CRGO-ur&y?EH~9QO2k+`2>6Hv|`drJCCFi(hkMQ9(wdBu;vnU zurhP`AJUXo54Iz{YwTTM<$h1zWVeH>8Pz4nH5zx3w7P9c5FP9bO(~8j(dTe>QlXB` zfcyhGKj&|}= z8=%t*@^6OTLJSdjVK#ztz%BaUFcxKT z9Hb1lzA)riVO0wNU4R#eiA02Tpz`BH;f?H`8dsIfskrwQtXGzgXg(Bz7{mAj?_BVh zx&SV~q}D1;^!F69-_G~+v;e3QEW@HM6>nR(3SGj&C5X-VVT4akrHTDLcGa%Bm{G*} zqY>k|&kPsSVq3&bHsta*6ZL3M#)@ThK;`oLTZs1^((5&@_^@O^qesG5X{cq#KR2;1 zn45f5n(+wxNG^vl(FJ$XG_=WV7WV=roS%WQ0t2&FsNDs(I3xP`OE8lYHbT^bK5XML z^4+B*^8-j0_a&EBxq#6)0AA&Lz2+nH>%>}nioM%Guh|jx)U74vpPnp?K5YUax0_*B zqu{G<^-be1`&5)e32!?e+5V>7RXtc zV(YtergAdCgu8`aoV;+r(S_L_*#PPugT?y$y?4y0dBN^}q{{;>IksO$Ti_09e}D;f zXB>{IjoM<}6QDSAs~;MLlI=mlOVw85j{5OB^qy_Ccavb_0I#5Zve0DQA2tDe{`reE zFljwXTGbOHY-sySOPDF`rrQxs_OU2_vi!!{O4`!K#(4CoY&C&m#Zbq-lRQ-X*|{IG z9>o(%IDQ00!N*#!?9x-50v%sJJw8~)iE2O%EeLw#F{fwb!tO5bA>fP%ea>H)Hs;!& z3Gjl`McV{d#O}CSGsQ7*;@*L=m|0K+J^|mds*7hiuAl`wVG3Mn3ed)#FzNeiDS=X< z7j63-RY)iO(TSC@pQHnt$?2iV(z&}AHEjnw+eyL`vW;M5I2v;IGo?P?2;7Gc7VfWt zYJm7ttyp`i`VEAaP9Jgatv<-n+#bAOFwiy$^O*Ux7S4f3?a2?u&i~C z%PBp=F>cXRZ!?#~9dBwru?ulY%r8d!!!sgW^u8#;%)5}{o>{L0J2)&o#ACCs$*CYuAMa6l0*`jwZ5XG ze}=l$wTg0czY6E~1sNv_*EXm27j~Z+sx&iWV}s3X%&k9df4N1!B@z9nL*zr^iAU}t z^Gr0i@>kLF!`vUkTJK2=;9E}0Co$M17}4jy-*k0%4+hX2o5&F)9w)c{4j(ej=7)PpPe<^ws<}Eiq@y75HbVoi2o;yjH_`ptPz3ulIAfS9UKlJ<8@QY zQLDC9+wo`r0X>Gwbr?u7-mzi5LAmHz0ogTU!mczrBVd@b=U$Nt+-7`i1u0{$)yLLM zB^#DZ-Sb!AcLB0E`UHR&hh68S($x zkRUvpH;oTxD-c#}!FAVhR>bVYOG$ux8aWUQ-^N}w`@sH6e|=S zm7|~unyNw>#4u4M7*Le<0R!Kn9jIX?I0$9-s}zaN0uiM`#$995yTMTWc8Z>XI>Emz z>gfU0d532?8c!a8ksF`V(CWjz|83wT--I{Sr{N&P>;_lOEHT440Ljao2Ub!=F)0FW zquatL6X*zrD>w0>;&|PR*Ynf~Z?$@6=*3Y1df#p8L_H`3;Q}xzDt?Fq%3*WGR;OQ7_IBF=-$`SaWdowm8yh=(0r(oa*D8=*Q zsDQ!9M{yntpRB4HjJjrn6>QaQv54f|V;taGNHds~T*i>EE+g7D9fPCDJ-I`YN?PbR zk*@2}b&y-?fVa)?%8lm%>#p?RIFvgQ##C-EfC?q|O(5!PQ_nJ8OGaxlJV=s1J2hlx zh^CZ1d=*=y#7t3Qh2dcUT4nC@68%R6is)`|rWo@zVW9^yrbpKH%2HD0$3uwG#reD` z)mL@|)QFp(yc7~X&=(xb&LF85P#JMznDvyalX=0EN@=JSpPI>$A(=pS6h}I=2qBr7 z5R0JEZksGsptWQsmjp|DOP+N@d>+U$@;y$G%n=h>ca-%C>Oob6-&EA<7e*xiq5l~T zgx1nn>N}M3-~lmCCaq1s721@;l{^-(jO`NB%TmD)$2IA6ez(EGScW*yMaRNEhC*J5 zG>Iw^#wUD*r8+&S$BTR0P;|qV$|s0_+a%5(c$@*~t|kcWLmloMdqqa};0OOOro`#d z@5Q6RTK$g)6nAabuNf>nx5@=S%=ae3PS|B)CIdIa8Jdp}7CMoy|Huy%dC8n2R z07hgTy4jmhLiso@dNb%@%;y&zkVXx!UzTo{LIM6F?2xDBM{s(6V+##v$#$TIztxAa zz@cd6nR&{vE)yQ~0!gptFNaRj<`Il#_5DqU zMZzw?3?9O1Dysy~4SJY4v>5SVA{*Ll$pcf(+=%fhx2ejZsHF8n@u%Xd+qJ(oMFh1T zil6ILQT<`yKJ~c)$;N){aA@I(B&Z~W;~SgZnTQRkgJqH`@+36*OP1J=v^;;4)By({Sy_LU~3jY04kU zPa*d`d5x#Ho+F{#v3q7h5flyYnWEt%Bbpg7)C-jAvyA!tJv5!#z`)qArt_^O7R9>e z^%&Ea_C+Dfd3t8+am`C+`J@kksN(PMhs#p_&?`v1ak)YBf!mo!^`2@^8`T)L9%R#F z_@m|M_WBJrq$40IC09n5r~Os$EpCAdF_P&CgY=W{Rh;iy%k!0EkiLU`N846u{kk>1 zQO11^)}1=k;P2OlZ=osx&y^mdvCmXwEQ(m?~`%?SiSA>#q$ zM}Wa_{)9y@#`!XAw>+%Bw7Z^TLzLm5L38-Rd4k$Ok%-ekn3x=GE{>^x^3!|GT}8z# zS4MqIN@+?2Nm(hdv)F#WGn~JUF&sKQ_aDJG5u}?J0xl6 zLS^FGA>Uw@U@M~MX-^^%C6zTwm~erm$hvY$5qK*Ah}EKDKPIFvs2cK}6V(kV+A(r_ z$6lpJ6QJ~357r370YtM;q+Ez~$uergvF5eMTKSHd;2$s&;scbV(zBEyVEDzc*0$Wn zW_Rp4HT*6@NqcF(=d~1Wb=@@m8w!ppTXOxQ4q~PBG z?^$tl{lo5#QPBW^-^gBdQb7m~$xgm7P`kC?C%OMOcH=cKR|u(bbBERbJ>X&2ea!b0 z=s}DaDtE0ov4}X&W8UrHH-(32!jSRiT5s8xj%ysetI-qihabwjAvB8ReUcwcIrmD6Aok8Lb$WYg@yK- z&vM+}%nW-nfMr;qgXk3v8PF}u?8 zM@u5h(b@;5IeRB_bGe;#uyM zbHYU%pXUu4gVzF8{E>nvpGF2UX$e|Gn-pZgZkgu!cc#}i1(jn`nNp+Pd;O`s zpP6MOby}I>lrg529I9078&!Zi4i4y%5h~=s5B~(t`x3&mUB%GC_kR_@85-gS`Q-vl zhoNz{OHW4%QvOx%qx-Sn_Az}%N{lbd5Zb-=@E{M#bB{kV90dL@M}%9k3G`f|3-^U? zr7^ErRu~VvKmwpg)N`^W;+$K{{dLZ_n-iwF%S-?eW=k5^=4F6P=Qy8`=(MxP(jJ3u zWVcc`{FNzT_JX)9ZP>fJX;j-aVyE4$&&wnH8=iXB@26gEl`BHc;l8d!H_D`w!%Yn} z74c$k`QS?>qTi=(i1`1YTy`2#glEtl?#``m$>4alf4`rP6=QT0*e@ z)N=kRV~s`i6S)`0`z6Cw$Ozh#X|3!2u*fEt=6HU6ZC~9IOIl%A%3F&g*nOrD%s0qy zg%|)V2)UTMHU}}Ej`3HB$Gl*)nY%XmTTAV2aS8R7ahmwG;z6K6;Z2$Pr2S(=4VL&W0n zdd%~zKJtMVf;jeMX|>@OOzxBEE@$>M!_)R-U(PDO?wpY0PUxbd@lFSGsO6#Mp=;k~ z^$IfB`ZRjyv!2P03W4Obi!gP9GB~OUSdmP4MhXx9Vz%rnLe8GZV*zA6F1?p40_L&R z*MOQG1Q`8@?{#OFE!uignWq9x(P_F6WFFHHUaGn%N)HW{;5m6L;4vRnCU`^%ap)rGLLmyeO##!qq?AwcTDVwp!~Id7iFoxMoMJLYwU%|_FV#P_6jjX-%R zNR-m5NxpsLB+Pq(`z&8mc3#k$#yn*Y_u4eO2#-6fm^tGyE<(U&EzutL+)E|Pddkf$ z<1wGP3t?NjuV99$h!uYuH$qT*K!tyU4Zb|&+Mm>Vn$-*TXD830UNKA;AAdC~{V=Y* zlYU8~Hzlbj;}ys|xI_9PeC9!V>IOCQz$MQJugei0M%J9f*AeBfLXbPsMN#4|^5AIF z%>g2wQzmSv7{HQIU4Z0F(Tx%SR@8U1>tK0g{v2ImBOXHuw3W;=wj4u>M>MW7%i#hL zs}!ixzZqeY_U^u6bv@Mjfe%<$VuI0aXw>%9+*t1|*hhxl=NYDUE~u->d270{#E}WC z9&_6J>d`;RX+BK!WL7U_yS{HTS6dn{b6mI$vu`tvymh9{F0W&CN3>RsT~n0JFq|=P;5p+qY>9F2g>}z3yF> zrxdHP{%XJJj`01hI49RMa|r!|_nL24xS!7M@AmXI;liK)oW>M+4+GG;^~{83U;q`0 zq{ck9YxEw?X(LQkHRwIG7zDgJ+WQ|6+B#bYOy6B;@pH#gW}0~Qd7I3qRW+2= zlOEZO?KZP#i(#+LEpF^fkYWy_)L*tgA>)MJ$Jh_s%+Jerli9Sq>^-N2KEqy)6= zx(;=?7l4$B$u%id_pXz1x13g2mA^?CS@7`gd7rPjri!$+`D{Igp*rq~XbYJFb-mGdCs~=kr5?71qmtsE{P#d*8EBrmQPiH3(5lymlpQ@6G-q za=f)tk+yU6*{Q@_7DZI>x`C*w*{|ET>!wjqxQ##cVmporK8@hU%s1y@V)FSr?Xl>v zL2Z;RX8QWyegY@8L8&$-Bj@QD`HaKv_d0d%5qxV1W%lFzO?@X*`2+v$iIHmm)tu&u zLa%t8c|vrnzLG9`i6W#l+T~YxVexMHw(Iz6CT{SdSk9LvxVy9-D2MIsCS`D~dtF&# z^I7&Uus{YW?&C+u3Pw#uAYrP)leRBRR}-19)xL5+uhCN9o|)RsSVna?H@|Dai<2Igj;^&m*v*Zn=xbyvOc9ya`xzt=@a#Wu=;W|TdXQ# z+zxoOJoLGasJ(97jr`u}*QLK&wRT-GUW2UNrIHD_qzosqF4kp}{v`E3pUkyg@PjEK zx<$FS95MIb*Xm4m&|Iyy`TJbezFOtptYbRiWx8)-)j{W723?M?zWI5p)^^LSubY>* zOOR_X$Cw-^lHqt6f3})4F7NF;M^@SEqMNif;cz11@pfMKK{;6vW_dLCF5P$z2PHYc z64v6v-R&HJOCxHlg}<-;x4_3sz|1AgVZwJVmwhY?Ia2|*eP`kFG(s-R5~i8JCsDWZ zztq|hWip~8P|=-|XwmQ_!J#m=QmPEr(MEZ`T(SN4^qLL4?k$MJExa&1aIv$*J%-FB zzKZ&G-svRf(fIsGF{#y_4?j;fT4w|yfvCdxQe@B>xE_%o#0OLgV2MJQpPw+W(Dc^* zXNaNP%zw)MTPX}kfEfDLQRqF`AIpNFHZ-_Qu$`v-Gn4@-Lrl*|pYa1#8JQW$X&9D&WztSKZg}c_T{h-HsFJ;R zC7LkyGWV35JjVs*(+?Qom;!6UeiZj*ll1E-t-KdAwakKF?y|&33B3&OwH^`zeiH=J zWm`L3AlI|*ZQ{0dTV>b9^gP^48gk|{3ujxa%sJ=nkuH3|Ja-mW#BcSW$`toz_g63z z+F%%Av={uiL_h+k#MZYeDx_K$8poh?4{{3>EQRxeCC6N|zuCRxCjeESiHgoQi6gfE ztdn~9v3MoPj7ebhJwtR%U9%|X$+=*jGx7K2!a`(|SVn$>Iy}rbrIN?u;qLt;eph(~ z9E0hf!22>e4;iHl<2T(*z2JSk6RzD?<~JV;$N!lgPU|9918!tHC=b zT%UaRVs1JD_=>FtEJ)J3zn3AK;c(HG?28@U9+DaGapLgfKpH?_RQ?58)0{U3>yFlZ zeJ?^c;IVUBPF5?y0E%*{;j>l|J6G}pfRau|EWpp+wHnqE-71Lbdf21^O|QAGkVMX& zKXxvZiQ!XY0ryxa)%?oeFq_z;wj9y<_khe$E}UuUn`;wn8{EsxwU$Gd$?CVp>HBvd zZP#^SyJq$SYR=iW_CS+TWm^L&E}ABq!mDnHxJmIMniw`z;3=o=fpUx2-y^v?s9V$%n^qE7K z(-p&@9VborzQ?T}=e**Kx_9So-Or;R>ko5VUo+JrQ>uAZ^x=6%exdGc(ZoQY{_ z619utFjZ(0S$%g0_bJ#me)<3oG0Lmz`m5NVp9#-96E=>vUn6P#-gPXgXhsh;LvH|S zsx6;MKV>Gid9-CqrcqP)Tz9KxxE+zSQ@AStnWb9&UF%4R93LOG@Y&|imiUM?WKi20 z4aUaP4*%fF;AHg9|Eaz$**-ACr=AuRANx4~Dl z!6!nQWbAG9gu`mFX?4YCUx3rl?dg(2w4m{s$s zYmkd=RSM6|<#jYTBDQf-L9bLkr+aXgi~wvG5R)71iB+p-Two#P6*Jdc2Yp|1NOALDt+gimxXinStYm5a2U zz})ohnShy1`!P9*HXz^^Mqo06jZA3wTuM{f>9%Eex??-jkzUP@4f1>BGGtnoYsyRb z4i9aT2j8%;!go~$e=QKypD)L-PLVMSph`_Wk$rMG%44!vj;&?=XY9K5TTsleq0>3S z(m9DmkMm-siqeLq4E8EfYSrP2h$NMbraRZbWPeP-)yP)fd*!{GkK)gnwVqoFs>|Zk z->`V_;wWZ*SZOiM-h>(2&Fy3g5!5T(SL85*)-&< zYdaJJ^i6hhZ~n5_1dnLx^>P(i*R)MU)|nTwa{3b)N-<@*(bj)$;czUgi*d*z3d`iZ zSJq1^<7e-fvX`{!sI959KPKU2l{^k}l;?DlhFHg)hAS6ZlggkiF)8TL`bPYV<+W*f z?4qo-&hb`!j6tWzCTl-ykUI*4DZBP3E)ON+(Xgi3mhX#vq5u&duN+rhv;!(A}~ zz6f=htRQ(PGZF4=>HBlhUy$K~*1FyImF-rNJi3wnV4VFb&WZbxIJz$Svwk>RVf4m! zh4hnk^IL~+?v>=q^U>9X!%iq~ql)_yakdU|roOPnEl5Az_I=o!`bh9A_JbM@yIxGt zttf`$zS>ft>xSY-Hjt20D+p!*8yDm^?aJGk_j6VOW=CoVnFyR%?o!=%p*tIsl5k_y zQU5Lojn%%VNPG6Cy=c7rbY9@d!R-^K!n8o(YN(hL7Kk#9fUFe`R-K%s##V;`?K-mO zVb)yF?$UTjJ7SYA$LCt-S4my=$7HyP!|A<}foI}enf*!Rgt85M1_i(3a@Ph&)ey^4 z>*rdUtI~NMjdQaZe)MvW^M; z$wj&}k0Pth=?bFvb~%?*{2WMH61w7vGqbkf)i{53su_s%<+n_<*hSI;*z4`!Y#=zZ)v4?Gad4ly{X1sFyZga_bDm)7BY#|<%`0|D0xl~z z{mG^t_h6B#){YYsl%-?oaP-4tBUq=|B}}=$c?3EnNWo=@JSe#37i`f56P&C9z(w7u zLl>PJH|i-;8)$tyo*fp}sB_jbX*8VogQ}gQGO+(Z{Rk#Eed7G>bGN58%22;fOmDEh z!P;`Awdu&g<8Jpsso%uTu6?o5v7U(hA0()HKYu51#?mG>qk$qJ&coN@%Ane@l-G53 zWAQH^WU<%$DNs8Q@)iqnl7n6MPjN~rA4v%#AR()ayE@ok-)!W4kqAavlJV#44-wj` zahLsxoX&fhKY&}#Md^Qb*>>kU!cQxFIXf=1R(&_p6oP7Q+<1uOSLtX~U;AX|yPt7$ zYY9mjO-rNoe(~6c?%pcQq(NF3U(CLl;r)biT+yf9_flB%N&UqB@a_bbqXp zE{Io+l<|FOR^h*?M;muge->`3UVG(cKouDY2}+@l854Yk91$sLjiuYkxNZ~YvKkE7 zd+T6jAkFx$r5C0EP5*FeHS=%Uz}lBcq2u0IJH}k$6hs(d9_y8VQCoRlYuZhMB*JPu z(CxNT2bt#_%lolN4V)rh#0PFm*LY`2W8Ji2h5EiP;R^E6#eI}O3GRqCuh#D|zQ$&zLR=fzGC1PH&mEGuyC_0r2}r;d9nVxHRgy)!6d;hG~$2&qGU=c zJWd%Ho#22B6wr5lp|M$lYn_$v){&d5T)4=?^{F@OAxycCrBCm&yonrZ*ta8JJ8fCm z^s2{>mf6HSFkPO)+V+XP^zIf1moZlbJvMztUtgYV7o<#W{|`}T{nmsZzWdP~ zN;d*BkPhh-0TF2gX_OX5h%_UWknV19AYG#eh;&NB=om3ddgR&Xd%ov7|G=*OuyYZ{tVG4_U)Av zp>fGVh$%>@3AyUNiw(&}oD_g{LIGT6oBKpyx_KD8N(Z<=GxBZi91WG>VN@B2-9&DW zl>GUnazUgYJ-g_@6phE}bFi_+$dp*6z=!D^H$i__Dgon{QCim^D;gEXF(x{3V~c{U zq(7RxE!W>piW*?^QT`jCz2V`=3%-qLit!%0&Dpj2&2@}rmjo2X2gIao#c9b2dQXlYLo1VWI;6^Dk0i1t0NrZ!Fkp zQ;_h+kX2?Q!kC6KC3pI}=(!i7-Zoe`UOWW#a;2;5XF@IBpMS0=6K=umLGpIbEV`=) zRL_DqZLnJG{<*q>!e!Q_6}U#Z1k`eADKnvU>y*>tu1nuieQpX@#kRT`mp{uF-pybl z=hVrA4mU|=%0d95@zygB`7$Jug>drSzZl0(2Dz-X#8c`|SHD~6>=a+gk)Ur$oU!EX z0qEfA>#jg7NtslEw~9KEn zvWN8f`dg+hx5Oy7%Qd%x=G+dnikJm{5e21KQ|VZaA7TC8+*iTS)9Wve^ICb+V)#ai zOUKLOo-|u(k5@MtS4lXo56|3V7SwS;Fhpx6{~79%hac6$b)Veehu&y?gE8NvjU)lC z)>qyIzqH-zc2exfB!n3Eqrhf5pM$nQl-{lNN;WC z1`8KE3@Ui0Ne8EzToMQcmo-qJADEbNzv9l`xFXCHL zo}<@!<(x0*es`K<+g$@}GI2i5ZfDnca}oexEN}jn|LmRtdCJmxU(Vx_acn9FLh+9q z1#Pl)W1BX!Y7!e(nSTj1et*TjLD}TCX-jY}m}o3uosXPLtK{qA^Bh&4-A$!F%>Bi0 zZo-3+VW;GXu|8hFS#;%FB6^%FnR}tcf;&g@gSpWl`)dD8>WsQYfOo`;V|SBp!(X1& zJ4mE8SWkpydEhJpdk(|v`}2Z@J&}J9372@!X0(0KEA+3>=V-xY7np#wiVGa6Y7E>~ z@1#KG;B`KlC;6cK$JQi@Hcnc>w^d;>%PjiLnQdPSc!Y)g?mtiU2Ryw+5k`3Yy^oc+ z{WE)2(bz6CHzCcu&*z9^xRmF-?>Fn0|D^k=|L*hU z(f&%`G1cJFEGT`*GOHb{{968y|I&C@I|SNI^l8TeS8$vyTymb&aLSnwPfWy{dU3J$bO~BSoPl_UobrkvMrZIta9_OXv?kM}AzAN)z_Foo6Dj$O?>oD<{ zZt7xT!+zh*?~pj~lXeNiy;Hp)mgD~m3Z6}X2;ki8G&&kxs#!rG z0$Wh&N*gd^9~x-SntCpXVgT zAHPx(8Kknp$K{D)q^FDgt^Z_QI@w*E3^n+a5=-~=$IGo$nZhW*zo>&`5EJHS4>vkz zY(s95Dwt7on9my*ZBwxAYi1qODJIs$eRZH-k#Uq`^m=P$wG;W@c(vG%4J?N`=Hx;4 zJI)m@U*I3Y0p%6GJ`;GwhkR8IAa;)e0iou*0R0BgZqx+!;^)BByw6~vT~##@7R4L) z>-@vht6t+gn$|asuY#(KHdX#j!0_GO>9nli#aGIGF4=CPD9DxaHid-CCN>4r=12JS z%_nWme>eN-0G1p79$V9%dG(_xv~uDOqL^(WL%oKF0PuBO)4$VTxW(#9Ib+KG-Hm1+ zb@nOOJb;pU6IrYS-Zm4!Ra^_&i+e@3*ZKYt46@|n7SA+Qz}`sO@bx7b3Sce+qXb(0 z*)qcC#4k)-vb=p>q1-EnO?rFNz}__HO5rFP4u9>{b4hiFSF>()WLCpz7jGbIu?&4D zzjgf>bMwPvWrz5SKq3BxzvVATtj81rKCQfNnWmrHdoob(=8svT@Uu0wYu4~#YlDKj zj`^mJN50|P^o#3eLd+UM`dUjW+IrIAI{$BOa3Te58E;p*Q*57n3v~~r0A(h=xayS9 zfMlqVI4=>0+Zo`lH0jKdN9x%H$=5Z7W9<%YABpqYV9akiB6f{Gy^6=HrRJtc-P}`G z4T{}^uRNHVWjc!9=Li}E{932~OJI}Ta;DV*I<3@dm=(LYNI$rN{-Wp`)^av6xGK-W zq}aS=)6ATL#F=a!%$Om!7KPHf?5KP_^cZChjZ05{75ZZWEwaH>t`j}v#UVd1I}|X^ zRp(A>>3j-J{!RcnFIBVoAU{`sWXFFOnNJ;sTXzH~_nErnz&4N>XP@RtV^8Q9J;a^n zt&x4)nG#PcJuNjnjWpYP9mq1OLaYhbcCW!%r0J^RQ01rh)q3OUhIZvG&tD~f3zx4u z6gz|T9pkSCc>D`N#gqeWm=uVe4GdmGj2VVL?}kfEmpu!(PViD4Mv` zx7l&*WGc+sX31rU&ai1*o&H#+@gOmp-bgLRcp4AS$ju#X(`9;XV9PRoaUJ=GRj02h z>5NSAiWBi&XjRG%^;;3nM2Q_`33C-oJobdfWnr;jOiivf`~JP_X@bpued2R6Q_cLt2s zcEw6HmZSsN(>H7+pQQwLV4kbqlwbx|jSV=2b`Zj*=!7+lCo)x6ub%KA{SSFM8F-rH zPjasorpof}ZfF>8IBw|bDu^IIV-cRSEKJMxP|z~nVpuck`f4|5&ic^C`6y(~D0Z{J zLS<0|xp>gpeEaTB-)Y=miTG{#gJ%?Go2TYmKv1i{H{w8zVX4~WTGWL9EIZ=K zGeL?vyV30V15+wnPH_nkE5!PElmjj#B9Imw6=hg{1>+Ty_Jgq_X(~6&z^iSP6SXw+ zPMmO|HmJ;eZk_5D@p_kSDMFmW5&6-^q_#exQKD~l^6iezQG>w*YKml_dT*HCE_)ww#p6OY?OT>)g?U+a#=aHACWYTcmFNX(3; zCC#F`rdY+kXfmlZD|Y~?GQy)T$D3&Z^yLd_-?M->irj9;%ja_Z4&#oVT1OqhPZd{K z_jvG!$R$8=ZwusH-*X(imowme{ZZdHptg!DzVH2OF08`l(cf3J$<UPL~Bx3%(PesxP|h}@+1YC80zFirz_ zIbd2Jj<3<(11Xn{VJs0Z5C|!kQm~#ebc>lb+_$_6!PUW*a{wY^R^?OCrQeIY8T4~_1YJVg%RdIh0N*#ZngQsr>{S~ zvl#izkfmzm|B86dK1%{NFX;Sfv2TYW;nD-i6Endt_e?_olsENnah8Vp$+_y{)BHHm z={ZM+#a=4QvU2I_@BSffO5kn3;hhdxX;$l9_MaZVNUb2?#Rrf=mUut#HSgQ?^+ni3 zIo$vEkeu${AORJumN!(zdARPP&69b1ar_$BIa7Re7CzV5415oJ7v0T-2>a96B%s7$ z{xUfFl7CX{Rjj4|7d$ZYH}iPt}}bk53<)ajGq&MP`SVXa&lTP7KU=)Qzp6?J9khxtA(6 zma{b~b8+dTV`W)uU)3~=vZ&b43DE!nASkNKa_Szj+wyIUs~`b^NhKVBm3%P~Vhf51GuJX_vh=4p1K33b~YTi>Bb z9-7=|E#CzmaRA7=rkFn1%y$dDt+Jl>h8iE77QQvadav|-hV^5oaekNvT3_2!xZp1}Y-5t^}i58|sU^On`;z<1r{RIYL| z7B~UAUy?mz++VvG#6=7bD~oEu9DJ<7d6$(@sw;j??SVf1{iCJWf3&YBdnpjB8uF01 z?^Qnkz77lMDwnpZn7dey44*P^T%iEJd(n|)G!I=xO^Ux!J`vjbg*{Tc9% zeXn|Krx2Bh1-smclE*`@6-UoV_T#9hPP>KJOsCymf9%7={5)AGWoyRZcfxl&th8Mz z#)3g(i?TJjBRAEUg`W~$+RnzHR+h7##aWKZ)bu+Uu=E$C2k8^e1VD5PTRk%|-Oh}w z$9E2kpCC=yH_qivr)W06zMJjDkASkZTHxGk1#9N%E@}SgtrR+A@Y}Ea9Y627wb~QY zlxIomu`_Mp_G0rEt?JO}SDXf6PIfSWWUcR>iQ_`abh5tTwlvt1Z7p(OUsBLP>k^;1 zzo*-5KS;IKT!w;pJ?}5}XVg9KlP;EQpJ`sTaVg69ax0kCdmyil?>c(Q_UunigpuL* z%%mM%jlEQk#}jWKDmwXo=$*6%cOf!;qLO~|l%jWiOAqa!77uH#4^y9x{^Um3u+Kfn zyJ!sZxQ@{T1lQ`4IGGD~v~;cm!}#7X8_~jtBp{Etj3v>{M$-?7j#882+4zc%t3(H? zPu>o)HudL(BGt|>2pcjmqh+P#=+sZO!aidOQlt8%)t>zPm&YK-dyQ3C#T0n?;!0?| z7_jp)>GpCN;C8Fc6A@>IO_VAS4V2KBv0*jF?MopBt-9t2zoC%$jYB-?`=F~-ZqBv0@K*v^;l;gzL;df~)ibjd0Ru|pCui|_ z3~p3EN$)9nt3LUcW6;+{A7Jf-l_sXYw-{p6Fop*?){?|q3Q~d?h+|OWQrP&a$hV7onl>Op+)nZ(+ra`d4JPkL4F*fP=c~Kv19tw>_ zMun&!LCXlZ%0PPRn@useA#XlseFE2F%O%Xxd?(|e%V`5CF`4W|J;|k>6Jy$@U^M&wlzi1XjCyIlandL{4(vv@aeaw7d)`TBb5kwm1^k~*_Rpl$HRd}!6_O4?N2{ss(^hc8KgIsxT= zq1D{nx~+eOful0#A_{Lh{>-XsLpi082zz+uYHxQ($Z}$xXa0+J6F$@*l03x7Z$XSm zv=n;gFvdoLvSd}6NGnNE$^Im;BQ1FRmMCb57iG?8oN1 z(ILZFwX$``&+SMBnqfVQ$r`SAIh1V8Vhds)nHyYUp#|qMU?D@ew^iJwMiTIqX(NbN z*7qZr%>-!eFMMf=ep0micb0%wGx`CJhvJ~X-?K)N1kQ@lm(B*X$pFBv(a1}u=&Psr zw+``Fhm5?}m?v^aZ_=|F$ z>2mJ}ISG%J?5^Yn!aFg4ccJ2Bq1_(Htv?|)_3aH@b?Y8RSNI_@3DICa&DXu_89c(a zPk99dGF#MXD460BVI~@#N_ig0ux~#@Urjx)cbK9^;@_{vF$yM)4R%lQL?Qa)?i6jV zE%N^X@x(LGBlCWpMr1B+bllue#NYYy=NkYZ`{k@!O`=8?RLsP5!z=B1{y<+$42qO2 zN@?Rr&HZ7?;cRGlTm=@M*WN@8SeuTtLY(hWm>uh7i8%|IY;D=m#AhVr_)+0czp4?S z`S}xWXStv1UcYQ7S!5?!U)65;EtXg5a9_Ol-@2%y{J;~y{9$&}?#y?O%a0%ILi zD86GQ1KF1>EM)f`W^+t+=AGu&tlvfZZ8WAvkrCK0QPN4rLQR$BctJkkfU&!xA`9+s zvtcAz+Z^Y$1LB5NV;Mv=W6A-@x$x#29UA0ypu?=`6T295+|^ooQ-~Ie_%Pel1)Ea} z%Cl&sjqvPgJHqtUNoHvHv1n2f-e~!%&sessNJ-wexxo&+(QYNLOe=b zfSie#%baS0J5A-%lLzfJ+?|UU1~H=yNsT7g`U4d~z@^p)aYF@?7mnk`S6-sWY=(hg z;mYNxEt3+oK9Y?29ssaHeIRFb?!X2!sy%;38nv55Rl!VH@e=@;H~MpEB%)Q%vPd|6 zrCEPSz{Tw_-uhm~xJ+rO$)w3Cu3}w(tjA6NSHQ3m#@4G#udl_mr_49x1GLjZ>#-P4 zfH*jr zoaG|4eH1#`gjC$r%#~V975ix6@kWyp*LBhh1pP592U@P2X^+|{+#_)6^0xACl8A9k zooW0}l`rTzSu=J#LsEqP^EAU{P=9kEek0aeOg5KX(ZOF221M&ztZJKE?`W>;&0oF{ z%>8FrBOFRda+=tnrukS5)H*5qPuvgQpv1R6QV{DGXFy2{2tq5LYl5zOW#N=7e#s$= zT0T+2j-*Ud@i#HlRgy)!XK)WUQ7ExGQ3{LCj?`}>&Q}}s*FPeT@l}NPcF<>mB+99j(b^U1bQcON(!QeKCMU%o<8X=tuj85Is_sR!@H8#~w|y>2n?U zyt*S+mnPFdoK}_m5s0%_n#?>W_A5JBPZE@5wwk)A!l`7Rs=pec%PXoOha+Uqu=;P@ zC5r=(2E>q=BDbb_zDD!ngu8iV8l>l*SQbZU^_}siA~vfT`uE|5_2{}kWrN1zyknVw zXSx>0#t&BRuc3k0W8Cj8h_4gIX>Px3O^h4zuu^o1>%lq0w6NXnB>gcTdgdeHfPX&T zzhs`FuFo7LE_G4Z?#f@ZpPk}c*Z6`xj-~?E$Bjl$2u693gpW4e^sT6i(VNt(HRF+d zHuCH=CP@3zh4M3%OSR3YMX^b;f-E@A*>t$*xfLcG$Dr0Z`guc9cCC4`a``8O95@)3 zML8r_gg0532BgVCCBUn`m@MEyNU+;k3~`3O52k;YPN-UZ_$1$-6d9*X zDKkBryarUG0{qV)h0(=#QuJXUEw>DfEUTW`Lypo^^y9mAamYuOhbk3) z5jLOZE}CP~o!o!lVRBEY&~F`}pI<&V2mGw^Nf^>nN4EJpMe!W2X=hb_FT&Zl<-n--dg2K&?LTC8%d~xG(y-f`UqHy?-UR;S zo3aeZr8vL}j~UHsdRg50odV?Ox2=ZKe%Q5NUZ=7X3$f+p=Z|n-FQiMQV8`R=3i`da zmcLNrR=*IqCgzr(CtMACDvOaVceSD_XHSi&&amsecs-Z%xT!g@kvuFSdvHfq3Ep|G zsiksRo^MKcjaw^`ecRdc{FjoiF}*l=sROYN<4LqAUv1m&TkhWu?4Mmm^aGFLI38Ey zz&-8$e1Toht~T2*VtRTlQP{1ECs$fRuj1$-F@;Ac>_~l}^ZZ=(Vq9o!hDJrj1PA!NK^S%E6U^NQW3ot(V zpvT1M;e{5W9F>xy?SlH4fzI`W3lgc1PubkvMGTJBeJ$=+@+es&7^PZ%?}-47zo^Xk zx4PMA;hbD4FYJGXs%5?6Glf(w7`<$>8(k{X)Lz@#T%`QM=f8#b=@%xTL1858PLHJP z?=P}oCJLc&`4%WMOamPN@hk{cBqqX=s}EVLpThIWmk6Nff|U${b!Ttw9S;KM4EApYn+V zU)pN+A}NA8&366iJ*>Xq`dP@z*h=;gCMIe(63+;O*S5wbe# z-js$H{hy5y)`;JtCL}}k0k|7TWoAPE;lS>X-8YWQV#zWIJTLy+>(Rd#LBhjp8fNkc z;Dv&;OdILrc4~GmJhS8W>ig-_H~WQRBl%fjOSGTaAA9h@%GkNHmIHjIBCJl@A8m3? z*Bu_%g2eEn6aDtp>C+znRlZ=`I+PyKeR`ZyAjW{LFpTf2AyyYB5!O3xc=i{qv2u9! z4al{@_%3=EKj}`ubc$4WK_u*S$>+g~e}+0jCL6Y)Ws>Gzzd#$eZ11>S6^aAScPjGn z-invtS&Es6oVT;H(6TK@V?95bSQVF0O9CBc?wj=wCiOHi15_a zB_Z6?gQmFd=97qjNPvdfD`w}N;B(mgu>Y(6z0d8OeALw2>!YUx-YouFJ`(pD&jhrH z`eXbT`F+^No4bvu=?H5`>$y+Aof0&`jE@_5yuV$PFw(77z1s*>Hy(P0&@E4b}W?*K&2>Dn*c5i9AyJ;#b zuFFc6XMgugx>N9y-Q9qqj=91_jwqY1gx=@++l7`jd#}%tx^LEWze>WDw_hjkz;}L#sBh*kWsecI#OyX+b z+LJ|{A2JDIsyjx~g~t@7MIkdv!2!|*HFQI53_aL@p#JBw_3vs%l9M(j zN)h!Z2wQ|UIS{a!iK2K2*R0DHv^!jqpRwRP>{YS|OXDGdJP%9T z;-e;KG|#!FUYgPzgy#&r8%=U&e4fASC0D( z5g>_T^34;m$g{^(+MUOY3=zbB<1qOB^PA`QQ{T}X%E<3m|AclCf2;gD1xj*o9|x>h zpr;3huybjW-L-Flt5|Uvl5R`j2l&4)`}47G1h@udm5P^iHA1DPm?d2 z*t%D!zsZjd-__EG;zMTcZGFV$_%Q(4tnm;nbwH3DB3$BG|EQ5oqg|@3A{{!fvz`ge zLyH^CFWx(#LGD`MM)G{}YY=zOeNH0C#NQ-NMgpN>l|yMG=tx&Z93vaQ_?C?d$?RJ~oUTJdMyfi_@KQe$o&e))U8G8u5*&LaQPX|h>K8P~)yF^iBbDq;X4irNZLOok;Zpae3iH)MAW}W)bzBTY$?hm zqIh$-kdEp9Hm2m5+Dm|3DUmT!P3X^I#_r0IRx-6=UW27T36R5g2a;`XX`XiU zAgveMLr z&9mMXk5n(0_W$`4Ao;v9;P=JIcM-NC)26U#$InRgJDJGJXiwB>#mi(w@&Tc55~f5y zIxq9ydk66v+ij%9`(K5GW~1jT`%f4e?aj*BS7>VWZf@oGd*aS5mN9Q+1%{VkqW3D{ z-P%cUi=)}H&i*fnt-FpQ3$gmBnf6Iyv&S)5_-F^iK7{CTGKB(h6)QjY&cF=yGXs5} zT5Tf6+Kxr0^jtE;%>yMv#8I+$yWzfUfFJ>$&|Or<6m=8+r0lgIe{6Gh;fOPG!F@^= zxwQ~l9F@OCpWS++IC*?idutwuM7$*Mq5+D>JmfYpyRCj^HVw2~#X@W{aQ@Cqk9k-c z?xd5WY2hY$H(&b?ow+ zx6^0kB39JY!AzmuOrc3~!vhfQ$kfQ55I2I1)I zmR>;xEkMB#pLG;uw8E?Ix#sq9O8zVC_csVViyya3*JH3`kJIS{=(!OIt{_)8;9Y?w zz!1H2_UeXWSSD>(mx+9>KOm^Pl>QW%eWq#w(Y&poLaS?~4Z^PNt)gCk_x0|{uemGv zXWH&4X`h5&*D`rzd>7c^pv4P*eZz!*6Iw6t@dqU@uqH?=ac5DUjd%96GH&Y0(l|+w zIQXU+JJDnxPG7qkYW)KKYL>K|$uIk0G`YoYl(A{PMBxA(T!bC&%Z5w%Nkx9w%1*!U3k%s5tG{)A);YjaSOi|v9H@VU55!@xhG!>#)j67JkDILAtLCz%s|(>!A4 z@YZ;xOm}P6i+oe|1%Lc5Eoai3pNZ+8u-~A55KX;KENaPZn5*asPfhq>!3}>={?fF} z#q0J{oi5{f@1?ZArTu6i6g>QyfpIkIvey{?8ifruHlJpljN9^(_g0a({H&6@xC%D6 zx(zztJBNL6$(m()1MdNz&WP_vTcN&@&pdOK5Todip-dkB+uq|JqC8)mbm{tlljv>y z%PQU9tNxVWy1;KT>-oluJFHG3aqQwTgGe_{t-e<}as_uPgH$K3b5CNw&@+vK!{46j z;P-nIojInfzOaZsjqI9W@uy1alB8^)I#dx?R`3z z1Ku1nN?wYt==Vapo}{&44s1}ITzcYG?S0dv#a=5LZ-H(Q1cu?xdcHfJXwlNyOV)fN zKZ)W11!yGY(f4W4c>K21RA2owre|>&HNZAHL{YiVv`F&{xnIy_;6}WtnG({U$sGH+w>h|}i-9^VQh`ZeC$&+{T>1 zsS6VyiSehepSu>u^alj2|H_f3p+QIac=O(|s4+WW=OC!d$@9&okJD1gQ-l|r#|&B)O46fj{n5x7D#{`S^P(vUrMdQ1>Ymb;X`hoQ_080u z7lUti0ybA3cPm*0k7<`^AHJe)>QKn)2j}bTE0uo(NiZYRv#p%upB7BE@zM{A!Kx!l zJs#o6j1=XwCX3sSfd{Z|$MWjtC3lrM6*EV7?G26?I&>MF4}F>McXa3Qx1?J1Zbd-e zi5&726VAoj#3?!BnCWchrn}5{lR~5hF*sWG8eo+04);OMBN5jof0HOB|K8O0%YU|+ zuMRvUa`sHPm2D%N2N>V5$BLn;y2*a1soyhNK&u#@Q1k5yiQ|49>ZzTUwuP1RQkFxi zrF8#ggx=|!`n;xX={^EK@wqCqTE+ZD-8U%?S~`|r?^Wv2)EmAgT8WLsT4@<@xj$79 z?D}Y=XL%3k;1j4BQ#_$$#4QKV`jkPXCM%%;fM@4|w0=Glvj1r19Y4cav@Ftj;mt+4 zT)mXa>i#d~KeI}y!_qc-$8cz};!JY~*N~gdE_xf%zC>>=eK97)o8x%dk9M!cKg#iA z2E>cNY|P>>x(TJ!F))RSTwYB4L{lAmR>Ou)c+1+~l#lCrRxP9CJTM=t>`CP+iVsk6FN;NlgdbC~Af9Cf;j2!B1Xc-e zy5NgaU@K();V-lrA;WGKlRCsflbryPL+310BGC;~eCDdIGHsrHpvo+eeH#JaO^|)11lim=I6OG8e5nVql>ar15NSCb(b+#$+oV>-N|jlb#SPb zHHk;SOP3O7I!~b*U3hhvEuvDJ_NW+{cAZ>SR+7Cn8Z~zVk?vQC z*VqL{@oHHZC93pQCji6Qs7(r9eQGmW7u?mE(-@bol8gNvJ%;Q8k_O((6)@Cg}QtphVLM3xAcpmz!s8yjA*CF<@HxPV!X4rtm@+e zeGC@O!B|6!HO^t_PP1)R*>=`eK~mi!_Z}uII5IN7yod)QH6I4wi|oXz?<;g>TKr;L zQEDUfO~VX*dWXN9{Zd@q8?RFcn$h(2-Pd|*^nbpyZs)y?m1y|0l?if)15jy=qtn{p zj}Z$H+!jz@_lfDkjZu*rT>}+!4mW9@J(~OBKH1fkFEdpidSAPxyZDH^Bxz%>7DCTE zsOF-s9#xm;y?n4xH+6Ua4{xM&t^8ziBO3*D2~cJ!cch@a9)R{B!uyU1JNKY zepSbfAU_aHGNiUdn6@=Nx$xfgbJ;9J&+w(p=!@|=hSPww6c@T<@Y0eD)p&!b^NqpL zV;o%G$&+MyXM+9A9RZA^&XcCx;Wd@gfk-gk0sQI|mU?og0&7^P9`* z78rIops}-~yf}H=73Q~kZ!Y5Zul>KpuxIrG@sG^kbnBD>QEu^&{V?siTxZiZa(@A! zjfy%$j4bGp>@8kked*ub?Hl0EF|sM}8i~@Af=t)DO!AWBCw0Xiwfg6FlSrKLZ!Otk1swEPdR4Q3pOKj@ z^&k_EJ1jk-XzPjb&#>~DBRRRqh@u(K7&b(-2EToec##hPOU~C<+)CHP73FVoj`o>` zy)I&^7r7izAI@)=xFz7LPH~KIByD5&Ruu7!?Gg5(r~$Fs9_6N37N-&79zn37Pa-#?{u;KrNJA(fU;h}y1G)%|KP z4rn%g75eNv`3wcwOAle5HpDo(j)?oy(Q3?LiT;s1EbCEiTU3EJMfcW^z_`vo-Raoc z!iz6@Gka8XVFMvjhnrvLMsT9?LC&6XPbhdf$npjj#G->am}A}f0fF|k;*%2m7EY;J z%`$xT0)+hcBS2mumqPiWsY!(42l4w-4`y@zyn&vn#G6k8Jyr<&z<^N^J8u3(4@?-X zQ-do@bQV|MM1${l*j7<|HHh9u_PW`&2tB6G{zanGG(KCAb=TN7if6VMQmto>SQg3A z^;-nH-=lRD0|+_j2J{sHr&Bd)dN=+;n$)}04h7pYjoKgomEZMK!-NF) zh)@E!R$N1`ARYyx^rHJRJE7jk?C+|>)+W;DZ@HOywY+lue4gkI1N_NbFdeTuWz^X_ z`jmWlibKcDk6?v6Z|%O-qsJCPJI2Es#lGKC-+vg1ZmpA))jIdThqW3|?&9Kz0urME z(xk1yN(LF|5z0$g8GA)L>h|k$vC*UFS3qTk6roTQ?~nS&yWj0b=H|(P>IQvr<#Tb2 zz9a4Zl1%BM^8aQj5S8UL8;ORU+r?e7S$(6cITg}o%qB2fx%(R$_kiVlYl$KExA~Z3 z?C7;(-|E2QD)%07Qt8#7J1Z?H$ch1w`$WCYL6p;GMB$TW@>t2Z4~iY-w>SxvQH|G8X@8RM)_V2=vkYaMomg z8LsDI@p_@W=6!aTxRmDF+Ft+xv<`cl69;~b^jMpW3Wz^_yAON=j8B?C4$(j zSUg>5o+8J_nx7_*;36T*ep5B*kc<6Qn@*mu<8};pro57*1l~opTJJeL=-27iV;lNT zMb>`G#QJEB<;Kul713^!FqX=GLvEFG8d6@-uVzu;vL3OG365AJ=K&uPBWKH6<8-?$ zcy{>ix3B7EA~&@Acvk5CteSkS5Y1d`TQ*j?*e*~|g6^LYe8_50 z9XA&?=^8yUs<-Q5))vnv1Wb_psy-5ChmuWJC-ucR@!zP@tb3&U-2|1u(#2|z7l~Pqo#A4f!Tu@?a-F^xi7l*(lJSOT3fZys#-tbn zdXMI6p{8Q6@+!wdt3pR8VRTeNch}G0c4H$v_qjz0eZ@9fn`W`V&saNn81^Mju3p1C z89hTa;r4izn_(SH6E9W{yQ+uk|1-q@??BY2#OJE9J%)kB$*Zh#DmgT&SOK|u!Hxq= zgjcko!%Eq%zKy@6&-OW*)FGEC)ws(esXj(N}Z-eQD9|ZIphrR&iVYFm<$JKnn z*959VyPBrho_~EkICv#7;IX1{kmO*6#UXlfslLZv?1M%0;(|*qVEHmGPan8 z)n!&I1`>RpUqCgkh@Fg4F{&}X>IszIZlJmB#g-F_u*zT4SqAz6N&@?x53V@uLigN6Ve#y~xDlB}KL zZ8R&O@q)m{|Lo>?ux=brfnO+QJcR}Im`YTh1CpO5e%Y)>`p@mIKNEhtFWK>@6t@vi*gSy-rV@<4wgfb`FC_W ztAuO@%OyuzoGOL=VY-!b ztFZRxqg(F#=C4MW)?=RH3brEM0M~b&zK3to3S(#;?srE$=(0{LD9S9*WYC<MKkN)~n&#gTT{a$G#4aE!|rCvLVV(Z@X1FG4>3s>!|QgcIO zxxK#)1O0Caz{l{3V)cx@?bFn*`;kMr{7$oG?^)MTtb>nEry)!4Zw-9749)3hvk2l# zyKXQsdX2w-T-fY~64=|2MAw#(-p}h^ck^&P`|NcNZS1JQnR{r^g|&_Kd)J9M5O0XR zs%FIf+xNo2$ngIi+{(c)NLOa0te;CMMHctG`Ih3!zIQ%fq&9;7OFuVT!NzmkdtO`HS;I+D ziL1Agv}0`cw%q1>7cuk;z&S%LmUpf}b;Ytx8!roZ-U zd}00z8|bUnW0H2pGEa(iEcY*5f*R%cvo(U&92#;&`g&koGP!bd#Ca1krB{KuG03MkpM_u~FKg`&kdTxGA0zPk0phqo5Vu#L;2LjPAbIO1{k76-X97|h0b z9L!b6YFXjo{gSmaNE383*_@d2R-{w-TaY{x@TAB9^$n47^@D<~VJ8nBciO1YDw9AH z{=zKhzsj_+Jh3@M^)!Wn7g!BLy3b~0y#epfAYV=et>%x&(90WnOH`mb@J{T66SI-3`8tAF|7@_E#8LO{<%qs9CNhzQ4 zx)t-{>Y`;gOlvWlszGBZJEcPom!OI!n;NR}8 z+-GVU#HgOugW{H123hv*538KOx^fd-;GTJ6V7Al}*&3b|V5i;=vi0ZC@jfVEe0`U` z;F9qR9e(2{|EvU$^|>Yz7ZG{4-M<4~j|Y{I(WYu@qIU^RvaLo}qZ^{l3vToW{ZkhK zmaF$@i^fxR5$Q7MFVB7!ptDAK%mnXe&oiUwx5lKpdg=t1vYp5>Q&=I)exzB-yM18Z z*&CD%XSK56F4{FH|ya|f{y z6YFgpYZFfhWX?aMC*@jooX}NXrWAs6Z~xxb4Pe|EU==FjORuXOg0VI*(5mN29@KF0 z__76adb{cYZEkHf{J*8_chr(NYoG)`LYeFA2AQin1v0n&Livc+7VAaT-57S2E(`tT z6bX!=e50v*0pS6^)2%JwIJ>I(x?hWU*Wk-_F3L6UzjNfgT{WEh!W|S1)eBL6QB&=H zxs)s?=Fz)idPp~rpW-1%s@r9*c2=-z$4tx)C14cJpKwAQNwIj6`#3Q-j2Ki+Xx^V^ z_I9M4mb?7t#Qd)usT}M?Sh3LPcdAm_HT<)W#AxD&N9k6vm`|KUk}abKJuy2N*sI+P zB=b>7;QAF|&zu}AH+jm|w&kvLG60Eqos&`4BXzQyo*)}*^(mi6^WSR){UFX?fG?}M z@Hb`y>|SvE!~JwiQyw7O+@iPzyciqfjXlFFg^B|7{XE_DH$&33_%D8c1_piRZq)x_ z>a3#L;G%6E+}*teS}0JUxVu}B7I&w(TW~1FU5dNAyA~}F++BjZ`^|suxZ~Ws#<)cY6sGfoN|eyKUnK6>*>tv6zCK3WT)S(1>0d5Vh}hEiL7`Gl;s2 zrETX|laZ3sbN$|yY6_GVLtI~u%>e!#fgMI= zlP0oEhfdewG%^Q()Nr_Ux|e~%&eox`x}8K>@J9sJNMrGyP-k3tL#QOPnNWD1wUwzA zy^vX!$hY6$pFq82G2%5!XUb3qqQ!K7XhIaU>{cQcwg@0+Dj{#T_O9vzFtiYfunF zJ2hR*l5Xi}+wU<-%I&NF#_s8Fk>!~18Tj`ewY%Y{)!@q}+3tPbH(&i_Id^VrNur#M z<7J%a8^8-%vF{*VdfSDxKgM3Jt0=4bbI^+@cbdVrsp)IswFU-MZbYW6FxuN=6l!`y zQBK*zZ;xnHJ8?;X<~AeP=*#~Lx5@-4?^{GJJTdawRrmarfZ_}_mh;j*3_;y?hRRB~ zRBZh;WGC7L#knR-<6XNLS_|e%bl)IwnFmn}kF}!F0_-aot+WFPpnQ5R>#H zy17^|IMZ`VfZe%biK+aY9CfwHD&;Y3o|lFJh=9)5`}3#}t_Xa5pKdN| zgdDk%FxNjvdo`y)wdyGaVCHYykCOu?G4cQa2^!F6=bq+#)PtCmJXx)wDHVq#U)Evo zD5I5@4!L^RYVH;OZA3p}yTYYNIy1>Dv#JW`XY~$gr~wN}jqiPvID{o~gF^ILdgB3( zz4JShjO{wtq4}DIIKY2uOXV7fDPYI7rs|IU5Y+nR+AsS_y#V7{=x?Sj4?j1Jz@70r z({h^Kb5o}IcXCGEos8~)rCaKnZg48WA6v8!Koh>tb2f3wsEBG$*sLk6WuRp z{Z-U@0af}<#Sfo(0Vd5oU7j5jN_V97e7QO2524U5i!}?Zn|_KFcS-W%2GonNdZ$1- zFFl0vAZP|jtQzqKC9vxZyAR1Lbp;m6twFW#HV;B->(;m@K&Ydyk%k4dMCUt~(;%l-TgZbTN;b@!;XFO|{YzS-c2CWQo zlQ>zqtF0p#2bW*v24$U-t?@q37+PAxFiT!KEIiP!kmzeSHtCUcd-?wjTnyr{_M75@ zFOU5HrzngG96%(r#E|k_*(&Ke&5+V!IBFA@xEm<~@JQYtPrj8gvuY}uTSaYHpy$jG z%ZPR{&Rj=R(27Q=6)vMPRHOU{Cn{?Em*$YJY{9SN2JzKENhoKlEfx!Vfon=Y6_$f1 zTtnA~Kx3I^ZmOf9DeOGLjQ<`n(DSkjS#M#E99?JW;_^9<)260=Rn+QFs}4*PxgfS`K@DiDD(9=c05Jk-3R?lRpPPKBjeHc-Zuj z^{x)WWSh>}2W(>oB4Z{4O%a`BW9bSY%S0c=>aXCh!lj%dQ|KBpUh4G84HVMrsZChu zvJEM*xU&10H%FRIxA1PKr_X13Id<^^tJ_72ed2^-nSc^zg2Dh*KE$~d9#mQ+m;=51 zsur*B-2-X>ecU)(vv@;Ls|m~7KPSJa3l7iUYuK?Ht`m7K|M~?fh=qDrlN)=Y`#G?| z{UI?td=BTsULyfpH#b%~rIEsYVl-rhlW1@0w4wiwe+R($m{>_>XtR$x8YCb&)A2ze z6nITkvYAtKYPYVvyly^XM{2(WL}SGqV78y~eByRu?kt{s>I764Q0fPzwc{AxV?)zp zSW?O&lae)Vs|4{chCICG!XSKXY(IHAH3Jg-CoAVl38oG% zE9z@_m9&Wto-4ZJbI}v30;N`wvIq9&Gemr(SvQu9Unl(wL-fevyx3!i{-n3bm6Tni zN5j5l46GhbSgp|x|IhSHzo{Ozqe3`aZX0^(411PM%Z3x{x42{LZ13c>f z0szG0cKAc@D!hW+C{_CHHWcqEDMShJHz(%@r_c;z!!ca=ZU~yicoI2Xpw-incCo+p zZ|(O+zcbx_oyv%39XjhPaa;)qjXw4tVCU6}d0|d{!8{Gxz1%znyw3MMcDrCg^($l)t!2fQ#t?$6I$c)+fmQlkLV8A+fKIGZ+(evmlouoZJ zl2b@WG)-F9%tBb04_8leGCz%Ty5I6%PmjOnZf%TA``17A0#o$j|M`#pTA5FRUc*>Y zllFEug}QcFdOtv2D z^^9W!0LF>6gJUk6XOc;c7Hi{;XVB~5S+44*F;SS4Z=jV=gNg^t)64>d`*EQ8c-*=1b2KW6U{+X?5Q!Z)|8 z&Iul?uxr_H?_n`X=+&$LcZ~HYDh99u0N+JeH7v{t>r)0|r}Yfgd&wo?e&dZfGg7O! zU`0X;307Tgu8;{~j()9H;W3yYwICL&e&Uzoofso_RKuiN$U&EsI8NXFE~1iqq2X+7 zT~b|O#ac%M^3knd{`_xP-*GMnsS78kiKWGXG^DWnCg`C_*6r+e<#SaR#sp94e`~!l z8?qzDzbH>2RVdP`j$LWVHlYCDBC4|^!h&9)!QO4KC*t3Ir(qm-ikLk6t{h5%$un73C^}T3qCvU;=saR7 zAhaVt4F1KmjnRqykr>RH=S~Oy1#4L$5*YE`(BvAV*`yEB9gtax+^Z}lySTk@&2UAF zo9%%Tr7mC2Ss{JcJs|}Ns;eAxK7Pvnj+vj1UCTZ*95+$}m8nvS>9&M;YSbTmUNQ*& z7=&OI9tV$rYVo|J*Pq0YlI~xk`el41v;4vNM8gBH=XyTe51g+owtt$0;wsz=_y=ap zdj%-rmoCi&4|+37Tou#m!$Gq0Xx|J3r24*U5uEtR$Zao||} zv-ughHcSnS49kP;cNjpM#8cTKm)hn`v+v|8UyBfv+1)9@HCA!A z)dV;b%dgx{JHLm5Y;Y{*+}l2Nq;}65GE?pM4Rm&!ZVn3|@4B_C_Xhi3XKHlWPGm+Q zW^30&2(P>Dp*J~RmD`c(W~I=809W&wqDmak;o>h!Iw{QKa(~d?%DX)8g8cQnef2U3 zW9~5CIs;3r0n3a$jc_qaq>FEhx%cV(p~rL;1~@|v-FHX(s2YsG6_+}FM*_{SFaSiP z&@mv@i~mxq8*2qbO=IFuw(y(jgYK@m;i*3f)dr)r@2%RAgR+1RBzV!Xf$*XVnbK~V zVr8J$*=M$w-Qg{}Nom(^dCu)TTcm~FdE*az=kd!{OnE_1613HzWXt8BMc3mGXT=N# z-In9C=dtKo$Lmq~jd%do$OPfrVd_CTol@7K`CR>d^Y51iSy+mw-#ct|F<3{bx!o(b z(kOoeufdIv<&ZRZ_)YFR1et$=-VIlN$V^|P@AJ}D>fILhwA7lPN$f<8!ZO>9^ddiG zBr|^*s3H*JYBNeWF+fk%`HPaiAK`TMQ}|!(m$}X_2B*usUof5e0D_qC7Q;xHN6_u-`!XE zcn1pXJ$tJ--g*5Ljx)m>^tykUmdi3;NiKq_EL_v;i6nRj8G=K!E6KFa5~dTA`Vxp* z^>3JF*lTMMdCcRBP4rkFss*@W=auNBFr`_R8?1E18)FSnU~6g|Dz`GdGXSuTP=hUj$3~Mix1sMw>S5 z2vu{}O|fRNhit*^9{-9o{DxP|#JJ;wNRakQ&3kw}08p;Fw4q4VLkDaQAM|6|XYMF^L zG*nZ?E6?TEJ4wYIC^K#1vfFoUDg*j;jr0v@swO8_mlEL|b#Osa+DO+KA=qA*@sU}QG%7)qYZpDbSZUUaXkVsUr6|x z3YFj|A$hu4PinRpd8iRAcm+_w*HLyN?7w20 zNxYB$j!+^!>%+T_8pL;r_*o(hx+(mId9X|!cqHNdbE5rf$_5#`6^GmMw#zBRfc+3X zcM$<~!MY^Cjsd%HgkIg0Ark|HL(+e4(^8?-wM1DkL-l%2k90Eym!I296*60PE1#L~ z{VbZ`4gg2A3P^RfTr>01>4O!rNRY{ z{+^W#2dE$zVj|z-vMb4UBL5;o2^rwIyDE$@7Y#JL<=@ohZ?U7V7%Y@08ar7HxoB;Z zg`D_*y(K)zo zR3q8-re%(&D99W-_^A`KQsIx2%|o=^0^akRy}ruaxzItWcvRh0cPkRZvqCtiXlSBV zAM|&9Xem+x^}9EY>7e;5MOrR{8#g9{x}EEz1c{sU>|C?Gs&1{HTp3I6Y7;FytQcVn z$Wy)Es>KOauy~5`!#hy1bFSViXM5>6jz6h!L8WYI_8P%! zr5T6rR5x1wXX%!Pi2-6uUm;y)F?Yp^p2qR>Bv zhwyGpHvblpge&6xwTG%1t84(@*nog`U`kN^8&BtTSJZ(9i{Q_DD?%_E`gcRNl1UI1^rcD#o4=Scg z=QbI^v5nFNJ{8?d7NVT4uw}=F@1ej>-ZkO0tzi$e{{dh`etmNKob9mudBO@fq$m%{ z;~KO|7XZO#A=_%8^>A;(p*ARCeKm5(H3Ey86Fv3Aw8eUrsU9dC=j&{6~ z5WYk?V*P71KTTr1Pgcq@fiZ?Ba@0}_3fz>UcIJ6y06~{S5%!t$y!{DgQ1AgmFI!up!U3l>RiimYVOX?(B&HYSHSQ?)=*_GH@|nX>rYlhI#k^4c~0{$!OTz^Zw0X zX$t%_Uq^MU9KV&dmhMfRo+8|w8{067tMqSZ>dj%Qu9!#1oZ}wBmqDG3eUY@b2Z{eg zF99l2Sbv>i21PM-($XQ-eJ;uoh`MYy#|RjJ6^xWQ>%`m?poKx*yst$3ve@VxlcCFr zt4{I=7Df^Khlc0LO`Mh6-}V%eQs7lVKgk6RyMun}1Spydd{aRHSjM}|SqRDnRKn3f zEbLyH*>^MMpZlgiT}L=qr#tWSomVX6n=&9&dN-YL`MKY}8tL0J>#+;p4ife6>vv!7 z$!5?)i4s7`=V<4y&!==Pp&*wD>R>fv&r&y({RrUN(Y5Hm&E9m>glgwyD+k&F8T>#+0$BaBy=`3~!-)*LXg{0vx^Z-@m{c_OeH-Nnqr>a` ze6q2c3Jk4h87=F+M?Wnk4r#k~C2W8rfRvP+t^KpxN&{ovpxag-FSO^ZC26Dqa}&W= zqgtQsTBCaQt}^JBS}$RRvuo&c==wDm;FGh6i{i+<%KU6l8&ZVlTN}TD?aDWEIFd2s zC3bc;jas71GAE&H#!Qao26tm%U7%FxO3;;K!L9}g(l2iC!IRb12LSU{*&`VMA( z`FujbdGsf?$f$vdJVWzSr!YP1H%AdzO9{9_H?OLzFPs7$>ox>K--KCV4iEe;B%XYr z2f%1f&-zF|=Q`!C+tn=2RyP87!#|M%49^<(amu)J7qT-gb}SjaYo4v=Yb>zU^YNI~ ze3#~^%&I{O$3)^hBC4r{76M?nNF|9{7@?vQ`MLf|wnMRV*kIU@%|CX(=2@Yx6w8K| z2mQ+%Hi9+U*FE^Awec9*ljsM&IAEfsJHEvV?j%hJ5cwO@LS+JHk1S)#Q)L`sPo$yY ziBaj=mkoVFi<<~Vp8V%Mb?^xO#eyh=*6>)j*T2%s(m#3nXnA2cc9HI1i%G}G`}{hX z!aK3w+d7oa*&?2zep&1ABl>j&IfFz0-^z_vp6hj=c`w(eqwUfbchb%NSZNm;5$ljb;s|hRrFVMfq+`ixGhl z6*198lQD}BG6W%hK{>*OXA*G`XN{QEh+i7`#WW!Apj`Mx31>vNrew}t;j$iRt{Hxbz>rHSQ@e;zPm+Q6tOXrgnqv_CxS|GX_#(4_Pl%9DcP zTtA@w?%2ep6bgXTh9cma6z4NOndn}@ERXb$WOrpCkgjpqbxjS>I@LNw(EwxZd$Qwv zrk{-ofoL9zcX`f?AhE;P?*>Ib2EQ+MO+R#1gm#GOl{AmyjS-<<)hAh5ZWwmO`BNLS zew`!?ecNQh8(MM>Q; zr`_iod7&hUrCm18wO2K?v~tDUALIzc+@nOER73qFjT6d||B5E7_&^tUnzcwYk~Sk&t=q};8YM*ErhjTcs}dvV5D)M1`A{o)V-|u2>zbo;!{*P@ zM&rSSr}?)s-Op*xinr5FR;gAV79zO^zM!DmB(q1;zp!zCyO{X_{%;xp0xn{a{9Aa- zBiTkrP5yHaC=-4y2erw=n8GQcyv{E2kBO5FikWUc3VYv{c)q?kI*;>R1y`4)6Mk_3 z7dc+L(@~*2d-@!fJxbfZ_&%&2bH911WdQ*0Yp-^W1!=4-0{7ofN~N&`nR@B|%AS$| zUz)`xn8>(onu-|?(+Yv@P#qjfKeBxbe=n=f)|e^X$+SUUn5@U!cp;^Y_7N0<*05es8~>QAv$$2vrocvRYYI#{P_(RVRoN<+Gzqt8ef+4gb1G=&>3=TYg_pj%i=N+Lrz`B@^6Ys}= zJ&}0aP88$9vbct#JB;oh-)FHvqg5DwckJDk)m$nQ!Zb9;(#8@_qF7arTgl9Tt)UDv6&uLruZAyRzB6c38XialD+%Vy4(2D->qYT zwu0~=t+xxVISmLpr~5k5{bb-f0wFTrU0r?8k{$~ce(J4Fd2Nm zt_M8c@c4s?e!d_F^i$`9Prj-8?vZm3SA5tv;>$JNm&}D}H*a3))dYv9NtPs3;epI_ z%0D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%0AQ*>--!7XhpU5jO3fC(frUQ7T&B=y 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 z zhJK9tMSlU$)umc_-6dI*@ASzyME}5nsvCvAu{mUuQ;AS3BEuQyuAJxwoLO!7frL2R zw(2m*CLb~}lIwN3=qz6?DAu+l&%qbI-4!%S<9=>QE`kzlUQ+;XA`llCa#YOfjc$U2h0)*N3 z@C!+Mn6t4z^tz1g+G~B96prJPY-*;%$*XsbU1P4)%i zUM+h*$S$f^yp?=&2&g+R%(XFHpqfmAn

}AUv-H`3Vk#vAb~+>yn~AIr^3q+fl3Azf_UJ* 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 literal 2561913 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�b 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

@@ -925,6 +931,7 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ editorIsInline={editorIsInline} disableSubmitAction={disableSubmitAction} isSpaceReduced={isSpaceReduced} + isLoading={isLoading} {...editorMessages} /> )} diff --git a/src/plugins/data/common/search/expressions/esql.ts b/src/plugins/data/common/search/expressions/esql.ts index e1eb3bb7be452..f8b0bb04b3096 100644 --- a/src/plugins/data/common/search/expressions/esql.ts +++ b/src/plugins/data/common/search/expressions/esql.ts @@ -20,6 +20,7 @@ import { zipObject } from 'lodash'; import { Observable, defer, throwError } from 'rxjs'; import { catchError, map, switchMap, tap } from 'rxjs/operators'; import { buildEsQuery } from '@kbn/es-query'; +import type { ESQLSearchReponse } from '@kbn/es-types'; import { getEsQueryConfig } from '../../es_query'; import { getTime } from '../../query'; import { ESQL_SEARCH_STRATEGY, IKibanaSearchRequest, ISearchGeneric, KibanaContext } from '..'; @@ -90,14 +91,6 @@ interface ESQLSearchParams { locale?: string; } -interface ESQLSearchReponse { - columns?: Array<{ - name: string; - type: string; - }>; - values: unknown[][]; -} - export const getEsqlFn = ({ getStartDependencies }: EsqlFnArguments) => { const essql: EsqlExpressionFunctionDefinition = { name: 'esql', diff --git a/src/plugins/data/server/search/strategies/es_search/elasticsearch.ts b/src/plugins/data/server/search/strategies/es_search/elasticsearch.ts index 7973f74ee17de..3d3187b20e042 100644 --- a/src/plugins/data/server/search/strategies/es_search/elasticsearch.ts +++ b/src/plugins/data/server/search/strategies/es_search/elasticsearch.ts @@ -15,9 +15,3 @@ export type IndexAsString = { } & Map; export type Omit = Pick>; - -export interface BoolQuery { - must_not: Array>; - should: Array>; - filter: Array>; -} diff --git a/src/plugins/data/tsconfig.json b/src/plugins/data/tsconfig.json index 77cc9b6aa5b54..12e74fed6a8ec 100644 --- a/src/plugins/data/tsconfig.json +++ b/src/plugins/data/tsconfig.json @@ -50,7 +50,8 @@ "@kbn/search-errors", "@kbn/search-response-warnings", "@kbn/shared-ux-link-redirect-app", - "@kbn/bfetch-error" + "@kbn/bfetch-error", + "@kbn/es-types" ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/maps/common/constants.ts b/x-pack/plugins/maps/common/constants.ts index 456748a3752f1..143a17ca4511f 100644 --- a/x-pack/plugins/maps/common/constants.ts +++ b/x-pack/plugins/maps/common/constants.ts @@ -69,6 +69,7 @@ export enum SOURCE_TYPES { ES_SEARCH = 'ES_SEARCH', ES_PEW_PEW = 'ES_PEW_PEW', ES_ML_ANOMALIES = 'ML_ANOMALIES', + ESQL = 'ESQL', EMS_XYZ = 'EMS_XYZ', // identifies a custom TMS source. EMS-prefix in the name is a little unfortunate :( WMS = 'WMS', KIBANA_TILEMAP = 'KIBANA_TILEMAP', @@ -327,6 +328,7 @@ export enum WIZARD_ID { POINT_2_POINT = 'point2Point', ES_DOCUMENT = 'esDocument', ES_TOP_HITS = 'esTopHits', + ESQL = 'ESQL', KIBANA_BASEMAP = 'kibanaBasemap', MVT_VECTOR = 'mvtVector', WMS_LAYER = 'wmsLayer', diff --git a/x-pack/plugins/maps/common/descriptor_types/source_descriptor_types.ts b/x-pack/plugins/maps/common/descriptor_types/source_descriptor_types.ts index 30f02a7a9c4c7..aaa3965307a25 100644 --- a/x-pack/plugins/maps/common/descriptor_types/source_descriptor_types.ts +++ b/x-pack/plugins/maps/common/descriptor_types/source_descriptor_types.ts @@ -9,6 +9,7 @@ import { FeatureCollection } from 'geojson'; import type { Query } from '@kbn/es-query'; +import type { ESQLColumn } from '@kbn/es-types'; import { SortDirection } from '@kbn/data-plugin/common/search'; import { AGG_TYPE, @@ -37,6 +38,20 @@ export type EMSFileSourceDescriptor = AbstractSourceDescriptor & { tooltipProperties: string[]; }; +export type ESQLSourceDescriptor = AbstractSourceDescriptor & { + // id: UUID + id: string; + esql: string; + columns: ESQLColumn[]; + /* + * Date field used to narrow ES|QL requests by global time range + */ + dateField?: string; + narrowByGlobalSearch: boolean; + narrowByMapBounds: boolean; + applyForceRefresh: boolean; +}; + export type AbstractESSourceDescriptor = AbstractSourceDescriptor & { // id: UUID id: string; diff --git a/x-pack/plugins/maps/common/telemetry/layer_stats_collector.ts b/x-pack/plugins/maps/common/telemetry/layer_stats_collector.ts index d782e0bd813d0..b942ae3d6a6cf 100644 --- a/x-pack/plugins/maps/common/telemetry/layer_stats_collector.ts +++ b/x-pack/plugins/maps/common/telemetry/layer_stats_collector.ts @@ -214,6 +214,10 @@ function getLayerKey(layerDescriptor: LayerDescriptor): LAYER_KEYS | null { return LAYER_KEYS.ES_ML_ANOMALIES; } + if (layerDescriptor.sourceDescriptor.type === SOURCE_TYPES.ESQL) { + return LAYER_KEYS.ESQL; + } + if (layerDescriptor.sourceDescriptor.type === SOURCE_TYPES.ES_SEARCH) { const sourceDescriptor = layerDescriptor.sourceDescriptor as ESSearchSourceDescriptor; diff --git a/x-pack/plugins/maps/common/telemetry/types.ts b/x-pack/plugins/maps/common/telemetry/types.ts index 97fedb4d81d50..aac8265311764 100644 --- a/x-pack/plugins/maps/common/telemetry/types.ts +++ b/x-pack/plugins/maps/common/telemetry/types.ts @@ -27,6 +27,7 @@ export enum LAYER_KEYS { ES_AGG_HEXAGONS = 'es_agg_hexagons', ES_AGG_HEATMAP = 'es_agg_heatmap', ES_ML_ANOMALIES = 'es_ml_anomalies', + ESQL = 'esql', EMS_REGION = 'ems_region', EMS_BASEMAP = 'ems_basemap', KBN_TMS_RASTER = 'kbn_tms_raster', diff --git a/x-pack/plugins/maps/kibana.jsonc b/x-pack/plugins/maps/kibana.jsonc index 3fb66c4d93151..b6bf08329fb44 100644 --- a/x-pack/plugins/maps/kibana.jsonc +++ b/x-pack/plugins/maps/kibana.jsonc @@ -49,7 +49,8 @@ "kibanaUtils", "usageCollection", "unifiedSearch", - "fieldFormats" + "fieldFormats", + "textBasedLanguages" ], "extraPublicDirs": [ "common" diff --git a/x-pack/plugins/maps/public/actions/layer_actions.ts b/x-pack/plugins/maps/public/actions/layer_actions.ts index e24da30482d66..7b7785f2033c6 100644 --- a/x-pack/plugins/maps/public/actions/layer_actions.ts +++ b/x-pack/plugins/maps/public/actions/layer_actions.ts @@ -74,7 +74,7 @@ import { IVectorStyle } from '../classes/styles/vector/vector_style'; import { notifyLicensedFeatureUsage } from '../licensed_features'; import { IESAggField } from '../classes/fields/agg'; import { IField } from '../classes/fields/field'; -import type { IESSource } from '../classes/sources/es_source'; +import type { IVectorSource } from '../classes/sources/vector_source'; import { getDrawMode, getOpenTOCDetails } from '../selectors/ui_selectors'; import { isLayerGroup, LayerGroup } from '../classes/layers/layer_group'; import { isSpatialJoin } from '../classes/joins/is_spatial_join'; @@ -849,7 +849,7 @@ export function setTileState( } function clearInspectorAdapters(layer: ILayer, adapters: Adapters) { - if (isLayerGroup(layer) || !layer.getSource().isESSource()) { + if (isLayerGroup(layer)) { return; } @@ -857,10 +857,15 @@ function clearInspectorAdapters(layer: ILayer, adapters: Adapters) { adapters.vectorTiles.removeLayer(layer.getId()); } + const source = layer.getSource(); + if ('getInspectorRequestIds' in source) { + (source as IVectorSource).getInspectorRequestIds().forEach((id) => { + adapters.requests!.resetRequest(id); + }); + } + if (adapters.requests && 'getValidJoins' in layer) { - const vectorLayer = layer as IVectorLayer; - adapters.requests!.resetRequest((layer.getSource() as IESSource).getId()); - vectorLayer.getValidJoins().forEach((join) => { + (layer as IVectorLayer).getValidJoins().forEach((join) => { adapters.requests!.resetRequest(join.getRightJoinSource().getId()); }); } diff --git a/x-pack/plugins/maps/public/classes/layers/build_vector_request_meta.ts b/x-pack/plugins/maps/public/classes/layers/build_vector_request_meta.ts index adb53e76c060a..2c3110b8c9cf2 100644 --- a/x-pack/plugins/maps/public/classes/layers/build_vector_request_meta.ts +++ b/x-pack/plugins/maps/public/classes/layers/build_vector_request_meta.ts @@ -26,7 +26,7 @@ export function buildVectorRequestMeta( applyGlobalQuery: source.getApplyGlobalQuery(), applyGlobalTime: source.getApplyGlobalTime(), sourceMeta: source.getSyncMeta(dataFilters), - applyForceRefresh: source.isESSource() ? source.getApplyForceRefresh() : false, + applyForceRefresh: source.getApplyForceRefresh(), isForceRefresh, isFeatureEditorOpenForLayer, }; diff --git a/x-pack/plugins/maps/public/classes/layers/raster_tile_layer/raster_tile_layer.ts b/x-pack/plugins/maps/public/classes/layers/raster_tile_layer/raster_tile_layer.ts index 9decff440ee49..6712bfeef1576 100644 --- a/x-pack/plugins/maps/public/classes/layers/raster_tile_layer/raster_tile_layer.ts +++ b/x-pack/plugins/maps/public/classes/layers/raster_tile_layer/raster_tile_layer.ts @@ -82,7 +82,7 @@ export class RasterTileLayer extends AbstractLayer { ...dataFilters, applyGlobalQuery: source.getApplyGlobalQuery(), applyGlobalTime: source.getApplyGlobalTime(), - applyForceRefresh: source.isESSource() ? source.getApplyForceRefresh() : false, + applyForceRefresh: source.getApplyForceRefresh(), sourceQuery: this.getQuery() || undefined, isForceRefresh, }; diff --git a/x-pack/plugins/maps/public/classes/layers/wizards/layer_wizard_registry.ts b/x-pack/plugins/maps/public/classes/layers/wizards/layer_wizard_registry.ts index a5284fe0a5cbf..d94b3e4ae6db4 100644 --- a/x-pack/plugins/maps/public/classes/layers/wizards/layer_wizard_registry.ts +++ b/x-pack/plugins/maps/public/classes/layers/wizards/layer_wizard_registry.ts @@ -48,6 +48,7 @@ export type LayerWizard = { export type RenderWizardArguments = { previewLayers: (layerDescriptors: LayerDescriptor[]) => void; mapColors: string[]; + mostCommonDataViewId?: string; // multi-step arguments for wizards that supply 'prerequisiteSteps' currentStepId: string | null; isOnFinalStep: boolean; diff --git a/x-pack/plugins/maps/public/classes/layers/wizards/load_layer_wizards.ts b/x-pack/plugins/maps/public/classes/layers/wizards/load_layer_wizards.ts index 7a747ea2533cf..920cc589c847b 100644 --- a/x-pack/plugins/maps/public/classes/layers/wizards/load_layer_wizards.ts +++ b/x-pack/plugins/maps/public/classes/layers/wizards/load_layer_wizards.ts @@ -18,6 +18,7 @@ import { } from '../../sources/es_geo_grid_source'; import { geoLineLayerWizardConfig } from '../../sources/es_geo_line_source'; import { point2PointLayerWizardConfig } from '../../sources/es_pew_pew_source/point_2_point_layer_wizard'; +import { esqlLayerWizardConfig } from '../../sources/esql_source'; import { emsBoundariesLayerWizardConfig } from '../../sources/ems_file_source'; import { emsBaseMapLayerWizardConfig } from '../../sources/ems_tms_source'; import { kibanaBasemapLayerWizardConfig } from '../../sources/kibana_tilemap_source/kibana_base_map_layer_wizard'; @@ -41,10 +42,10 @@ export function registerLayerWizards() { registerLayerWizardInternal(layerGroupWizardConfig); registerLayerWizardInternal(esDocumentsLayerWizardConfig); - registerLayerWizardInternal(choroplethLayerWizardConfig); + registerLayerWizardInternal(esqlLayerWizardConfig); + registerLayerWizardInternal(choroplethLayerWizardConfig); registerLayerWizardInternal(spatialJoinWizardConfig); - registerLayerWizardInternal(point2PointLayerWizardConfig); registerLayerWizardInternal(clustersLayerWizardConfig); registerLayerWizardInternal(heatmapLayerWizardConfig); @@ -52,15 +53,16 @@ export function registerLayerWizards() { registerLayerWizardInternal(esTopHitsLayerWizardConfig); registerLayerWizardInternal(geoLineLayerWizardConfig); + registerLayerWizardInternal(point2PointLayerWizardConfig); + registerLayerWizardInternal(newVectorLayerWizardConfig); + registerLayerWizardInternal(emsBoundariesLayerWizardConfig); registerLayerWizardInternal(emsBaseMapLayerWizardConfig); - registerLayerWizardInternal(newVectorLayerWizardConfig); - registerLayerWizardInternal(kibanaBasemapLayerWizardConfig); - registerLayerWizardInternal(tmsLayerWizardConfig); registerLayerWizardInternal(wmsLayerWizardConfig); + registerLayerWizardInternal(kibanaBasemapLayerWizardConfig); registerLayerWizardInternal(mvtVectorSourceWizardConfig); registerLayerWizardInternal(ObservabilityLayerWizardConfig); registerLayerWizardInternal(SecurityLayerWizardConfig); diff --git a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx index 82bb8fec43234..cfa89390f1569 100644 --- a/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx +++ b/x-pack/plugins/maps/public/classes/sources/es_geo_line_source/es_geo_line_source.tsx @@ -230,6 +230,18 @@ export class ESGeoLineSource extends AbstractESAggSource { ); } + getInspectorRequestIds(): string[] { + return [this._getTracksRequestId(), this._getEntitiesRequestId()]; + } + + private _getTracksRequestId() { + return `${this.getId()}_tracks`; + } + + private _getEntitiesRequestId() { + return `${this.getId()}_entities`; + } + async _getGeoLineByTimeseries( layerName: string, requestMeta: VectorSourceRequestMeta, @@ -264,7 +276,7 @@ export class ESGeoLineSource extends AbstractESAggSource { const warnings: SearchResponseWarning[] = []; const resp = await this._runEsQuery({ - requestId: `${this.getId()}_tracks`, + requestId: this._getTracksRequestId(), requestName: getLayerFeaturesRequestName(layerName), searchSource, registerCancelCallback, @@ -356,7 +368,7 @@ export class ESGeoLineSource extends AbstractESAggSource { } const entityResp = await this._runEsQuery({ - requestId: `${this.getId()}_entities`, + requestId: this._getEntitiesRequestId(), requestName: i18n.translate('xpack.maps.source.esGeoLine.entityRequestName', { defaultMessage: `load track entities ({layerName})`, values: { @@ -431,7 +443,7 @@ export class ESGeoLineSource extends AbstractESAggSource { }, }); const tracksResp = await this._runEsQuery({ - requestId: `${this.getId()}_tracks`, + requestId: this._getTracksRequestId(), requestName: getLayerFeaturesRequestName(layerName), searchSource: tracksSearchSource, registerCancelCallback, diff --git a/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx b/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx index 5d0f6aa59c55d..161acd3e5db73 100644 --- a/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx +++ b/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx @@ -568,6 +568,10 @@ export class ESSearchSource extends AbstractESSource implements IMvtVectorSource return true; } + getInspectorRequestIds(): string[] { + return [this.getId(), this._getFeaturesCountRequestId()]; + } + async getGeoJsonWithMeta( layerName: string, requestMeta: VectorSourceRequestMeta, @@ -992,6 +996,10 @@ export class ESSearchSource extends AbstractESSource implements IMvtVectorSource return !isWithin; } + private _getFeaturesCountRequestId() { + return this.getId() + 'features_count'; + } + async canLoadAllDocuments( layerName: string, requestMeta: VectorSourceRequestMeta, @@ -1003,7 +1011,7 @@ export class ESSearchSource extends AbstractESSource implements IMvtVectorSource const searchSource = await this.makeSearchSource(requestMeta, 0); searchSource.setField('trackTotalHits', maxResultWindow + 1); const resp = await this._runEsQuery({ - requestId: this.getId() + 'features_count', + requestId: this._getFeaturesCountRequestId(), requestName: i18n.translate('xpack.maps.vectorSource.featuresCountRequestName', { defaultMessage: 'load features count ({layerName})', values: { layerName }, diff --git a/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts b/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts index 2b5ec413ba6ec..aa41f33efa00b 100644 --- a/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts +++ b/x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts @@ -120,6 +120,10 @@ export class AbstractESSource extends AbstractVectorSource implements IESSource return this._descriptor.id; } + getInspectorRequestIds(): string[] { + return [this.getId()]; + } + getApplyGlobalQuery(): boolean { return this._descriptor.applyGlobalQuery; } diff --git a/x-pack/plugins/maps/public/classes/sources/esql_source/convert_to_geojson.test.ts b/x-pack/plugins/maps/public/classes/sources/esql_source/convert_to_geojson.test.ts new file mode 100644 index 0000000000000..fbbbc697376f8 --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/esql_source/convert_to_geojson.test.ts @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { convertToGeoJson } from './convert_to_geojson'; + +describe('convertToGeoJson', () => { + test('should convert ES|QL response to feature collection', () => { + const resp = { + columns: [ + { name: 'location', type: 'geo_point' }, + { name: 'bytes', type: 'long' }, + ], + values: [ + ['POINT (-87.66208335757256 32.68147221766412)', 6901], + ['POINT (-76.41376560553908 39.32566332165152)', 484], + ], + }; + const featureCollection = convertToGeoJson(resp); + expect(featureCollection).toEqual({ + type: 'FeatureCollection', + features: [ + { + geometry: { + coordinates: [-87.66208335757256, 32.68147221766412], + type: 'Point', + }, + properties: { + bytes: 6901, + }, + type: 'Feature', + }, + { + geometry: { + coordinates: [-76.41376560553908, 39.32566332165152], + type: 'Point', + }, + properties: { + bytes: 484, + }, + type: 'Feature', + }, + ], + }); + }); +}); diff --git a/x-pack/plugins/maps/public/classes/sources/esql_source/convert_to_geojson.ts b/x-pack/plugins/maps/public/classes/sources/esql_source/convert_to_geojson.ts new file mode 100644 index 0000000000000..3940cd9102c54 --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/esql_source/convert_to_geojson.ts @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +// @ts-ignore +import { parse } from 'wellknown'; +import { Feature, FeatureCollection, GeoJsonProperties } from 'geojson'; +import type { ESQLSearchReponse } from '@kbn/es-types'; +import { getGeometryColumnIndex } from './esql_utils'; + +export function convertToGeoJson(resp: ESQLSearchReponse): FeatureCollection { + const geometryIndex = getGeometryColumnIndex(resp.columns); + const features: Feature[] = []; + for (let i = 0; i < resp.values.length; i++) { + const hit = resp.values[i]; + const wkt = hit[geometryIndex]; + if (!wkt) { + continue; + } + try { + const geometry = parse(wkt); + const properties: GeoJsonProperties = {}; + for (let j = 0; j < hit.length; j++) { + // do not store geometry in properties + if (j === geometryIndex) { + continue; + } + properties[resp.columns[j].name] = hit[j] as unknown; + } + features.push({ + type: 'Feature', + geometry, + properties, + }); + } catch (parseError) { + // TODO surface parse error in some kind of warning + } + } + + return { + type: 'FeatureCollection', + features, + }; +} diff --git a/x-pack/plugins/maps/public/classes/sources/esql_source/create_source_editor.tsx b/x-pack/plugins/maps/public/classes/sources/esql_source/create_source_editor.tsx new file mode 100644 index 0000000000000..20670e0121c72 --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/esql_source/create_source_editor.tsx @@ -0,0 +1,119 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useEffect, useState } from 'react'; +import { EuiSkeletonText } from '@elastic/eui'; +import { ES_GEO_FIELD_TYPE } from '../../../../common/constants'; +import type { ESQLSourceDescriptor } from '../../../../common/descriptor_types'; +import { getIndexPatternService } from '../../../kibana_services'; +import { ESQLEditor } from './esql_editor'; +import { ESQL_GEO_POINT_TYPE } from './esql_utils'; + +interface Props { + mostCommonDataViewId?: string; + onSourceConfigChange: (sourceConfig: Partial | null) => void; +} + +export function CreateSourceEditor(props: Props) { + const [isInitialized, setIsInitialized] = useState(false); + const [esql, setEsql] = useState(''); + const [dateField, setDateField] = useState(); + + useEffect(() => { + let ignore = false; + + function getDataView() { + return props.mostCommonDataViewId + ? getIndexPatternService().get(props.mostCommonDataViewId) + : getIndexPatternService().getDefaultDataView(); + } + + getDataView() + .then((dataView) => { + if (ignore) { + return; + } + + if (dataView) { + let geoField: string | undefined; + const initialDateFields: string[] = []; + for (let i = 0; i < dataView.fields.length; i++) { + const field = dataView.fields[i]; + if (!geoField && ES_GEO_FIELD_TYPE.GEO_POINT === field.type) { + geoField = field.name; + } else if ('date' === field.type) { + initialDateFields.push(field.name); + } + } + + if (geoField) { + let initialDateField: string | undefined; + if (dataView.timeFieldName) { + initialDateField = dataView.timeFieldName; + } else if (initialDateFields.length) { + initialDateField = initialDateFields[0]; + } + const initialEsql = `from ${dataView.getIndexPattern()} | keep ${geoField} | limit 10000`; + setDateField(initialDateField); + setEsql(initialEsql); + props.onSourceConfigChange({ + columns: [ + { + name: geoField, + type: ESQL_GEO_POINT_TYPE, + }, + ], + dateField: initialDateField, + esql: initialEsql, + }); + } + } + setIsInitialized(true); + }) + .catch((err) => { + if (ignore) { + return; + } + setIsInitialized(true); + }); + + return () => { + ignore = true; + }; + // only run on mount + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + return ( + + { + let nextDateField = dateField; + if (!dateField || !change.dateFields.includes(dateField)) { + nextDateField = change.dateFields.length ? change.dateFields[0] : undefined; + } + setDateField(nextDateField); + setEsql(change.esql); + const sourceConfig = + change.esql && change.esql.length + ? { + columns: change.columns, + dateField: nextDateField, + esql: change.esql, + } + : null; + props.onSourceConfigChange(sourceConfig); + }} + /> + + ); +} diff --git a/x-pack/plugins/maps/public/classes/sources/esql_source/esql_editor.tsx b/x-pack/plugins/maps/public/classes/sources/esql_source/esql_editor.tsx new file mode 100644 index 0000000000000..fbc002e3c2d4c --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/esql_source/esql_editor.tsx @@ -0,0 +1,106 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState } from 'react'; +import { i18n } from '@kbn/i18n'; +import { isEqual } from 'lodash'; +import useMountedState from 'react-use/lib/useMountedState'; +import type { AggregateQuery } from '@kbn/es-query'; +import type { ESQLColumn } from '@kbn/es-types'; +import { TextBasedLangEditor } from '@kbn/text-based-languages/public'; +import { getESQLMeta, verifyGeometryColumn } from './esql_utils'; + +interface Props { + esql: string; + onESQLChange: ({ + columns, + dateFields, + esql, + }: { + columns: ESQLColumn[]; + dateFields: string[]; + esql: string; + }) => void; +} + +export function ESQLEditor(props: Props) { + const isMounted = useMountedState(); + + const [error, setError] = useState(); + const [warning, setWarning] = useState(); + const [isLoading, setIsLoading] = useState(false); + const [localQuery, setLocalQuery] = useState({ esql: props.esql }); + + return ( + <> + { + if (!query) { + return; + } + + if (warning) { + setWarning(undefined); + } + if (error) { + setError(undefined); + } + setIsLoading(true); + + try { + const esql = (query as { esql: string }).esql; + const esqlMeta = await getESQLMeta(esql); + if (!isMounted()) { + return; + } + verifyGeometryColumn(esqlMeta.columns); + if (esqlMeta.columns.length >= 6) { + setWarning( + i18n.translate('xpack.maps.esqlSource.tooManyColumnsWarning', { + defaultMessage: `ES|QL statement returns {count} columns. For faster maps, use 'DROP' or 'KEEP' to narrow columns.`, + values: { + count: esqlMeta.columns.length, + }, + }) + ); + } + props.onESQLChange({ + columns: esqlMeta.columns, + dateFields: esqlMeta.dateFields, + esql, + }); + } catch (err) { + if (!isMounted()) { + return; + } + setError(err); + props.onESQLChange({ + columns: [], + dateFields: [], + esql: '', + }); + } + + setIsLoading(false); + }} + errors={error ? [error] : undefined} + warning={warning} + expandCodeEditor={(status: boolean) => { + // never called because hideMinimizeButton hides UI + }} + isCodeEditorExpanded + hideMinimizeButton + editorIsInline + hideRunQueryText + isLoading={isLoading} + disableSubmitAction={isEqual(localQuery, props.esql)} + /> + + ); +} diff --git a/x-pack/plugins/maps/public/classes/sources/esql_source/esql_layer_wizard.tsx b/x-pack/plugins/maps/public/classes/sources/esql_source/esql_layer_wizard.tsx new file mode 100644 index 0000000000000..c01ca307fbaf4 --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/esql_source/esql_layer_wizard.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 { i18n } from '@kbn/i18n'; +import { CreateSourceEditor } from './create_source_editor'; +import { LayerWizard, RenderWizardArguments } from '../../layers'; +import { sourceTitle, ESQLSource } from './esql_source'; +import { LAYER_WIZARD_CATEGORY, WIZARD_ID } from '../../../../common/constants'; +import type { ESQLSourceDescriptor } from '../../../../common/descriptor_types'; +import { GeoJsonVectorLayer } from '../../layers/vector_layer'; +import { DocumentsLayerIcon } from '../../layers/wizards/icons/documents_layer_icon'; + +export const esqlLayerWizardConfig: LayerWizard = { + id: WIZARD_ID.ESQL, + order: 10, + categories: [LAYER_WIZARD_CATEGORY.ELASTICSEARCH], + description: i18n.translate('xpack.maps.source.esqlDescription', { + defaultMessage: 'Create a map layer using the Elasticsearch Query Language', + }), + icon: DocumentsLayerIcon, + isBeta: true, + renderWizard: ({ previewLayers, mapColors, mostCommonDataViewId }: RenderWizardArguments) => { + const onSourceConfigChange = (sourceConfig: Partial | null) => { + if (!sourceConfig) { + previewLayers([]); + return; + } + + const sourceDescriptor = ESQLSource.createDescriptor(sourceConfig); + const layerDescriptor = GeoJsonVectorLayer.createDescriptor({ sourceDescriptor }, mapColors); + previewLayers([layerDescriptor]); + }; + + return ( + + ); + }, + title: sourceTitle, +}; diff --git a/x-pack/plugins/maps/public/classes/sources/esql_source/esql_source.tsx b/x-pack/plugins/maps/public/classes/sources/esql_source/esql_source.tsx new file mode 100644 index 0000000000000..b92ccd1fb82f9 --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/esql_source/esql_source.tsx @@ -0,0 +1,292 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { lastValueFrom } from 'rxjs'; +import { tap } from 'rxjs/operators'; +import { v4 as uuidv4 } from 'uuid'; +import { Adapters } from '@kbn/inspector-plugin/common/adapters'; +import { buildEsQuery, getIndexPatternFromESQLQuery, getLimitFromESQLQuery } from '@kbn/es-query'; +import type { BoolQuery, Filter, Query } from '@kbn/es-query'; +import type { ESQLSearchReponse } from '@kbn/es-types'; +import { getEsQueryConfig } from '@kbn/data-service/src/es_query'; +import { getTime } from '@kbn/data-plugin/public'; +import { FIELD_ORIGIN, SOURCE_TYPES, VECTOR_SHAPE_TYPE } from '../../../../common/constants'; +import type { + ESQLSourceDescriptor, + VectorSourceRequestMeta, +} from '../../../../common/descriptor_types'; +import { createExtentFilter } from '../../../../common/elasticsearch_util'; +import { DataRequest } from '../../util/data_request'; +import { isValidStringConfig } from '../../util/valid_string_config'; +import type { SourceEditorArgs } from '../source'; +import { AbstractVectorSource, getLayerFeaturesRequestName } from '../vector_source'; +import type { IVectorSource, GeoJsonWithMeta, SourceStatus } from '../vector_source'; +import type { IField } from '../../fields/field'; +import { InlineField } from '../../fields/inline_field'; +import { getData, getUiSettings } from '../../../kibana_services'; +import { convertToGeoJson } from './convert_to_geojson'; +import { getFieldType, getGeometryColumnIndex } from './esql_utils'; +import { UpdateSourceEditor } from './update_source_editor'; + +type ESQLSourceSyncMeta = Pick< + ESQLSourceDescriptor, + 'columns' | 'dateField' | 'esql' | 'narrowByMapBounds' +>; + +export const sourceTitle = i18n.translate('xpack.maps.source.esqlSearchTitle', { + defaultMessage: 'ES|QL', +}); + +export class ESQLSource extends AbstractVectorSource implements IVectorSource { + readonly _descriptor: ESQLSourceDescriptor; + + static createDescriptor(descriptor: Partial): ESQLSourceDescriptor { + if (!isValidStringConfig(descriptor.esql)) { + throw new Error('Cannot create ESQLSourceDescriptor when esql is not provided'); + } + return { + ...descriptor, + id: isValidStringConfig(descriptor.id) ? descriptor.id! : uuidv4(), + type: SOURCE_TYPES.ESQL, + esql: descriptor.esql!, + columns: descriptor.columns ? descriptor.columns : [], + narrowByGlobalSearch: + typeof descriptor.narrowByGlobalSearch !== 'undefined' + ? descriptor.narrowByGlobalSearch + : true, + narrowByMapBounds: + typeof descriptor.narrowByMapBounds !== 'undefined' ? descriptor.narrowByMapBounds : true, + applyForceRefresh: + typeof descriptor.applyForceRefresh !== 'undefined' ? descriptor.applyForceRefresh : true, + }; + } + + constructor(descriptor: ESQLSourceDescriptor) { + super(ESQLSource.createDescriptor(descriptor)); + this._descriptor = descriptor; + } + + private _getRequestId(): string { + return this._descriptor.id; + } + + async getDisplayName() { + const pattern: string = getIndexPatternFromESQLQuery(this._descriptor.esql); + return pattern ? pattern : 'ES|QL'; + } + + async supportsFitToBounds(): Promise { + return false; + } + + getInspectorRequestIds() { + return [this._getRequestId()]; + } + + isQueryAware() { + return true; + } + + getApplyGlobalQuery() { + return this._descriptor.narrowByGlobalSearch; + } + + async isTimeAware() { + return !!this._descriptor.dateField; + } + + getApplyGlobalTime() { + return !!this._descriptor.dateField; + } + + getApplyForceRefresh() { + return this._descriptor.applyForceRefresh; + } + + isFilterByMapBounds() { + return this._descriptor.narrowByMapBounds; + } + + async getSupportedShapeTypes() { + return [VECTOR_SHAPE_TYPE.POINT]; + } + + supportsJoins() { + return false; // Joins will be part of ESQL statement and not client side join + } + + async getGeoJsonWithMeta( + layerName: string, + requestMeta: VectorSourceRequestMeta, + registerCancelCallback: (callback: () => void) => void, + isRequestStillActive: () => boolean, + inspectorAdapters: Adapters + ): Promise { + const limit = getLimitFromESQLQuery(this._descriptor.esql); + const params: { query: string; filter?: { bool: BoolQuery } } = { + query: this._descriptor.esql, + }; + + const query: Query[] = []; + const filters: Filter[] = []; + if (this._descriptor.narrowByGlobalSearch) { + if (requestMeta.query) { + query.push(requestMeta.query); + } + if (requestMeta.embeddableSearchContext?.query) { + query.push(requestMeta.embeddableSearchContext.query); + } + filters.push(...requestMeta.filters); + if (requestMeta.embeddableSearchContext) { + filters.push(...requestMeta.embeddableSearchContext.filters); + } + } + + if (this._descriptor.narrowByMapBounds && requestMeta.buffer) { + const geoField = + this._descriptor.columns[getGeometryColumnIndex(this._descriptor.columns)]?.name; + if (geoField) { + const extentFilter = createExtentFilter(requestMeta.buffer, [geoField]); + filters.push(extentFilter); + } + } + + if (requestMeta.applyGlobalTime) { + const timeRange = requestMeta.timeslice + ? { + from: new Date(requestMeta.timeslice.from).toISOString(), + to: new Date(requestMeta.timeslice.to).toISOString(), + mode: 'absolute' as 'absolute', + } + : requestMeta.timeFilters; + const timeFilter = getTime(undefined, timeRange, { + fieldName: this._descriptor.dateField, + }); + if (timeFilter) { + filters.push(timeFilter); + } + } + + params.filter = buildEsQuery(undefined, query, filters, getEsQueryConfig(getUiSettings())); + + const requestResponder = inspectorAdapters.requests!.start( + getLayerFeaturesRequestName(layerName), + { + id: this._getRequestId(), + } + ); + requestResponder.json(params); + + const { rawResponse, requestParams } = await lastValueFrom( + getData() + .search.search( + { params }, + { + strategy: 'esql', + } + ) + .pipe( + tap({ + error(error) { + requestResponder.error({ + json: 'attributes' in error ? error.attributes : { message: error.message }, + }); + }, + }) + ) + ); + + requestResponder.ok({ json: rawResponse, requestParams }); + + const esqlSearchResponse = rawResponse as unknown as ESQLSearchReponse; + const resultsCount = esqlSearchResponse.values.length; + return { + data: convertToGeoJson(esqlSearchResponse), + meta: { + resultsCount, + areResultsTrimmed: resultsCount >= limit, + }, + }; + } + + getSourceStatus(sourceDataRequest?: DataRequest): SourceStatus { + const meta = sourceDataRequest ? sourceDataRequest.getMeta() : null; + if (!meta) { + // no tooltip content needed when there is no feature collection or meta + return { + tooltipContent: null, + areResultsTrimmed: false, + }; + } + + if (meta.areResultsTrimmed) { + return { + tooltipContent: i18n.translate('xpack.maps.esqlSearch.resultsTrimmedMsg', { + defaultMessage: `Results limited to first {count} rows.`, + values: { count: meta.resultsCount?.toLocaleString() }, + }), + areResultsTrimmed: true, + }; + } + + return { + tooltipContent: i18n.translate('xpack.maps.esqlSearch.rowCountMsg', { + defaultMessage: `Found {count} rows.`, + values: { count: meta.resultsCount?.toLocaleString() }, + }), + areResultsTrimmed: false, + }; + } + + getFieldByName(fieldName: string): IField | null { + const column = this._descriptor.columns.find(({ name }) => { + return name === fieldName; + }); + const fieldType = column ? getFieldType(column) : undefined; + return column && fieldType + ? new InlineField({ + fieldName: column.name, + source: this, + origin: FIELD_ORIGIN.SOURCE, + dataType: fieldType, + }) + : null; + } + + async getFields() { + const fields: IField[] = []; + this._descriptor.columns.forEach((column) => { + const fieldType = getFieldType(column); + if (fieldType) { + fields.push( + new InlineField({ + fieldName: column.name, + source: this, + origin: FIELD_ORIGIN.SOURCE, + dataType: fieldType, + }) + ); + } + }); + return fields; + } + + renderSourceSettingsEditor({ onChange }: SourceEditorArgs) { + return ; + } + + getSyncMeta(): ESQLSourceSyncMeta { + return { + columns: this._descriptor.columns, + dateField: this._descriptor.dateField, + esql: this._descriptor.esql, + narrowByMapBounds: this._descriptor.narrowByMapBounds, + }; + } +} diff --git a/x-pack/plugins/maps/public/classes/sources/esql_source/esql_utils.ts b/x-pack/plugins/maps/public/classes/sources/esql_source/esql_utils.ts new file mode 100644 index 0000000000000..79cd2aaf70b50 --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/esql_source/esql_utils.ts @@ -0,0 +1,130 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 { lastValueFrom } from 'rxjs'; +import { getIndexPatternFromESQLQuery } from '@kbn/es-query'; +import type { ESQLColumn } from '@kbn/es-types'; +import { getData, getIndexPatternService } from '../../../kibana_services'; + +export const ESQL_GEO_POINT_TYPE = 'geo_point'; + +const NO_GEOMETRY_COLUMN_ERROR_MSG = i18n.translate( + 'xpack.maps.source.esql.noGeometryColumnErrorMsg', + { + defaultMessage: 'Elasticsearch ES|QL query does not have a geometry column.', + } +); + +function isGeometryColumn(column: ESQLColumn) { + return column.type === ESQL_GEO_POINT_TYPE; +} + +export function verifyGeometryColumn(columns: ESQLColumn[]) { + const geometryColumns = columns.filter(isGeometryColumn); + if (geometryColumns.length === 0) { + throw new Error(NO_GEOMETRY_COLUMN_ERROR_MSG); + } + + if (geometryColumns.length > 1) { + throw new Error( + i18n.translate('xpack.maps.source.esql.multipleGeometryColumnErrorMsg', { + defaultMessage: `Elasticsearch ES|QL query has {count} geometry columns when only 1 is allowed. Use 'DROP' or 'KEEP' to narrow columns.`, + values: { + count: geometryColumns.length, + }, + }) + ); + } +} + +export function getGeometryColumnIndex(columns: ESQLColumn[]) { + const index = columns.findIndex(isGeometryColumn); + if (index === -1) { + throw new Error(NO_GEOMETRY_COLUMN_ERROR_MSG); + } + return index; +} + +export async function getESQLMeta(esql: string) { + return { + columns: await getColumns(esql), + dateFields: await getDateFields(esql), + }; +} + +/* + * Map column.type to field type + * Supported column types https://www.elastic.co/guide/en/elasticsearch/reference/master/esql-limitations.html#_supported_types + */ +export function getFieldType(column: ESQLColumn) { + switch (column.type) { + case 'boolean': + case 'date': + case 'ip': + case 'keyword': + case 'text': + return 'string'; + case 'double': + case 'int': + case 'long': + case 'unsigned_long': + return 'number'; + default: + return undefined; + } +} + +async function getColumns(esql: string) { + const params = { + query: esql + ' | limit 0', + }; + + try { + const resp = await lastValueFrom( + getData().search.search( + { params }, + { + strategy: 'esql', + } + ) + ); + + return (resp.rawResponse as unknown as { columns: ESQLColumn[] }).columns; + } catch (error) { + throw new Error( + i18n.translate('xpack.maps.source.esql.getColumnsErrorMsg', { + defaultMessage: 'Unable to load columns. {errorMessage}', + values: { errorMessage: error.message }, + }) + ); + } +} + +export async function getDateFields(esql: string) { + const pattern: string = getIndexPatternFromESQLQuery(esql); + try { + // TODO pass field type filter to getFieldsForWildcard when field type filtering is supported + return (await getIndexPatternService().getFieldsForWildcard({ pattern })) + .filter((field) => { + return field.type === 'date'; + }) + .map((field) => { + return field.name; + }); + } catch (error) { + throw new Error( + i18n.translate('xpack.maps.source.esql.getFieldsErrorMsg', { + defaultMessage: `Unable to load date fields from index pattern: {pattern}. {errorMessage}`, + values: { + errorMessage: error.message, + pattern, + }, + }) + ); + } +} diff --git a/x-pack/plugins/maps/public/classes/sources/esql_source/index.ts b/x-pack/plugins/maps/public/classes/sources/esql_source/index.ts new file mode 100644 index 0000000000000..08cf25c30f6a6 --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/esql_source/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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { ESQLSource } from './esql_source'; +export { esqlLayerWizardConfig } from './esql_layer_wizard'; diff --git a/x-pack/plugins/maps/public/classes/sources/esql_source/update_source_editor.tsx b/x-pack/plugins/maps/public/classes/sources/esql_source/update_source_editor.tsx new file mode 100644 index 0000000000000..0c7e41e2f624d --- /dev/null +++ b/x-pack/plugins/maps/public/classes/sources/esql_source/update_source_editor.tsx @@ -0,0 +1,205 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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, { ChangeEvent, useEffect, useMemo, useState } from 'react'; +import { + EuiFormRow, + EuiPanel, + EuiSelect, + EuiSkeletonText, + EuiSpacer, + EuiSwitch, + EuiSwitchEvent, + EuiTitle, + EuiToolTip, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { getIndexPatternFromESQLQuery } from '@kbn/es-query'; +import type { ESQLSourceDescriptor } from '../../../../common/descriptor_types'; +import type { OnSourceChangeArgs } from '../source'; +import { ForceRefreshCheckbox } from '../../../components/force_refresh_checkbox'; +import { ESQLEditor } from './esql_editor'; +import { getDateFields } from './esql_utils'; + +interface Props { + onChange(...args: OnSourceChangeArgs[]): void; + sourceDescriptor: ESQLSourceDescriptor; +} + +export function UpdateSourceEditor(props: Props) { + const [dateFields, setDateFields] = useState([]); + const [isInitialized, setIsInitialized] = useState(false); + + useEffect(() => { + let ignore = false; + getDateFields(props.sourceDescriptor.esql) + .then((initialDateFields) => { + if (ignore) { + return; + } + setDateFields(initialDateFields); + setIsInitialized(true); + }) + .catch((err) => { + if (ignore) { + return; + } + setIsInitialized(true); + }); + + return () => { + ignore = true; + }; + // only run on mount + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const dateSelectOptions = useMemo(() => { + return dateFields.map((dateField) => { + return { + value: dateField, + text: dateField, + }; + }); + }, [dateFields]); + + const narrowByTimeInput = ( + { + if (!event.target.checked) { + props.onChange({ propName: 'dateField', value: undefined }); + return; + } + + if (dateFields.length) { + props.onChange({ propName: 'dateField', value: dateFields[0] }); + } + }} + disabled={dateFields.length === 0} + compressed + /> + ); + + return ( + <> + + +
+ {i18n.translate('xpack.maps.esqlSearch.sourceEditorTitle', { + defaultMessage: 'ES|QL', + })} +
+
+ + + + + { + setDateFields(change.dateFields); + const changes: OnSourceChangeArgs[] = [ + { propName: 'columns', value: change.columns }, + { propName: 'esql', value: change.esql }, + ]; + if ( + props.sourceDescriptor.dateField && + !change.dateFields.includes(props.sourceDescriptor.dateField) + ) { + changes.push({ + propName: 'dateField', + value: change.dateFields.length ? change.dateFields[0] : undefined, + }); + } + props.onChange(...changes); + }} + /> + + + + + { + props.onChange({ propName: 'narrowByMapBounds', value: event.target.checked }); + }} + compressed + /> + + + + { + props.onChange({ propName: 'narrowByGlobalSearch', value: event.target.checked }); + }} + compressed + /> + + + + {dateFields.length === 0 ? ( + + {narrowByTimeInput} + + ) : ( + narrowByTimeInput + )} + + + {props.sourceDescriptor.dateField && ( + + ) => { + props.onChange({ propName: 'dateField', value: e.target.value }); + }} + compressed + /> + + )} + + { + props.onChange({ propName: 'applyForceRefresh', value: applyForceRefresh }); + }} + /> + +
+ + + ); +} diff --git a/x-pack/plugins/maps/public/classes/sources/mvt_single_layer_vector_source/mvt_single_layer_vector_source.tsx b/x-pack/plugins/maps/public/classes/sources/mvt_single_layer_vector_source/mvt_single_layer_vector_source.tsx index a4debb51e3281..ee7e46c06ca0b 100644 --- a/x-pack/plugins/maps/public/classes/sources/mvt_single_layer_vector_source/mvt_single_layer_vector_source.tsx +++ b/x-pack/plugins/maps/public/classes/sources/mvt_single_layer_vector_source/mvt_single_layer_vector_source.tsx @@ -229,4 +229,8 @@ export class MVTSingleLayerVectorSource extends AbstractSource implements IMvtVe // Its not possible to filter by geometry for vector tile sources since there is no way to get original geometry return []; } + + getInspectorRequestIds(): string[] { + return []; + } } diff --git a/x-pack/plugins/maps/public/classes/sources/setup_sources.ts b/x-pack/plugins/maps/public/classes/sources/setup_sources.ts index 91e2f241ed83b..3e65232ff9a4f 100644 --- a/x-pack/plugins/maps/public/classes/sources/setup_sources.ts +++ b/x-pack/plugins/maps/public/classes/sources/setup_sources.ts @@ -13,6 +13,7 @@ import { ESGeoGridSource } from './es_geo_grid_source'; import { ESGeoLineSource } from './es_geo_line_source'; import { ESPewPewSource } from './es_pew_pew_source'; import { ESSearchSource } from './es_search_source'; +import { ESQLSource } from './esql_source'; import { GeoJsonFileSource } from './geojson_file_source'; import { KibanaTilemapSource } from './kibana_tilemap_source'; import { MVTSingleLayerVectorSource } from './mvt_single_layer_vector_source'; @@ -56,6 +57,11 @@ export function setupSources() { type: SOURCE_TYPES.ES_SEARCH, }); + registerSource({ + ConstructorFunction: ESQLSource, + type: SOURCE_TYPES.ESQL, + }); + registerSource({ ConstructorFunction: GeoJsonFileSource, type: SOURCE_TYPES.GEOJSON_FILE, diff --git a/x-pack/plugins/maps/public/classes/sources/source.ts b/x-pack/plugins/maps/public/classes/sources/source.ts index 0d760a9ca1d6b..a2a18b79a0928 100644 --- a/x-pack/plugins/maps/public/classes/sources/source.ts +++ b/x-pack/plugins/maps/public/classes/sources/source.ts @@ -59,6 +59,9 @@ export interface ISource { isTimeAware(): Promise; getImmutableProperties(dataFilters: DataFilters): Promise; getAttributionProvider(): (() => Promise) | null; + /* + * Returns true when source implements IESSource interface + */ isESSource(): boolean; renderSourceSettingsEditor(sourceEditorArgs: SourceEditorArgs): ReactElement | null; supportsFitToBounds(): Promise; diff --git a/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx b/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx index 5adaf6ec20c42..c5aac6a5a7efc 100644 --- a/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx +++ b/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx @@ -133,6 +133,11 @@ export interface IVectorSource extends ISource { mbFeature, onClose, }: GetFeatureActionsArgs): TooltipFeatureAction[]; + + /* + * Provide unique ids for managing source requests in Inspector + */ + getInspectorRequestIds(): string[]; } export class AbstractVectorSource extends AbstractSource implements IVectorSource { @@ -178,7 +183,7 @@ export class AbstractVectorSource extends AbstractSource implements IVectorSourc isRequestStillActive: () => boolean, inspectorAdapters: Adapters ): Promise { - throw new Error('Should implement VectorSource#getGeoJson'); + throw new Error('Should implement VectorSource#getGeoJsonWithMeta'); } hasTooltipProperties() { @@ -285,4 +290,8 @@ export class AbstractVectorSource extends AbstractSource implements IVectorSourc ] : []; } + + getInspectorRequestIds(): string[] { + return []; + } } diff --git a/x-pack/plugins/maps/public/components/force_refresh_checkbox.tsx b/x-pack/plugins/maps/public/components/force_refresh_checkbox.tsx index b705d1a6dce21..0cbd02ec7b0a7 100644 --- a/x-pack/plugins/maps/public/components/force_refresh_checkbox.tsx +++ b/x-pack/plugins/maps/public/components/force_refresh_checkbox.tsx @@ -24,12 +24,12 @@ export function ForceRefreshCheckbox({ applyForceRefresh, setApplyForceRefresh } { const renderWizardArgs = { previewLayers: props.previewLayers, mapColors: props.mapColors, + mostCommonDataViewId: props.mostCommonDataViewId, currentStepId: props.currentStepId, isOnFinalStep: props.isOnFinalStep, enableNextBtn: props.enableNextBtn, diff --git a/x-pack/plugins/maps/public/connected_components/add_layer_panel/flyout_body/index.ts b/x-pack/plugins/maps/public/connected_components/add_layer_panel/flyout_body/index.ts index ed30f290b4b98..bb80d4c8b4425 100644 --- a/x-pack/plugins/maps/public/connected_components/add_layer_panel/flyout_body/index.ts +++ b/x-pack/plugins/maps/public/connected_components/add_layer_panel/flyout_body/index.ts @@ -8,11 +8,12 @@ import { connect } from 'react-redux'; import { FlyoutBody } from './flyout_body'; import { MapStoreState } from '../../../reducers/store'; -import { getMapColors } from '../../../selectors/map_selectors'; +import { getMapColors, getMostCommonDataViewId } from '../../../selectors/map_selectors'; function mapStateToProps(state: MapStoreState) { return { mapColors: getMapColors(state), + mostCommonDataViewId: getMostCommonDataViewId(state), }; } diff --git a/x-pack/plugins/maps/public/connected_components/add_layer_panel/flyout_body/layer_wizard_select.tsx b/x-pack/plugins/maps/public/connected_components/add_layer_panel/flyout_body/layer_wizard_select.tsx index 62a69931fbacd..5c95facbde696 100644 --- a/x-pack/plugins/maps/public/connected_components/add_layer_panel/flyout_body/layer_wizard_select.tsx +++ b/x-pack/plugins/maps/public/connected_components/add_layer_panel/flyout_body/layer_wizard_select.tsx @@ -160,7 +160,13 @@ export class LayerWizardSelect extends Component { { + const counts: { [key: string]: number } = {}; + function incrementCount(ids: string[]) { + ids.forEach((id) => { + const count = counts.hasOwnProperty(id) ? counts[id] : 0; + counts[id] = count + 1; + }); + } + + if (waitingForMapReadyLayerList.length) { + waitingForMapReadyLayerList.forEach((layerDescriptor) => { + const layer = createLayerInstance(layerDescriptor, []); // custom icons not needed, layer instance only used to get index pattern ids + incrementCount(layer.getIndexPatternIds()); + }); + } else { + layerList.forEach((layer) => { + incrementCount(layer.getIndexPatternIds()); + }); + } + + let mostCommonId: string | undefined; + let mostCommonCount = 0; + Object.keys(counts).forEach((id) => { + if (counts[id] > mostCommonCount) { + mostCommonId = id; + mostCommonCount = counts[id]; + } + }); + + return mostCommonId; + } +); + export const getGeoFieldNames = createSelector( getLayerList, getWaitingForMapReadyLayerListRaw, diff --git a/x-pack/plugins/maps/server/maps_telemetry/collectors/register.ts b/x-pack/plugins/maps/server/maps_telemetry/collectors/register.ts index 35cc272725eab..f205cf531267d 100644 --- a/x-pack/plugins/maps/server/maps_telemetry/collectors/register.ts +++ b/x-pack/plugins/maps/server/maps_telemetry/collectors/register.ts @@ -120,6 +120,24 @@ export function registerMapsUsageCollector(usageCollection?: UsageCollectionSetu _meta: { description: 'total number of es machine learning anomaly layers in cluster' }, }, }, + esql: { + min: { + type: 'long', + _meta: { description: 'min number of ES|QL layers per map' }, + }, + max: { + type: 'long', + _meta: { description: 'max number of ES|QL layers per map' }, + }, + avg: { + type: 'float', + _meta: { description: 'avg number of ES|QL layers per map' }, + }, + total: { + type: 'long', + _meta: { description: 'total number of ES|QL layers in cluster' }, + }, + }, es_point_to_point: { min: { type: 'long', diff --git a/x-pack/plugins/maps/tsconfig.json b/x-pack/plugins/maps/tsconfig.json index d2972dcd3e6f3..eeef6e58815bb 100644 --- a/x-pack/plugins/maps/tsconfig.json +++ b/x-pack/plugins/maps/tsconfig.json @@ -78,6 +78,9 @@ "@kbn/search-response-warnings", "@kbn/calculate-width-from-char-count", "@kbn/content-management-table-list-view-common", + "@kbn/text-based-languages", + "@kbn/es-types", + "@kbn/data-service", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/ml/public/maps/anomaly_source.tsx b/x-pack/plugins/ml/public/maps/anomaly_source.tsx index 416a820e845b9..27d43eeb95771 100644 --- a/x-pack/plugins/ml/public/maps/anomaly_source.tsx +++ b/x-pack/plugins/ml/public/maps/anomaly_source.tsx @@ -388,4 +388,8 @@ export class AnomalySource implements IVectorSource { async getDefaultFields(): Promise>> { return {}; } + + getInspectorRequestIds() { + return []; + } } diff --git a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json index a7098dae6a150..6f7afd7d12465 100644 --- a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json +++ b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @@ -8222,6 +8222,34 @@ } } }, + "esql": { + "properties": { + "min": { + "type": "long", + "_meta": { + "description": "min number of ES|QL layers per map" + } + }, + "max": { + "type": "long", + "_meta": { + "description": "max number of ES|QL layers per map" + } + }, + "avg": { + "type": "float", + "_meta": { + "description": "avg number of ES|QL layers per map" + } + }, + "total": { + "type": "long", + "_meta": { + "description": "total number of ES|QL layers in cluster" + } + } + } + }, "es_point_to_point": { "properties": { "min": { diff --git a/x-pack/test/api_integration/apis/maps/maps_telemetry.ts b/x-pack/test/api_integration/apis/maps/maps_telemetry.ts index b82e7a5343746..92ae21c7c09c0 100644 --- a/x-pack/test/api_integration/apis/maps/maps_telemetry.ts +++ b/x-pack/test/api_integration/apis/maps/maps_telemetry.ts @@ -51,27 +51,28 @@ export default function ({ getService }: FtrProviderContext) { delete mapUsage.timeCaptured; expect(mapUsage).eql({ - mapsTotalCount: 27, + mapsTotalCount: 28, basemaps: {}, - joins: { term: { min: 1, max: 1, total: 4, avg: 0.14814814814814814 } }, + joins: { term: { min: 1, max: 1, total: 4, avg: 0.14285714285714285 } }, layerTypes: { - es_docs: { min: 1, max: 3, total: 20, avg: 0.7407407407407407 }, - es_agg_grids: { min: 1, max: 1, total: 6, avg: 0.2222222222222222 }, - es_point_to_point: { min: 1, max: 1, total: 1, avg: 0.037037037037037035 }, - es_top_hits: { min: 1, max: 1, total: 2, avg: 0.07407407407407407 }, - es_agg_heatmap: { min: 1, max: 1, total: 1, avg: 0.037037037037037035 }, - kbn_tms_raster: { min: 1, max: 1, total: 1, avg: 0.037037037037037035 }, - ems_basemap: { min: 1, max: 1, total: 1, avg: 0.037037037037037035 }, - ems_region: { min: 1, max: 1, total: 1, avg: 0.037037037037037035 }, + es_docs: { min: 1, max: 3, total: 20, avg: 0.7142857142857143 }, + es_agg_grids: { min: 1, max: 1, total: 6, avg: 0.21428571428571427 }, + es_point_to_point: { min: 1, max: 1, total: 1, avg: 0.03571428571428571 }, + es_top_hits: { min: 1, max: 1, total: 2, avg: 0.07142857142857142 }, + es_agg_heatmap: { min: 1, max: 1, total: 1, avg: 0.03571428571428571 }, + esql: { min: 1, max: 1, total: 1, avg: 0.03571428571428571 }, + kbn_tms_raster: { min: 1, max: 1, total: 1, avg: 0.03571428571428571 }, + ems_basemap: { min: 1, max: 1, total: 1, avg: 0.03571428571428571 }, + ems_region: { min: 1, max: 1, total: 1, avg: 0.03571428571428571 }, }, resolutions: { - coarse: { min: 1, max: 1, total: 4, avg: 0.14814814814814814 }, - super_fine: { min: 1, max: 1, total: 3, avg: 0.1111111111111111 }, + coarse: { min: 1, max: 1, total: 4, avg: 0.14285714285714285 }, + super_fine: { min: 1, max: 1, total: 3, avg: 0.10714285714285714 }, }, scalingOptions: { - limit: { min: 1, max: 3, total: 15, avg: 0.5555555555555556 }, - clusters: { min: 1, max: 1, total: 1, avg: 0.037037037037037035 }, - mvt: { min: 1, max: 1, total: 4, avg: 0.14814814814814814 }, + limit: { min: 1, max: 3, total: 15, avg: 0.5357142857142857 }, + clusters: { min: 1, max: 1, total: 1, avg: 0.03571428571428571 }, + mvt: { min: 1, max: 1, total: 4, avg: 0.14285714285714285 }, }, attributesPerMap: { customIconsCount: { @@ -80,51 +81,51 @@ export default function ({ getService }: FtrProviderContext) { min: 0, }, dataSourcesCount: { - avg: 1.1851851851851851, + avg: 1.1785714285714286, max: 6, min: 1, }, emsVectorLayersCount: { idThatDoesNotExitForEMSFileSource: { - avg: 0.037037037037037035, + avg: 0.03571428571428571, max: 1, min: 1, }, }, layerTypesCount: { BLENDED_VECTOR: { - avg: 0.037037037037037035, + avg: 0.03571428571428571, max: 1, min: 1, }, EMS_VECTOR_TILE: { - avg: 0.037037037037037035, + avg: 0.03571428571428571, max: 1, min: 1, }, GEOJSON_VECTOR: { - avg: 0.8148148148148148, + avg: 0.8214285714285714, max: 5, min: 1, }, HEATMAP: { - avg: 0.037037037037037035, + avg: 0.03571428571428571, max: 1, min: 1, }, MVT_VECTOR: { - avg: 0.25925925925925924, + avg: 0.25, max: 1, min: 1, }, RASTER_TILE: { - avg: 0.037037037037037035, + avg: 0.03571428571428571, max: 1, min: 1, }, }, layersCount: { - avg: 1.2222222222222223, + avg: 1.2142857142857142, max: 7, min: 1, }, diff --git a/x-pack/test/functional/apps/maps/group1/esql_source.ts b/x-pack/test/functional/apps/maps/group1/esql_source.ts new file mode 100644 index 0000000000000..8bedf59e3f6b4 --- /dev/null +++ b/x-pack/test/functional/apps/maps/group1/esql_source.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ getPageObjects, getService }: FtrProviderContext) { + const PageObjects = getPageObjects(['maps']); + const security = getService('security'); + + describe('esql', () => { + before(async () => { + await security.testUser.setRoles(['global_maps_all', 'test_logstash_reader'], { + skipBrowserRefresh: true, + }); + await PageObjects.maps.loadSavedMap('esql example'); + }); + + after(async () => { + await security.testUser.restoreDefaults(); + }); + + it('should display ES|QL statement results on map', async () => { + const tooltipText = await PageObjects.maps.getLayerTocTooltipMsg('logstash-*'); + expect(tooltipText).to.equal( + 'logstash-*\nFound 5 rows.\nResults narrowed by global time\nResults narrowed by visible map area' + ); + }); + }); +} diff --git a/x-pack/test/functional/apps/maps/group1/index.js b/x-pack/test/functional/apps/maps/group1/index.js index a22ad70f7db4c..50d3b74a0adf2 100644 --- a/x-pack/test/functional/apps/maps/group1/index.js +++ b/x-pack/test/functional/apps/maps/group1/index.js @@ -58,6 +58,7 @@ export default function ({ loadTestFile, getService }) { ); }); + loadTestFile(require.resolve('./esql_source')); loadTestFile(require.resolve('./documents_source')); loadTestFile(require.resolve('./blended_vector_layer')); loadTestFile(require.resolve('./saved_object_management')); diff --git a/x-pack/test/functional/fixtures/kbn_archiver/maps.json b/x-pack/test/functional/fixtures/kbn_archiver/maps.json index 832edf4cb705b..69d44061692b3 100644 --- a/x-pack/test/functional/fixtures/kbn_archiver/maps.json +++ b/x-pack/test/functional/fixtures/kbn_archiver/maps.json @@ -1168,3 +1168,25 @@ "updated_at": "2022-06-08T18:03:37.060Z", "version": "WzE0MSwxXQ==" } + +{ + "id": "f3bb9828-ad65-4feb-87d4-7a9f7deff8d5", + "type": "map", + "namespaces": [ + "default" + ], + "updated_at": "2023-12-17T15:28:47.759Z", + "created_at": "2023-12-17T15:28:47.759Z", + "version": "WzU0LDFd", + "attributes": { + "title": "esql example", + "description": "", + "mapStateJSON": "{\"adHocDataViews\":[],\"zoom\":4.1,\"center\":{\"lon\":-100.61091,\"lat\":33.23887},\"timeFilters\":{\"from\":\"2015-09-20T00:00:00.000Z\",\"to\":\"2015-09-20T01:00:00.000Z\"},\"refreshConfig\":{\"isPaused\":true,\"interval\":1000},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"settings\":{\"autoFitToDataBounds\":false,\"backgroundColor\":\"#ffffff\",\"customIcons\":[],\"disableInteractive\":false,\"disableTooltipControl\":false,\"hideToolbarOverlay\":false,\"hideLayerControl\":false,\"hideViewControl\":false,\"initialLocation\":\"LAST_SAVED_LOCATION\",\"fixedLocation\":{\"lat\":0,\"lon\":0,\"zoom\":2},\"browserLocation\":{\"zoom\":2},\"keydownScrollZoom\":false,\"maxZoom\":24,\"minZoom\":0,\"showScaleControl\":false,\"showSpatialFilters\":true,\"showTimesliderToggleButton\":true,\"spatialFiltersAlpa\":0.3,\"spatialFiltersFillColor\":\"#DA8B45\",\"spatialFiltersLineColor\":\"#DA8B45\"}}", + "layerListJSON": "[{\"sourceDescriptor\":{\"columns\":[{\"name\":\"geo.coordinates\",\"type\":\"geo_point\"}],\"dateField\":\"@timestamp\",\"esql\":\"from logstash-* | KEEP geo.coordinates | limit 10000\",\"id\":\"fad0e2eb-9278-415c-bdc8-1189a46eac0b\",\"type\":\"ESQL\",\"narrowByGlobalSearch\":true,\"narrowByMapBounds\":true,\"applyForceRefresh\":true},\"id\":\"59ca05b3-e3be-4fb4-ab4d-56c17b8bd589\",\"label\":null,\"minZoom\":0,\"maxZoom\":24,\"alpha\":0.75,\"visible\":true,\"style\":{\"type\":\"VECTOR\",\"properties\":{\"icon\":{\"type\":\"STATIC\",\"options\":{\"value\":\"marker\"}},\"fillColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#54B399\"}},\"lineColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#41937c\"}},\"lineWidth\":{\"type\":\"STATIC\",\"options\":{\"size\":1}},\"iconSize\":{\"type\":\"STATIC\",\"options\":{\"size\":6}},\"iconOrientation\":{\"type\":\"STATIC\",\"options\":{\"orientation\":0}},\"labelText\":{\"type\":\"STATIC\",\"options\":{\"value\":\"\"}},\"labelColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#000000\"}},\"labelSize\":{\"type\":\"STATIC\",\"options\":{\"size\":14}},\"labelZoomRange\":{\"options\":{\"useLayerZoomRange\":true,\"minZoom\":0,\"maxZoom\":24}},\"labelBorderColor\":{\"type\":\"STATIC\",\"options\":{\"color\":\"#FFFFFF\"}},\"symbolizeAs\":{\"options\":{\"value\":\"circle\"}},\"labelBorderSize\":{\"options\":{\"size\":\"SMALL\"}},\"labelPosition\":{\"options\":{\"position\":\"CENTER\"}}},\"isTimeAware\":true},\"includeInFitToBounds\":true,\"type\":\"GEOJSON_VECTOR\",\"joins\":[],\"disableTooltips\":false}]", + "uiStateJSON": "{\"isLayerTOCOpen\":true,\"openTOCDetails\":[]}" + }, + "references": [], + "managed": false, + "coreMigrationVersion": "8.8.0", + "typeMigrationVersion": "8.4.0" +} diff --git a/yarn.lock b/yarn.lock index 340ae8c920995..a13c7bdf2b847 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13565,6 +13565,15 @@ concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@~1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" +concat-stream@~1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266" + integrity sha1-cIl4Yk2FavQaWnQd790mHadSwmY= + dependencies: + inherits "~2.0.1" + readable-stream "~2.0.0" + typedarray "~0.0.5" + concaveman@*: version "1.2.0" resolved "https://registry.yarnpkg.com/concaveman/-/concaveman-1.2.0.tgz#4340f27c08a11bdc1d5fac13476862a2ab09b703" @@ -22286,7 +22295,7 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8, minimist@~1.2.5: +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8, minimist@~1.2.0, minimist@~1.2.5: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -24806,6 +24815,11 @@ process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= + process-on-spawn@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/process-on-spawn/-/process-on-spawn-1.0.0.tgz#95b05a23073d30a17acfdc92a440efd2baefdc93" @@ -25998,6 +26012,18 @@ readable-stream@^4.0.0: events "^3.3.0" process "^0.11.10" +readable-stream@~2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + readdir-glob@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.1.tgz#f0e10bb7bf7bfa7e0add8baffdc54c3f7dbee6c4" @@ -29393,7 +29419,7 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typedarray@^0.0.6: +typedarray@^0.0.6, typedarray@~0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= @@ -30870,6 +30896,14 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== +wellknown@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/wellknown/-/wellknown-0.5.0.tgz#09ae9871fa826cf0a6ec1537ef00c379d78d7101" + integrity sha1-Ca6YcfqCbPCm7BU37wDDedeNcQE= + dependencies: + concat-stream "~1.5.0" + minimist "~1.2.0" + wgs84@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/wgs84/-/wgs84-0.0.0.tgz#34fdc555917b6e57cf2a282ed043710c049cdc76" From c706de0078b7475fe931ac9d30aaf3de3a49a5ca Mon Sep 17 00:00:00 2001 From: Adam Demjen Date: Wed, 3 Jan 2024 11:08:58 -0500 Subject: [PATCH 084/323] [ML][Enterprise Search] Reword E5 model description (#174171) ## Summary Adding "third party" to E5 ML model description as per legal requirements. Screenshot 2024-01-03 at 09 11 25 Screenshot 2024-01-03 at 09 12 04 ### Checklist - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) --- x-pack/plugins/enterprise_search/server/lib/ml/utils.ts | 2 +- .../ml/public/application/model_management/add_model_flyout.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/enterprise_search/server/lib/ml/utils.ts b/x-pack/plugins/enterprise_search/server/lib/ml/utils.ts index 5d31216b22e22..19a43059d3a08 100644 --- a/x-pack/plugins/enterprise_search/server/lib/ml/utils.ts +++ b/x-pack/plugins/enterprise_search/server/lib/ml/utils.ts @@ -87,7 +87,7 @@ export const E5_MODEL_PLACEHOLDER: MlModel = { title: 'E5 (EmbEddings from bidirEctional Encoder rEpresentations)', description: i18n.translate('xpack.enterpriseSearch.modelCard.e5Placeholder.description', { defaultMessage: - 'E5 is an NLP model that enables you to perform multi-lingual semantic search by using dense vector representations. This model performs best for non-English language documents and queries.', + 'E5 is a third party NLP model that enables you to perform multi-lingual semantic search by using dense vector representations. This model performs best for non-English language documents and queries.', }), licenseType: 'mit', modelDetailsPageUrl: 'https://ela.st/multilingual-e5-small', diff --git a/x-pack/plugins/ml/public/application/model_management/add_model_flyout.tsx b/x-pack/plugins/ml/public/application/model_management/add_model_flyout.tsx index cf4efb4846fc0..cb908b8a52308 100644 --- a/x-pack/plugins/ml/public/application/model_management/add_model_flyout.tsx +++ b/x-pack/plugins/ml/public/application/model_management/add_model_flyout.tsx @@ -212,7 +212,7 @@ const ClickToDownloadTabContent: FC = ({

From 4ff1f5941f163142df29b1827a858996d743a431 Mon Sep 17 00:00:00 2001 From: Lisa Cawley Date: Wed, 3 Jan 2024 08:16:43 -0800 Subject: [PATCH 085/323] [DOCS] Warn against using ES|QL query rules on production environments (#174130) --- docs/user/alerting/rule-types/es-query.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user/alerting/rule-types/es-query.asciidoc b/docs/user/alerting/rule-types/es-query.asciidoc index a95403f2a0329..6aabe3a2c0ff7 100644 --- a/docs/user/alerting/rule-types/es-query.asciidoc +++ b/docs/user/alerting/rule-types/es-query.asciidoc @@ -44,7 +44,7 @@ For example: If you use {kibana-ref}/kuery-query.html[KQL] or {kibana-ref}/lucene-query.html[Lucene], you must specify a data view then define a text-based query. For example, `http.request.referrer: "https://example.com"`. -preview:[] If you use {ref}/esql.html[ES|QL], you must provide a source command followed by an optional series of processing commands, separated by pipe characters (|). +preview:["Do not use {esql} on production environments. This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features."] If you use {ref}/esql.html[ES|QL], you must provide a source command followed by an optional series of processing commands, separated by pipe characters (|). For example: [source,sh] From fb6b3e807045cf2de762c626e04d334fd6742b19 Mon Sep 17 00:00:00 2001 From: Jeramy Soucy Date: Wed, 3 Jan 2024 11:24:51 -0500 Subject: [PATCH 086/323] =?UTF-8?q?Upgrade=20lmdb@2.6.9=E2=86=922.9.2=20(#?= =?UTF-8?q?174108)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Upgrades `lmdb` from v2.6.9 to v2.9.2, and `msgpackr` from v1.7.2 to v1.10.1. --- package.json | 2 +- yarn.lock | 183 ++++++++++++++++++++++++++------------------------- 2 files changed, 96 insertions(+), 89 deletions(-) diff --git a/package.json b/package.json index eb171c92f1b5c..4f6aef817d579 100644 --- a/package.json +++ b/package.json @@ -1583,7 +1583,7 @@ "jsondiffpatch": "0.4.1", "license-checker": "^25.0.1", "listr": "^0.14.1", - "lmdb": "^2.6.9", + "lmdb": "^2.9.2", "loader-utils": "^2.0.4", "marge": "^1.0.1", "micromatch": "^4.0.5", diff --git a/yarn.lock b/yarn.lock index a13c7bdf2b847..ad697a39b4b23 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6519,35 +6519,35 @@ resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== -"@lmdb/lmdb-darwin-arm64@2.6.9": - version "2.6.9" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.6.9.tgz#4b84bb0ad71e78472332920c9cf8603ea3dad0bc" - integrity sha512-QxyheKfTP9k5ZVAiddCqGUtp2AD3/BMgYfski96iIbFH0skPFO+MYARMGZuemTgyM9uieT+5oKj4FjigWplpWg== +"@lmdb/lmdb-darwin-arm64@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.9.2.tgz#da42cda48018eabfd678b9698e68a0102221b4ba" + integrity sha512-+GX51Fi8nZOrEXCFiQHnrCpKAzkfDA2sY5+M6Ry4wZEu711o2qlvg+7xXP+j7OT7+JsfB9ayGCdhra2AAaX02g== -"@lmdb/lmdb-darwin-x64@2.6.9": - version "2.6.9" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.6.9.tgz#28b191a9f7a1f30462d8d179cd05598fa66ebbfc" - integrity sha512-zJ1oUepZMaqiujvWeWJRG5VHXBS3opJnjAzbd4vTVsQFT0t5rbPhHgAJ2ruR9rVrb2V1BINJZuwpjhIOg9fLCQ== +"@lmdb/lmdb-darwin-x64@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.9.2.tgz#fb24813693175a858727d61b3dc33c277a739987" + integrity sha512-ajkq2oZTd/RXXpgaZqVm6LHoJYf4A42q+S+U4gYKRYpeR4ERGvG+VGCK9bi9MXInQfeq0KM1yv6rsYpvCOoNhQ== -"@lmdb/lmdb-linux-arm64@2.6.9": - version "2.6.9" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.6.9.tgz#274dfe11209a70c059cb55c72026c24903dde3e1" - integrity sha512-KZRet8POwKowbYZqrRqdYJ+B6l+7cWG18vMCe2sgOSuE41sEMpfRQ1mKcolt3fsr0KVbuP63aPG+dwi0wGpX9w== +"@lmdb/lmdb-linux-arm64@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.9.2.tgz#1fc10dfd165b7199b47c41ce9de99b22f46a8da4" + integrity sha512-WqQqWwFyL8JPVpKJyKnyyg7tnsVlD08PHEyxSMxDQC2EkPpvZuUz2oMqasDoy5tmYB0jANOI13/Qz3Mbh9endQ== -"@lmdb/lmdb-linux-arm@2.6.9": - version "2.6.9" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.6.9.tgz#7bacd104067e7dbb1bb67c907c1bc642e2d2ac96" - integrity sha512-Umw+ikxbsYZHHqr8eMycmApj6IIZCK4k1rp5/pqqx9FvAaPv4/Y63owiMLoKfipjel0YPaNyvSeXAJK3l/8Pbw== +"@lmdb/lmdb-linux-arm@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.9.2.tgz#2d4203c85e895cb75ffd6488791cc18de871a6b2" + integrity sha512-AAdmxDIh1tMYzXOUuDP+TNhvl9pLgvS63M6xhwgVArr79As4msraUSjIJ8J0jlhFKsN7nVoXzPB/jvpp8aK49w== -"@lmdb/lmdb-linux-x64@2.6.9": - version "2.6.9" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.6.9.tgz#d37b25c9b553c5d5e66055a64d118e3fd42557d9" - integrity sha512-11xFQ4kCIPGnYULcfkW4SIMIY1sukA4DHez62DKvYn+tLr4AB1o9jm1Jk6bisKFh5Cql+JUr7klHxeIuxvGZdg== +"@lmdb/lmdb-linux-x64@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.9.2.tgz#dc0f71c092c005b2ad9ddd3502151ecce7692702" + integrity sha512-rB4tE80EOxXwTJr9rsATWZghOVP8+mV085P5u/dBdttJSq3TLxY0CMZ8NKB/WJpryNnsfCI4OvjOAibF/fg+GQ== -"@lmdb/lmdb-win32-x64@2.6.9": - version "2.6.9" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.6.9.tgz#bf8e647dabd8b672744315f5df3e363b5987a463" - integrity sha512-qECZ+1j3PSarYeCmJlYlrxq3TB7S020ICrYmpxyQyphbRiMI9I1Bw4t+vPrMAEKsTqB8UaOzBp21YWUpsiCBfA== +"@lmdb/lmdb-win32-x64@2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.9.2.tgz#84f561d05329c671f6e4119b483ce54410772bb6" + integrity sha512-VRrM/Zq/k8YEZlGuDvFi3NU753cm+vOa1kUcq4iNyeAEVXzjrSg5K3sHI0d6Od5gLsKctjlQeaFn6+21inU4bw== "@loaders.gl/core@^3.4.7": version "3.4.7" @@ -6818,35 +6818,35 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@msgpackr-extract/msgpackr-extract-darwin-arm64@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-2.2.0.tgz#901c5937e1441572ea23e631fe6deca68482fe76" - integrity sha512-Z9LFPzfoJi4mflGWV+rv7o7ZbMU5oAU9VmzCgL240KnqDW65Y2HFCT3MW06/ITJSnbVLacmcEJA8phywK7JinQ== +"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz#44d752c1a2dc113f15f781b7cc4f53a307e3fa38" + integrity sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ== -"@msgpackr-extract/msgpackr-extract-darwin-x64@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-2.2.0.tgz#fb877fe6bae3c4d3cea29786737840e2ae689066" - integrity sha512-vq0tT8sjZsy4JdSqmadWVw6f66UXqUCabLmUVHZwUFzMgtgoIIQjT4VVRHKvlof3P/dMCkbMJ5hB1oJ9OWHaaw== +"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz#f954f34355712212a8e06c465bc06c40852c6bb3" + integrity sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw== -"@msgpackr-extract/msgpackr-extract-linux-arm64@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-2.2.0.tgz#986179c38b10ac41fbdaf7d036c825cbc72855d9" - integrity sha512-hlxxLdRmPyq16QCutUtP8Tm6RDWcyaLsRssaHROatgnkOxdleMTgetf9JsdncL8vLh7FVy/RN9i3XR5dnb9cRA== +"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz#45c63037f045c2b15c44f80f0393fa24f9655367" + integrity sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg== -"@msgpackr-extract/msgpackr-extract-linux-arm@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-2.2.0.tgz#15f2c6fe9e0adc06c21af7e95f484ff4880d79ce" - integrity sha512-SaJ3Qq4lX9Syd2xEo9u3qPxi/OB+5JO/ngJKK97XDpa1C587H9EWYO6KD8995DAjSinWvdHKRrCOXVUC5fvGOg== +"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz#35707efeafe6d22b3f373caf9e8775e8920d1399" + integrity sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA== -"@msgpackr-extract/msgpackr-extract-linux-x64@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-2.2.0.tgz#30cae5c9a202f3e1fa1deb3191b18ffcb2f239a2" - integrity sha512-94y5PJrSOqUNcFKmOl7z319FelCLAE0rz/jPCWS+UtdMZvpa4jrQd+cJPQCLp2Fes1yAW/YUQj/Di6YVT3c3Iw== +"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz#091b1218b66c341f532611477ef89e83f25fae4f" + integrity sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA== -"@msgpackr-extract/msgpackr-extract-win32-x64@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-2.2.0.tgz#016d855b6bc459fd908095811f6826e45dd4ba64" - integrity sha512-XrC0JzsqQSvOyM3t04FMLO6z5gCuhPE6k4FXuLK5xf52ZbdvcFe1yBmo7meCew9B8G2f0T9iu9t3kfTYRYROgA== +"@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz#0f164b726869f71da3c594171df5ebc1c4b0a407" + integrity sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ== "@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": version "2.1.8-no-fsevents.3" @@ -21174,23 +21174,23 @@ listr@^0.14.1: p-map "^2.0.0" rxjs "^6.3.3" -lmdb@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.6.9.tgz#aa782ec873bcf70333b251eede9e711819ef5765" - integrity sha512-rVA3OchNoKxoD2rYhtc9nooqbJmId+vvfPzTWhanRPhdVr0hbgnF9uB9ZEHFU2lEeYVdh83Pt2H6DudeWuz+JA== +lmdb@^2.9.2: + version "2.9.2" + resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.9.2.tgz#a67ed24cad282ba7ad21daf2a8a13c08dcb33f56" + integrity sha512-Q5SQzu4u4sdz4U8QT1uCS04beS7hS/1YYb1suJwaijqVETGAkrPBKr0ERxTeza/u2F6ei5+8UTnzm4ae3PJG3w== dependencies: - msgpackr "1.7.2" - node-addon-api "^4.3.0" - node-gyp-build-optional-packages "5.0.3" - ordered-binary "^1.4.0" + msgpackr "^1.9.9" + node-addon-api "^6.1.0" + node-gyp-build-optional-packages "5.1.1" + ordered-binary "^1.4.1" weak-lru-cache "^1.2.2" optionalDependencies: - "@lmdb/lmdb-darwin-arm64" "2.6.9" - "@lmdb/lmdb-darwin-x64" "2.6.9" - "@lmdb/lmdb-linux-arm" "2.6.9" - "@lmdb/lmdb-linux-arm64" "2.6.9" - "@lmdb/lmdb-linux-x64" "2.6.9" - "@lmdb/lmdb-win32-x64" "2.6.9" + "@lmdb/lmdb-darwin-arm64" "2.9.2" + "@lmdb/lmdb-darwin-x64" "2.9.2" + "@lmdb/lmdb-linux-arm" "2.9.2" + "@lmdb/lmdb-linux-arm64" "2.9.2" + "@lmdb/lmdb-linux-x64" "2.9.2" + "@lmdb/lmdb-win32-x64" "2.9.2" load-json-file@^1.0.0: version "1.1.0" @@ -22673,26 +22673,26 @@ ms@2.1.3, ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -msgpackr-extract@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-2.2.0.tgz#4bb749b58d9764cfdc0d91c7977a007b08e8f262" - integrity sha512-0YcvWSv7ZOGl9Od6Y5iJ3XnPww8O7WLcpYMDwX+PAA/uXLDtyw94PJv9GLQV/nnp3cWlDhMoyKZIQLrx33sWog== +msgpackr-extract@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz#e05ec1bb4453ddf020551bcd5daaf0092a2c279d" + integrity sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A== dependencies: - node-gyp-build-optional-packages "5.0.3" + node-gyp-build-optional-packages "5.0.7" optionalDependencies: - "@msgpackr-extract/msgpackr-extract-darwin-arm64" "2.2.0" - "@msgpackr-extract/msgpackr-extract-darwin-x64" "2.2.0" - "@msgpackr-extract/msgpackr-extract-linux-arm" "2.2.0" - "@msgpackr-extract/msgpackr-extract-linux-arm64" "2.2.0" - "@msgpackr-extract/msgpackr-extract-linux-x64" "2.2.0" - "@msgpackr-extract/msgpackr-extract-win32-x64" "2.2.0" - -msgpackr@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.7.2.tgz#68d6debf5999d6b61abb6e7046a689991ebf7261" - integrity sha512-mWScyHTtG6TjivXX9vfIy2nBtRupaiAj0HQ2mtmpmYujAmqZmaaEVPaSZ1NKLMvicaMLFzEaMk0ManxMRg8rMQ== + "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.2" + +msgpackr@^1.9.9: + version "1.10.1" + resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.10.1.tgz#51953bb4ce4f3494f0c4af3f484f01cfbb306555" + integrity sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ== optionalDependencies: - msgpackr-extract "^2.1.2" + msgpackr-extract "^3.0.2" multicast-dns@^7.2.5: version "7.2.5" @@ -22903,11 +22903,6 @@ node-addon-api@^3.0.0, node-addon-api@^3.2.1: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== -node-addon-api@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" - integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== - node-addon-api@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" @@ -22965,6 +22960,18 @@ node-gyp-build-optional-packages@5.0.3: resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz#92a89d400352c44ad3975010368072b41ad66c17" integrity sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA== +node-gyp-build-optional-packages@5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz#5d2632bbde0ab2f6e22f1bbac2199b07244ae0b3" + integrity sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w== + +node-gyp-build-optional-packages@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz#52b143b9dd77b7669073cbfe39e3f4118bfc603c" + integrity sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw== + dependencies: + detect-libc "^2.0.1" + node-gyp-build@^4.2.2, node-gyp-build@^4.2.3, node-gyp-build@^4.3.0: version "4.5.0" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" @@ -23559,10 +23566,10 @@ ora@^5.4.1: strip-ansi "^6.0.0" wcwidth "^1.0.1" -ordered-binary@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.4.0.tgz#6bb53d44925f3b8afc33d1eed0fa15693b211389" - integrity sha512-EHQ/jk4/a9hLupIKxTfUsQRej1Yd/0QLQs3vGvIqg5ZtCYSzNhkzHoZc7Zf4e4kUlDaC3Uw8Q/1opOLNN2OKRQ== +ordered-binary@^1.4.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.5.1.tgz#94ccbf14181711081ee23931db0dc3f58aaa0df6" + integrity sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A== original-url@^1.2.3: version "1.2.3" From 7c2b3f1301803bec477af3f1e9657b8c2821619d Mon Sep 17 00:00:00 2001 From: Jon Date: Wed, 3 Jan 2024 10:29:14 -0600 Subject: [PATCH 087/323] [build] Remove ubi8 (#173873) RHEL 8.10 will be the final ubi8 release. We already have builds in place for transitioning to ubi9. Depends on https://github.com/elastic/kibana/pull/170264. --- .../scripts/steps/artifacts/docker_context.sh | 4 ---- .../tasks/os_packages/create_os_package_tasks.ts | 15 ++------------- .../tasks/os_packages/docker_generator/run.ts | 8 +++----- .../docker_generator/template_context.ts | 2 +- .../templates/dockerfile.template.ts | 4 ++-- 5 files changed, 8 insertions(+), 25 deletions(-) diff --git a/.buildkite/scripts/steps/artifacts/docker_context.sh b/.buildkite/scripts/steps/artifacts/docker_context.sh index de90621ada2d9..ad09e00124ab1 100755 --- a/.buildkite/scripts/steps/artifacts/docker_context.sh +++ b/.buildkite/scripts/steps/artifacts/docker_context.sh @@ -23,11 +23,7 @@ case $KIBANA_DOCKER_CONTEXT in cloud) DOCKER_CONTEXT_FILE="kibana-cloud-$FULL_VERSION-docker-build-context.tar.gz" ;; - ubi8) - DOCKER_CONTEXT_FILE="kibana-ubi8-$FULL_VERSION-docker-build-context.tar.gz" - ;; ubi) - # Currently ubi9. After ubi8 we're moving to a version agnostic filename DOCKER_CONTEXT_FILE="kibana-ubi-$FULL_VERSION-docker-build-context.tar.gz" ;; ironbank) diff --git a/src/dev/build/tasks/os_packages/create_os_package_tasks.ts b/src/dev/build/tasks/os_packages/create_os_package_tasks.ts index 8563c19f9d538..7cb9697364c75 100644 --- a/src/dev/build/tasks/os_packages/create_os_package_tasks.ts +++ b/src/dev/build/tasks/os_packages/create_os_package_tasks.ts @@ -109,13 +109,7 @@ export const CreateDockerUBI: Task = { async run(config, log, build) { await runDockerGenerator(config, log, build, { architecture: 'x64', - baseImage: 'ubi8', - context: false, - image: true, - }); - await runDockerGenerator(config, log, build, { - architecture: 'x64', - baseImage: 'ubi9', + baseImage: 'ubi', context: false, image: true, }); @@ -154,12 +148,7 @@ export const CreateDockerContexts: Task = { dockerBuildDate, }); await runDockerGenerator(config, log, build, { - baseImage: 'ubi8', - context: true, - image: false, - }); - await runDockerGenerator(config, log, build, { - baseImage: 'ubi9', + baseImage: 'ubi', context: true, image: false, }); diff --git a/src/dev/build/tasks/os_packages/docker_generator/run.ts b/src/dev/build/tasks/os_packages/docker_generator/run.ts index eb7a03a9e933f..16c48ad492187 100644 --- a/src/dev/build/tasks/os_packages/docker_generator/run.ts +++ b/src/dev/build/tasks/os_packages/docker_generator/run.ts @@ -29,7 +29,7 @@ export async function runDockerGenerator( build: Build, flags: { architecture?: string; - baseImage: 'none' | 'ubi9' | 'ubi8' | 'ubuntu'; + baseImage: 'none' | 'ubi' | 'ubuntu'; context: boolean; image: boolean; ironbank?: boolean; @@ -40,12 +40,10 @@ export async function runDockerGenerator( ) { let baseImageName = ''; if (flags.baseImage === 'ubuntu') baseImageName = 'ubuntu:20.04'; - if (flags.baseImage === 'ubi8') baseImageName = 'docker.elastic.co/ubi8/ubi-minimal:latest'; - if (flags.baseImage === 'ubi9') baseImageName = 'docker.elastic.co/ubi9/ubi-minimal:latest'; + if (flags.baseImage === 'ubi') baseImageName = 'docker.elastic.co/ubi9/ubi-minimal:latest'; let imageFlavor = ''; - if (flags.baseImage === 'ubi8') imageFlavor += `-ubi8`; - if (flags.baseImage === 'ubi9') imageFlavor += `-ubi`; + if (flags.baseImage === 'ubi') imageFlavor += `-ubi`; if (flags.ironbank) imageFlavor += '-ironbank'; if (flags.cloud) imageFlavor += '-cloud'; if (flags.serverless) imageFlavor += '-serverless'; diff --git a/src/dev/build/tasks/os_packages/docker_generator/template_context.ts b/src/dev/build/tasks/os_packages/docker_generator/template_context.ts index 61609203edcc0..edd0aed87e281 100644 --- a/src/dev/build/tasks/os_packages/docker_generator/template_context.ts +++ b/src/dev/build/tasks/os_packages/docker_generator/template_context.ts @@ -24,7 +24,7 @@ export interface TemplateContext { dockerBuildDate: string; usePublicArtifact?: boolean; publicArtifactSubdomain: string; - baseImage: 'none' | 'ubi8' | 'ubi9' | 'ubuntu'; + baseImage: 'none' | 'ubi' | 'ubuntu'; baseImageName: string; cloud?: boolean; serverless?: boolean; diff --git a/src/dev/build/tasks/os_packages/docker_generator/templates/dockerfile.template.ts b/src/dev/build/tasks/os_packages/docker_generator/templates/dockerfile.template.ts index 456a09ccc3db3..57fc4d93a760a 100755 --- a/src/dev/build/tasks/os_packages/docker_generator/templates/dockerfile.template.ts +++ b/src/dev/build/tasks/os_packages/docker_generator/templates/dockerfile.template.ts @@ -16,8 +16,8 @@ function generator(options: TemplateContext) { const dir = options.ironbank ? 'ironbank' : 'base'; const template = readFileSync(resolve(__dirname, dir, './Dockerfile')); return Mustache.render(template.toString(), { - packageManager: options.baseImage.includes('ubi') ? 'microdnf' : 'apt-get', - ubi: options.baseImage.includes('ubi'), + packageManager: options.baseImage === 'ubi' ? 'microdnf' : 'apt-get', + ubi: options.baseImage === 'ubi', ubuntu: options.baseImage === 'ubuntu', opensslLegacyProvider: !(options.cloud || options.serverless), ...options, From 9dc9d8ff8ffbb9d4be85a69e4de1c3a082c115ed Mon Sep 17 00:00:00 2001 From: Shahzad Date: Wed, 3 Jan 2024 17:40:17 +0100 Subject: [PATCH 088/323] [SLOs] Configuration inspect api and flyout (#173723) ## Summary It will show all the associated configs at one place in json form, configuration, ingest pipeline config, roll up transform and summary transform config !! Motivation is to understand things while onboarding devs to slo and during normal development. https://github.com/elastic/kibana/assets/3505601/a22ad292-ba59-4145-989e-80803b6a1e3e --- .../kbn-slo-schema/src/rest_specs/slo.ts | 1 + .../plugins/ingest_pipelines/public/index.ts | 3 + x-pack/plugins/observability/kibana.jsonc | 3 +- .../public/application/index.tsx | 1 + .../context/plugin_context/plugin_context.tsx | 1 + .../public/hooks/slo/use_inspect_slo.ts | 41 +++ .../components/common/inspect_slo_portal.tsx | 26 ++ .../components/common/slo_inspect.tsx | 270 ++++++++++++++++++ .../slo_edit/components/slo_edit_form.tsx | 4 +- .../public/pages/slo_edit/slo_edit.tsx | 5 +- .../observability/server/routes/slo/route.ts | 37 +++ .../server/services/slo/create_slo.ts | 29 +- .../server/services/slo/mocks/index.ts | 2 + .../services/slo/summay_transform_manager.ts | 5 + .../server/services/slo/transform_manager.ts | 12 + x-pack/plugins/observability/tsconfig.json | 1 + 16 files changed, 437 insertions(+), 4 deletions(-) create mode 100644 x-pack/plugins/observability/public/hooks/slo/use_inspect_slo.ts create mode 100644 x-pack/plugins/observability/public/pages/slo_edit/components/common/inspect_slo_portal.tsx create mode 100644 x-pack/plugins/observability/public/pages/slo_edit/components/common/slo_inspect.tsx diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts b/x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts index 574a7eb1f9244..38233d2982c08 100644 --- a/x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts +++ b/x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts @@ -50,6 +50,7 @@ const createSLOParamsSchema = t.type({ settings: optionalSettingsSchema, tags: tagsSchema, groupBy: allOrAnyString, + revision: t.number, }), ]), }); diff --git a/x-pack/plugins/ingest_pipelines/public/index.ts b/x-pack/plugins/ingest_pipelines/public/index.ts index d120f60ef8a2d..b269245faf520 100644 --- a/x-pack/plugins/ingest_pipelines/public/index.ts +++ b/x-pack/plugins/ingest_pipelines/public/index.ts @@ -10,3 +10,6 @@ import { IngestPipelinesPlugin } from './plugin'; export function plugin() { return new IngestPipelinesPlugin(); } + +export { INGEST_PIPELINES_APP_LOCATOR, INGEST_PIPELINES_PAGES } from './locator'; +export type { IngestPipelinesListParams } from './locator'; diff --git a/x-pack/plugins/observability/kibana.jsonc b/x-pack/plugins/observability/kibana.jsonc index d5633ad9f36fe..526c283c0f0be 100644 --- a/x-pack/plugins/observability/kibana.jsonc +++ b/x-pack/plugins/observability/kibana.jsonc @@ -57,7 +57,8 @@ "unifiedSearch", "stackAlerts", "spaces", - "embeddable" + "embeddable", + "ingestPipelines" ], "extraPublicDirs": [ "common" diff --git a/x-pack/plugins/observability/public/application/index.tsx b/x-pack/plugins/observability/public/application/index.tsx index 23a0952ed91db..1166755ca1457 100644 --- a/x-pack/plugins/observability/public/application/index.tsx +++ b/x-pack/plugins/observability/public/application/index.tsx @@ -104,6 +104,7 @@ export const renderApp = ({ > ; + +interface SLOInspectResponse { + slo: SLOResponse; + pipeline: Record; + rollUpTransform: TransformPutTransformRequest; + summaryTransform: TransformPutTransformRequest; + temporaryDoc: Record; +} + +export function useInspectSlo() { + const { http } = useKibana().services; + + return useMutation< + SLOInspectResponse, + ServerError, + { slo: CreateSLOInput }, + { previousData?: FindSLOResponse; queryKey?: QueryKey } + >( + ['inspectSlo'], + ({ slo }) => { + const body = JSON.stringify(slo); + return http.post(`/internal/api/observability/slos/_inspect`, { body }); + }, + {} + ); +} diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/common/inspect_slo_portal.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/common/inspect_slo_portal.tsx new file mode 100644 index 0000000000000..d03772c9bf4ce --- /dev/null +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/common/inspect_slo_portal.tsx @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { InPortal } from 'react-reverse-portal'; +import { GetSLOResponse } from '@kbn/slo-schema'; +import { CreateSLOForm } from '../../types'; +import { SLOInspectWrapper } from './slo_inspect'; +import { InspectSLOPortalNode } from '../../slo_edit'; + +export interface SloInspectPortalProps { + getValues: () => CreateSLOForm; + trigger: () => Promise; + slo?: GetSLOResponse; +} +export function InspectSLOPortal(props: SloInspectPortalProps) { + return ( + + + + ); +} diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/common/slo_inspect.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/common/slo_inspect.tsx new file mode 100644 index 0000000000000..2c96c0d2d05bc --- /dev/null +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/common/slo_inspect.tsx @@ -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 React, { ReactNode, useState } from 'react'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { useFetcher } from '@kbn/observability-shared-plugin/public'; +import { + EuiFlyout, + EuiButton, + EuiCodeBlock, + EuiFlyoutHeader, + EuiTitle, + EuiFlyoutFooter, + EuiSpacer, + EuiFlyoutBody, + EuiToolTip, + EuiFlexGroup, + EuiFlexItem, + EuiLoadingSpinner, + EuiAccordion, + EuiButtonIcon, +} from '@elastic/eui'; +import { + INGEST_PIPELINES_APP_LOCATOR, + INGEST_PIPELINES_PAGES, + IngestPipelinesListParams, +} from '@kbn/ingest-pipelines-plugin/public'; +import { SloInspectPortalProps } from './inspect_slo_portal'; +import { ObservabilityPublicPluginsStart } from '../../../..'; +import { useInspectSlo } from '../../../../hooks/slo/use_inspect_slo'; +import { transformCreateSLOFormToCreateSLOInput } from '../../helpers/process_slo_form_values'; +import { enableInspectEsQueries } from '../../../../../common'; +import { usePluginContext } from '../../../../hooks/use_plugin_context'; + +export function SLOInspectWrapper(props: SloInspectPortalProps) { + const { + services: { uiSettings }, + } = useKibana(); + + const { isDev } = usePluginContext(); + + const isInspectorEnabled = uiSettings?.get(enableInspectEsQueries); + + return isDev || isInspectorEnabled ? : null; +} + +function SLOInspect({ getValues, trigger, slo }: SloInspectPortalProps) { + const { share, http } = useKibana().services; + const [isFlyoutVisible, setIsFlyoutVisible] = useState(false); + const { mutateAsync: inspectSlo, data, isLoading } = useInspectSlo(); + + const { data: sloData } = useFetcher(async () => { + if (!isFlyoutVisible) { + return; + } + const isValid = await trigger(); + if (!isValid) { + return; + } + const sloForm = transformCreateSLOFormToCreateSLOInput(getValues()); + inspectSlo({ slo: { ...sloForm, id: slo?.id, revision: slo?.revision } }); + return sloForm; + }, [isFlyoutVisible, trigger, getValues, inspectSlo, slo]); + + const { data: pipeLineUrl } = useFetcher(async () => { + const ingestPipeLocator = share.url.locators.get( + INGEST_PIPELINES_APP_LOCATOR + ); + const ingestPipeLineId = data?.pipeline?.id; + return ingestPipeLocator?.getUrl({ + pipelineId: ingestPipeLineId, + page: INGEST_PIPELINES_PAGES.LIST, + }); + }, [data?.pipeline?.id, share.url.locators]); + + const closeFlyout = () => { + setIsFlyoutVisible(false); + setIsInspecting(false); + }; + + const [isInspecting, setIsInspecting] = useState(false); + const onButtonClick = () => { + trigger().then((isValid) => { + if (isValid) { + setIsInspecting(() => !isInspecting); + setIsFlyoutVisible(() => !isFlyoutVisible); + } + }); + }; + + let flyout; + + if (isFlyoutVisible) { + flyout = ( + + + +

{CONFIG_LABEL}

+
+
+ + {isLoading && } + + {data && ( + <> + + + + } + /> + + + + } + /> + + + + } + json={data.pipeline} + /> + + + + + )} + + + + {i18n.translate('xpack.observability.sLOInspect.closeButtonLabel', { + defaultMessage: 'Close', + })} + + +
+ ); + } + return ( + <> + + + {SLO_INSPECT_LABEL} + + + + {flyout} + + ); +} + +function CodeBlockAccordion({ + id, + label, + json, + extraAction, +}: { + id: string; + label: string; + json: any; + extraAction?: ReactNode; +}) { + return ( + +

{label}

+ + } + > + + {JSON.stringify(json, null, 2)} + +
+ ); +} + +export function LoadingState() { + return ( + + + + + + ); +} + +const SLO_INSPECT_LABEL = i18n.translate('xpack.observability.sLOInspect.sLOInspectButtonLabel', { + defaultMessage: 'SLO Inspect', +}); + +const VIEW_FORMATTED_CONFIG_LABEL = i18n.translate( + 'xpack.observability.slo.viewFormattedResourcesConfigsButtonLabel', + { defaultMessage: 'View formatted resources configs for SLO' } +); + +const VALID_CONFIG_LABEL = i18n.translate('xpack.observability.slo.formattedConfigLabel.valid', { + defaultMessage: 'Only valid form configurations can be inspected.', +}); + +const CONFIG_LABEL = i18n.translate('xpack.observability.monitorInspect.configLabel', { + defaultMessage: 'SLO Configurations', +}); diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form.tsx index 0e3c491bdd7c2..bf32535118293 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form.tsx @@ -18,6 +18,7 @@ import { i18n } from '@kbn/i18n'; import type { GetSLOResponse } from '@kbn/slo-schema'; import React, { useCallback, useEffect, useState } from 'react'; import { FormProvider, useForm } from 'react-hook-form'; +import { InspectSLOPortal } from './common/inspect_slo_portal'; import { EquivalentApiRequest } from './common/equivalent_api_request'; import { BurnRateRuleFlyout } from '../../slos/components/common/burn_rate_rule_flyout'; import { paths } from '../../../../common/locators/paths'; @@ -191,7 +192,7 @@ export function SloEditForm({ slo }: Props) { defaultMessage: 'SLO burn rate alert rule', })} - {' '} +
+ ], + rightSideItems: [, ], bottomBorder: false, }} data-test-subj="slosEditPage" diff --git a/x-pack/plugins/observability/server/routes/slo/route.ts b/x-pack/plugins/observability/server/routes/slo/route.ts index 7ad4b7c36dcc7..0ce51e284e949 100644 --- a/x-pack/plugins/observability/server/routes/slo/route.ts +++ b/x-pack/plugins/observability/server/routes/slo/route.ts @@ -114,6 +114,42 @@ const createSLORoute = createObservabilityServerRoute({ }, }); +const inspectSLORoute = createObservabilityServerRoute({ + endpoint: 'POST /internal/api/observability/slos/_inspect 2023-10-31', + options: { + tags: ['access:slo_write'], + access: 'public', + }, + params: createSLOParamsSchema, + handler: async ({ context, params, logger, dependencies, request }) => { + await assertPlatinumLicense(context); + + const spaceId = + (await dependencies.spaces?.spacesService?.getActiveSpace(request))?.id ?? 'default'; + + const esClient = (await context.core).elasticsearch.client.asCurrentUser; + const soClient = (await context.core).savedObjects.client; + const repository = new KibanaSavedObjectsSLORepository(soClient); + const transformManager = new DefaultTransformManager(transformGenerators, esClient, logger); + const summaryTransformManager = new DefaultSummaryTransformManager( + new DefaultSummaryTransformGenerator(), + esClient, + logger + ); + + const createSLO = new CreateSLO( + esClient, + repository, + transformManager, + summaryTransformManager, + logger, + spaceId + ); + + return createSLO.inspect(params.body); + }, +}); + const updateSLORoute = createObservabilityServerRoute({ endpoint: 'PUT /api/observability/slos/{id} 2023-10-31', options: { @@ -481,6 +517,7 @@ const getPreviewData = createObservabilityServerRoute({ export const sloRouteRepository = { ...createSLORoute, + ...inspectSLORoute, ...deleteSLORoute, ...deleteSloInstancesRoute, ...disableSLORoute, diff --git a/x-pack/plugins/observability/server/services/slo/create_slo.ts b/x-pack/plugins/observability/server/services/slo/create_slo.ts index d7e116d983584..89e8c7165f395 100644 --- a/x-pack/plugins/observability/server/services/slo/create_slo.ts +++ b/x-pack/plugins/observability/server/services/slo/create_slo.ts @@ -8,6 +8,7 @@ import { ElasticsearchClient, Logger } from '@kbn/core/server'; import { ALL_VALUE, CreateSLOParams, CreateSLOResponse } from '@kbn/slo-schema'; import { v4 as uuidv4 } from 'uuid'; +import { TransformPutTransformRequest } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { getSLOSummaryPipelineId, getSLOSummaryTransformId, @@ -83,6 +84,32 @@ export class CreateSLO { return this.toResponse(slo); } + public inspect(params: CreateSLOParams): { + slo: CreateSLOParams; + pipeline: Record; + rollUpTransform: TransformPutTransformRequest; + summaryTransform: TransformPutTransformRequest; + temporaryDoc: Record; + } { + const slo = this.toSLO(params); + validateSLO(slo); + + const rollUpTransform = this.transformManager.inspect(slo); + const pipeline = getSLOSummaryPipelineTemplate(slo, this.spaceId); + + const summaryTransform = this.summaryTransformManager.inspect(slo); + + const temporaryDoc = createTempSummaryDocument(slo, this.spaceId); + + return { + pipeline, + temporaryDoc, + summaryTransform, + rollUpTransform, + slo, + }; + } + private toSLO(params: CreateSLOParams): SLO { const now = new Date(); return { @@ -92,7 +119,7 @@ export class CreateSLO { syncDelay: params.settings?.syncDelay ?? new Duration(1, DurationUnit.Minute), frequency: params.settings?.frequency ?? new Duration(1, DurationUnit.Minute), }, - revision: 1, + revision: params.revision ?? 1, enabled: true, tags: params.tags ?? [], createdAt: now, diff --git a/x-pack/plugins/observability/server/services/slo/mocks/index.ts b/x-pack/plugins/observability/server/services/slo/mocks/index.ts index eb8db093a7174..d6c932fcbca00 100644 --- a/x-pack/plugins/observability/server/services/slo/mocks/index.ts +++ b/x-pack/plugins/observability/server/services/slo/mocks/index.ts @@ -25,6 +25,7 @@ const createTransformManagerMock = (): jest.Mocked => { uninstall: jest.fn(), start: jest.fn(), stop: jest.fn(), + inspect: jest.fn(), }; }; @@ -35,6 +36,7 @@ const createSummaryTransformManagerMock = (): jest.Mocked => { uninstall: jest.fn(), start: jest.fn(), stop: jest.fn(), + inspect: jest.fn(), }; }; diff --git a/x-pack/plugins/observability/server/services/slo/summay_transform_manager.ts b/x-pack/plugins/observability/server/services/slo/summay_transform_manager.ts index bc22f801c9fcc..57349105e020a 100644 --- a/x-pack/plugins/observability/server/services/slo/summay_transform_manager.ts +++ b/x-pack/plugins/observability/server/services/slo/summay_transform_manager.ts @@ -7,6 +7,7 @@ import { ElasticsearchClient, Logger } from '@kbn/core/server'; +import { TransformPutTransformRequest } from '@elastic/elasticsearch/lib/api/types'; import { SLO } from '../../domain/models'; import { SecurityException } from '../../errors'; import { retryTransientEsErrors } from '../../utils/retry'; @@ -40,6 +41,10 @@ export class DefaultSummaryTransformManager implements TransformManager { return transformParams.transform_id; } + inspect(slo: SLO): TransformPutTransformRequest { + return this.generator.generate(slo); + } + async preview(transformId: string): Promise { try { await retryTransientEsErrors( diff --git a/x-pack/plugins/observability/server/services/slo/transform_manager.ts b/x-pack/plugins/observability/server/services/slo/transform_manager.ts index ed35512c03b65..954c7f7d95912 100644 --- a/x-pack/plugins/observability/server/services/slo/transform_manager.ts +++ b/x-pack/plugins/observability/server/services/slo/transform_manager.ts @@ -7,6 +7,7 @@ import { ElasticsearchClient, Logger } from '@kbn/core/server'; +import { TransformPutTransformRequest } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { SLO, IndicatorTypes } from '../../domain/models'; import { SecurityException } from '../../errors'; import { retryTransientEsErrors } from '../../utils/retry'; @@ -16,6 +17,7 @@ type TransformId = string; export interface TransformManager { install(slo: SLO): Promise; + inspect(slo: SLO): TransformPutTransformRequest; preview(transformId: TransformId): Promise; start(transformId: TransformId): Promise; stop(transformId: TransformId): Promise; @@ -53,6 +55,16 @@ export class DefaultTransformManager implements TransformManager { return transformParams.transform_id; } + inspect(slo: SLO): TransformPutTransformRequest { + const generator = this.generators[slo.indicator.type]; + if (!generator) { + this.logger.error(`No transform generator found for indicator type [${slo.indicator.type}]`); + throw new Error(`Unsupported indicator type [${slo.indicator.type}]`); + } + + return generator.getTransformParams(slo); + } + async preview(transformId: string): Promise { try { await retryTransientEsErrors( diff --git a/x-pack/plugins/observability/tsconfig.json b/x-pack/plugins/observability/tsconfig.json index 61762322f9eed..cf3402a90c888 100644 --- a/x-pack/plugins/observability/tsconfig.json +++ b/x-pack/plugins/observability/tsconfig.json @@ -100,6 +100,7 @@ "@kbn/presentation-util-plugin", "@kbn/task-manager-plugin", "@kbn/core-elasticsearch-client-server-mocks", + "@kbn/ingest-pipelines-plugin", "@kbn/core-saved-objects-api-server-mocks" ], "exclude": [ From e1601bef2480427b14dd7aaece58b005843297c8 Mon Sep 17 00:00:00 2001 From: "Quynh Nguyen (Quinn)" <43350163+qn895@users.noreply.github.com> Date: Wed, 3 Jan 2024 10:42:36 -0600 Subject: [PATCH 089/323] [ML] Fix filter for boolean fields filtering for numbers in Field statistics/Data Visualizer (#174050) ## Summary This PR fixes https://github.com/elastic/kibana/issues/173734 where the clicking to filter a boolean value is searching as numeric representation instead of the true boolean values. ### Checklist Delete any items that are not applicable to this PR. - [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed - [ ] Any UI touched in this PR is usable by keyboard only (learn more about [keyboard accessibility](https://webaim.org/techniques/keyboard/)) - [ ] Any UI touched in this PR does not create any new axe failures (run axe in browser: [FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/), [Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US)) - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [ ] This renders correctly on smaller devices using a responsive layout. (You can test this [in your browser](https://www.browserstack.com/guide/responsive-testing-on-local-server)) - [ ] This was checked for [cross-browser compatibility](https://www.elastic.co/support/matrix#matrix_browsers) ### Risk Matrix Delete this section if it is not applicable to this PR. Before closing this PR, invite QA, stakeholders, and other developers to identify risks that should be tested prior to the change/feature release. When forming the risk matrix, consider some of the following examples and how they may potentially impact the change: | Risk | Probability | Severity | Mitigation/Notes | |---------------------------|-------------|----------|-------------------------| | Multiple Spaces—unexpected behavior in non-default Kibana Space. | Low | High | Integration tests will verify that all features are still supported in non-default Kibana Space and when user switches between spaces. | | Multiple nodes—Elasticsearch polling might have race conditions when multiple Kibana nodes are polling for the same tasks. | High | Low | Tasks are idempotent, so executing them multiple times will not result in logical error, but will degrade performance. To test for this case we add plenty of unit tests around this logic and document manual testing procedure. | | Code should gracefully handle cases when feature X or plugin Y are disabled. | Medium | High | Unit tests will verify that any feature flag or plugin combination still results in our service operational. | | [See more potential risk examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) | ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../common/types/field_request_config.ts | 7 +- .../components/top_values/top_values.tsx | 153 +++++++++--------- 2 files changed, 79 insertions(+), 81 deletions(-) diff --git a/x-pack/plugins/data_visualizer/common/types/field_request_config.ts b/x-pack/plugins/data_visualizer/common/types/field_request_config.ts index 34a9f5d6036f2..ee6a382c4fb95 100644 --- a/x-pack/plugins/data_visualizer/common/types/field_request_config.ts +++ b/x-pack/plugins/data_visualizer/common/types/field_request_config.ts @@ -65,7 +65,12 @@ export interface FieldVisStats { max?: number; median?: number; min?: number; - topValues?: Array<{ key: number | string; doc_count: number; percent: number }>; + topValues?: Array<{ + key: number | string; + doc_count: number; + percent: number; + key_as_string?: string; + }>; examples?: Array; timeRangeEarliest?: number; timeRangeLatest?: number; diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/top_values/top_values.tsx b/x-pack/plugins/data_visualizer/public/application/common/components/top_values/top_values.tsx index a3f5731dcb1bc..0b2475789091f 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/top_values/top_values.tsx +++ b/x-pack/plugins/data_visualizer/public/application/common/components/top_values/top_values.tsx @@ -114,87 +114,80 @@ export const TopValues: FC = ({ stats, fieldFormat, barColor, compressed, className={classNames('fieldDataTopValuesContainer', 'dvTopValues__wrapper')} > {Array.isArray(topValues) - ? topValues.map((value) => ( - - - - - {fieldName !== undefined && value.key !== undefined && onAddFilter !== undefined ? ( -
- - onAddFilter( - fieldName, - typeof value.key === 'number' ? value.key.toString() : value.key, - '+' - ) - } - aria-label={i18n.translate( - 'xpack.dataVisualizer.dataGrid.field.addFilterAriaLabel', - { - defaultMessage: 'Filter for {fieldName}: "{value}"', - values: { fieldName, value: value.key }, - } - )} - data-test-subj={`dvFieldDataTopValuesAddFilterButton-${value.key}-${value.key}`} - style={{ - minHeight: 'auto', - minWidth: 'auto', - paddingRight: 2, - paddingLeft: 2, - paddingTop: 0, - paddingBottom: 0, - }} - /> - - onAddFilter( - fieldName, - typeof value.key === 'number' ? value.key.toString() : value.key, - '-' - ) - } - aria-label={i18n.translate( - 'xpack.dataVisualizer.dataGrid.field.removeFilterAriaLabel', - { - defaultMessage: 'Filter out {fieldName}: "{value}"', - values: { fieldName, value: value.key }, - } - )} - data-test-subj={`dvFieldDataTopValuesExcludeFilterButton-${value.key}-${value.key}`} - style={{ - minHeight: 'auto', - minWidth: 'auto', - paddingTop: 0, - paddingBottom: 0, - paddingRight: 2, - paddingLeft: 2, - }} + ? topValues.map((value) => { + const fieldValue = value.key_as_string ?? value.key.toString(); + return ( + + + -
- ) : null} -
- )) + + {fieldName !== undefined && + fieldValue !== undefined && + onAddFilter !== undefined ? ( +
+ onAddFilter(fieldName, fieldValue, '+')} + aria-label={i18n.translate( + 'xpack.dataVisualizer.dataGrid.field.addFilterAriaLabel', + { + defaultMessage: 'Filter for {fieldName}: "{value}"', + values: { fieldName, value: fieldValue }, + } + )} + data-test-subj={`dvFieldDataTopValuesAddFilterButton-${fieldName}-${fieldValue}`} + style={{ + minHeight: 'auto', + minWidth: 'auto', + paddingRight: 2, + paddingLeft: 2, + paddingTop: 0, + paddingBottom: 0, + }} + /> + onAddFilter(fieldName, fieldValue, '-')} + aria-label={i18n.translate( + 'xpack.dataVisualizer.dataGrid.field.removeFilterAriaLabel', + { + defaultMessage: 'Filter out {fieldName}: "{value}"', + values: { fieldName, value: fieldValue }, + } + )} + data-test-subj={`dvFieldDataTopValuesExcludeFilterButton-${fieldName}-${fieldValue}`} + style={{ + minHeight: 'auto', + minWidth: 'auto', + paddingTop: 0, + paddingBottom: 0, + paddingRight: 2, + paddingLeft: 2, + }} + /> +
+ ) : null} + + ); + }) : null} {topValuesOtherCount > 0 ? ( From 37ca617150080b1d407158dfb8ee670d77f2f33a Mon Sep 17 00:00:00 2001 From: Thom Heymann <190132+thomheymann@users.noreply.github.com> Date: Wed, 3 Jan 2024 16:43:04 +0000 Subject: [PATCH 090/323] [Logs Explorer] Add AI assistant to Logs Explorer (#174079) Resolves #172158 ## Summary - Adds AI assistant buttons to Logs Explorer header - Adds separators to group related buttons ## Screenshots ### Classic Screenshot 2023-12-20 at 17 45 15 ### Serverless Screenshot 2023-12-20 at 17 36 22 --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../plugins/observability_log_explorer/kibana.jsonc | 7 +++++-- .../public/components/log_explorer_top_nav_menu.tsx | 12 +++++++++++- .../observability_log_explorer/public/types.ts | 2 ++ .../plugins/observability_log_explorer/tsconfig.json | 1 + 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/observability_log_explorer/kibana.jsonc b/x-pack/plugins/observability_log_explorer/kibana.jsonc index 92d2ad70c3175..d3d96863ac37e 100644 --- a/x-pack/plugins/observability_log_explorer/kibana.jsonc +++ b/x-pack/plugins/observability_log_explorer/kibana.jsonc @@ -16,6 +16,7 @@ "discover", "logExplorer", "logsShared", + "observabilityAIAssistant", "observabilityShared", "share", "kibanaUtils", @@ -24,9 +25,11 @@ "optionalPlugins": [ "serverless" ], - "requiredBundles": ["kibanaReact"], + "requiredBundles": [ + "kibanaReact" + ], "extraPublicDirs": [ "common", ] } -} +} \ No newline at end of file diff --git a/x-pack/plugins/observability_log_explorer/public/components/log_explorer_top_nav_menu.tsx b/x-pack/plugins/observability_log_explorer/public/components/log_explorer_top_nav_menu.tsx index 6a76caae25406..a9e1135cbb099 100644 --- a/x-pack/plugins/observability_log_explorer/public/components/log_explorer_top_nav_menu.tsx +++ b/x-pack/plugins/observability_log_explorer/public/components/log_explorer_top_nav_menu.tsx @@ -37,6 +37,7 @@ export const LogExplorerTopNavMenu = () => { const ServerlessTopNav = () => { const { services } = useKibanaContextForPlugin(); + const { ObservabilityAIAssistantActionMenuItem } = services.observabilityAIAssistant; return ( @@ -63,9 +64,13 @@ const ServerlessTopNav = () => { + + + {ObservabilityAIAssistantActionMenuItem ? ( + + ) : null} - @@ -79,6 +84,7 @@ const StatefulTopNav = () => { const { services: { appParams: { setHeaderActionMenu }, + observabilityAIAssistant: { ObservabilityAIAssistantActionMenuItem }, chrome, i18n, theme, @@ -136,6 +142,10 @@ const StatefulTopNav = () => { + + {ObservabilityAIAssistantActionMenuItem ? ( + + ) : null} diff --git a/x-pack/plugins/observability_log_explorer/public/types.ts b/x-pack/plugins/observability_log_explorer/public/types.ts index 245e8227c72b0..a035d0af1a36d 100644 --- a/x-pack/plugins/observability_log_explorer/public/types.ts +++ b/x-pack/plugins/observability_log_explorer/public/types.ts @@ -14,6 +14,7 @@ import { SharePluginSetup, SharePluginStart } from '@kbn/share-plugin/public'; import { AppMountParameters, ScopedHistory } from '@kbn/core/public'; import { LogsSharedClientStartExports } from '@kbn/logs-shared-plugin/public'; import { DatasetQualityPluginStart } from '@kbn/dataset-quality-plugin/public'; +import { ObservabilityAIAssistantPluginStart } from '@kbn/observability-ai-assistant-plugin/public'; import { ObservabilityLogExplorerLocators, ObservabilityLogExplorerLocationState, @@ -37,6 +38,7 @@ export interface ObservabilityLogExplorerStartDeps { discover: DiscoverStart; logExplorer: LogExplorerPluginStart; logsShared: LogsSharedClientStartExports; + observabilityAIAssistant: ObservabilityAIAssistantPluginStart; observabilityShared: ObservabilitySharedPluginStart; serverless?: ServerlessPluginStart; share: SharePluginStart; diff --git a/x-pack/plugins/observability_log_explorer/tsconfig.json b/x-pack/plugins/observability_log_explorer/tsconfig.json index 0c03040b4203b..67fb556143771 100644 --- a/x-pack/plugins/observability_log_explorer/tsconfig.json +++ b/x-pack/plugins/observability_log_explorer/tsconfig.json @@ -37,6 +37,7 @@ "@kbn/ui-theme", "@kbn/xstate-utils", "@kbn/router-utils", + "@kbn/observability-ai-assistant-plugin", ], "exclude": [ "target/**/*" From 5951512197d736d575464c4c8839aa1993b878ed Mon Sep 17 00:00:00 2001 From: Jon Date: Wed, 3 Jan 2024 11:52:52 -0600 Subject: [PATCH 091/323] [ci] Avoid unintended notifications on failing test comment (#174124) --- .buildkite/pipeline-utils/test-failures/annotate.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.buildkite/pipeline-utils/test-failures/annotate.ts b/.buildkite/pipeline-utils/test-failures/annotate.ts index 8397fa670af66..c49128ae3c62b 100644 --- a/.buildkite/pipeline-utils/test-failures/annotate.ts +++ b/.buildkite/pipeline-utils/test-failures/annotate.ts @@ -91,11 +91,12 @@ export const getPrComment = ( const logsLink = artifactUrl ? ` [[logs]](${artifactUrl})` : ''; - // job name could have # in it, which Github will link to an issue, so we need to "escape" it with spans - return `* [[job]](${jobUrl})${logsLink} ${failure.jobName.replace( - '#', - '#' - )} / ${failure.name}`; + // failure name could have #, which Github will link to an issue or @, + // which will send a notification so we need to "escape" it with spans + const failureString = `${failure.jobName} / ${failure.name}` + .replaceAll('#', '#') + .replaceAll('@', '@'); + return `* [[job]](${jobUrl})${logsLink} ${failureString}`; }) .join('\n') ); From 64d73d95a222a682a24ce3e4bd18b6a9697741c9 Mon Sep 17 00:00:00 2001 From: Jon Date: Wed, 3 Jan 2024 11:53:15 -0600 Subject: [PATCH 092/323] Upgrade caniuse-lite (#173964) This is logging outdated warnings on 7.17. Opening with a main target to backport a consistent version. --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index ad697a39b4b23..28057e7c10d95 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12844,9 +12844,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001565: - version "1.0.30001570" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz#b4e5c1fa786f733ab78fc70f592df6b3f23244ca" - integrity sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw== + version "1.0.30001572" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001572.tgz#1ccf7dc92d2ee2f92ed3a54e11b7b4a3041acfa0" + integrity sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw== canvg@^3.0.9: version "3.0.9" From 39f1561055d9e4e16ccc2389da2947c3e1f15c14 Mon Sep 17 00:00:00 2001 From: Elastic Machine Date: Thu, 4 Jan 2024 05:56:15 +1030 Subject: [PATCH 093/323] [main] Sync bundled packages with Package Storage (#174190) Automated by https://buildkite.com/elastic/package-storage-infra-kibana-discover-release-branches/builds/211 --- fleet_packages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fleet_packages.json b/fleet_packages.json index 0a9a4546e8750..2041d127f916b 100644 --- a/fleet_packages.json +++ b/fleet_packages.json @@ -56,6 +56,6 @@ }, { "name": "security_detection_engine", - "version": "8.12.1" + "version": "8.12.2" } ] \ No newline at end of file From c4821c5b00c021b0b22d697c93c26dcfebd33520 Mon Sep 17 00:00:00 2001 From: Alexi Doak <109488926+doakalexi@users.noreply.github.com> Date: Wed, 3 Jan 2024 11:37:52 -0800 Subject: [PATCH 094/323] [ResponseOps] Revisit connector action retry back-off (#173779) Resolves https://github.com/elastic/kibana/issues/172518 ## Summary Updates the retry delay calculation to cap the delay at 1hr and introduces jitter. ### Checklist - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios ### To verify - Create a rule and then force a retry failure - Verify that the retry follows the pattern below: Attempt 1: now Attempt 2: 30s after the first attempt Attempt 3: 0 - 5m after the second attempt Attempt 4: 0 - 10m after the third attempt Attempt 5: 0 - 20m after the fourth attempt Attempt 6: 0 - 40m after the fifth attempt Attempt n: 0 - 1hr for all other attempts --- .../server/task_running/task_runner.test.ts | 58 ++++++++++++++++--- .../server/task_running/task_runner.ts | 12 ++-- 2 files changed, 57 insertions(+), 13 deletions(-) diff --git a/x-pack/plugins/task_manager/server/task_running/task_runner.test.ts b/x-pack/plugins/task_manager/server/task_running/task_runner.test.ts index 35fbd6918f4fb..8a96405abfed6 100644 --- a/x-pack/plugins/task_manager/server/task_running/task_runner.test.ts +++ b/x-pack/plugins/task_manager/server/task_running/task_runner.test.ts @@ -43,6 +43,7 @@ import { import { schema } from '@kbn/config-schema'; import { RequeueInvalidTasksConfig } from '../config'; +const baseDelay = 5 * 60 * 1000; const executionContext = executionContextServiceMock.createSetupContract(); const minutesFromNow = (mins: number): Date => secondsFromNow(mins * 60); const mockRequeueInvalidTasksConfig = { @@ -315,8 +316,16 @@ describe('TaskManagerRunner', () => { expect(instance.attempts).toEqual(initialAttempts + 1); expect(instance.status).toBe('running'); expect(instance.startedAt!.getTime()).toEqual(Date.now()); - const expectedRunAt = Date.now() + calculateDelay(initialAttempts + 1); - expect(instance.retryAt!.getTime()).toEqual(expectedRunAt + timeoutMinutes * 60 * 1000); + + const minRunAt = Date.now(); + const maxRunAt = minRunAt + baseDelay * Math.pow(2, initialAttempts - 1); + expect(instance.retryAt!.getTime()).toBeGreaterThanOrEqual( + minRunAt + timeoutMinutes * 60 * 1000 + ); + expect(instance.retryAt!.getTime()).toBeLessThanOrEqual( + maxRunAt + timeoutMinutes * 60 * 1000 + ); + expect(instance.enabled).not.toBeDefined(); }); @@ -347,9 +356,13 @@ describe('TaskManagerRunner', () => { expect(store.update).toHaveBeenCalledTimes(1); const instance = store.update.mock.calls[0][0]; - const expectedRetryAt = new Date(Date.now() + calculateDelay(initialAttempts + 1)); - expect(instance.retryAt!.getTime()).toEqual( - new Date(expectedRetryAt.getTime() + timeoutMinutes * 60 * 1000).getTime() + const minRunAt = Date.now(); + const maxRunAt = minRunAt + baseDelay * Math.pow(2, initialAttempts - 1); + expect(instance.retryAt!.getTime()).toBeGreaterThanOrEqual( + minRunAt + timeoutMinutes * 60 * 1000 + ); + expect(instance.retryAt!.getTime()).toBeLessThanOrEqual( + maxRunAt + timeoutMinutes * 60 * 1000 ); expect(instance.enabled).not.toBeDefined(); }); @@ -742,8 +755,12 @@ describe('TaskManagerRunner', () => { const instance = store.update.mock.calls[0][0]; expect(instance.id).toEqual(id); - const expectedRunAt = new Date(Date.now() + calculateDelay(initialAttempts)); - expect(instance.runAt.getTime()).toEqual(expectedRunAt.getTime()); + + const minRunAt = Date.now(); + const maxRunAt = minRunAt + baseDelay * Math.pow(2, initialAttempts - 2); + expect(instance.runAt.getTime()).toBeGreaterThanOrEqual(minRunAt); + expect(instance.runAt.getTime()).toBeLessThanOrEqual(maxRunAt); + expect(instance.params).toEqual({ a: 'b' }); expect(instance.state).toEqual({ hey: 'there' }); expect(instance.enabled).not.toBeDefined(); @@ -1098,8 +1115,11 @@ describe('TaskManagerRunner', () => { expect(store.update).toHaveBeenCalledTimes(1); const instance = store.update.mock.calls[0][0]; - const expectedRunAt = new Date(Date.now() + calculateDelay(initialAttempts)); - expect(instance.runAt.getTime()).toEqual(expectedRunAt.getTime()); + const minRunAt = Date.now(); + const maxRunAt = minRunAt + baseDelay * Math.pow(2, initialAttempts - 2); + expect(instance.runAt.getTime()).toBeGreaterThanOrEqual(minRunAt); + expect(instance.runAt.getTime()).toBeLessThanOrEqual(maxRunAt); + expect(instance.enabled).not.toBeDefined(); }); @@ -2542,6 +2562,26 @@ describe('TaskManagerRunner', () => { `Error encountered when running onTaskRemoved() hook for testbar2 "foo": Fail` ); }); + + describe('calculateDelay', () => { + it('returns 30s on the first attempt', () => { + expect(calculateDelay(1)).toBe(30000); + }); + + it('returns delay with jitter', () => { + const delay = calculateDelay(5); + // with jitter should be random between 0 and 40 min (inclusive) + expect(delay).toBeGreaterThanOrEqual(0); + expect(delay).toBeLessThanOrEqual(2400000); + }); + + it('returns delay capped at 1 hour', () => { + const delay = calculateDelay(10); + // with jitter should be random between 0 and 1 hr (inclusive) + expect(delay).toBeGreaterThanOrEqual(0); + expect(delay).toBeLessThanOrEqual(60 * 60 * 1000); + }); + }); }); interface TestOpts { diff --git a/x-pack/plugins/task_manager/server/task_running/task_runner.ts b/x-pack/plugins/task_manager/server/task_running/task_runner.ts index f67d8a22db81d..51b0a182d10a2 100644 --- a/x-pack/plugins/task_manager/server/task_running/task_runner.ts +++ b/x-pack/plugins/task_manager/server/task_running/task_runner.ts @@ -14,7 +14,7 @@ import apm from 'elastic-apm-node'; import { v4 as uuidv4 } from 'uuid'; import { withSpan } from '@kbn/apm-utils'; -import { defaults, flow, identity, isUndefined, omit } from 'lodash'; +import { defaults, flow, identity, isUndefined, omit, random } from 'lodash'; import { ExecutionContextStart, Logger, SavedObjectsErrorHelpers } from '@kbn/core/server'; import { UsageCounter } from '@kbn/usage-collection-plugin/server'; import moment from 'moment'; @@ -931,12 +931,16 @@ export function asRan(task: InstanceOf): RanTask } export function calculateDelay(attempts: number) { + // Return 30s for the first retry attempt if (attempts === 1) { - return 30 * 1000; // 30s + return 30 * 1000; } else { - // get multiples of 5 min const defaultBackoffPerFailure = 5 * 60 * 1000; - return defaultBackoffPerFailure * Math.pow(2, attempts - 2); + const maxDelay = 60 * 60 * 1000; + // For each remaining attempt return an exponential delay with jitter that is capped at 1 hour. + // We adjust the attempts by 2 to ensure that delay starts at 5m for the second retry attempt + // and increases exponentially from there. + return random(Math.min(maxDelay, defaultBackoffPerFailure * Math.pow(2, attempts - 2))); } } From 0b23e346bfda2b9ed85a18b7302af8fd8ffa243f Mon Sep 17 00:00:00 2001 From: Jon Date: Wed, 3 Jan 2024 15:43:29 -0600 Subject: [PATCH 095/323] [ci] Run sonarqube daily (#173961) Adds a pipeline for a daily SonarQube scan. https://buildkite.com/elastic/kibana-bot-sonarqube/builds/7#018ca703-4b56-4a56-b6ce-ae6630cd81e3 (ignore the pipeline name/slug, that was a copy paste error. I'll fix it after) --- .buildkite/hooks/pre-command | 3 +- .buildkite/pipelines/sonarqube.yml | 9 ++-- catalog-info.yaml | 7 ++- sonar-project.properties | 52 +++++++++++++++++++ src/dev/precommit_hook/casing_check_config.js | 1 + 5 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 sonar-project.properties diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 95e2975d094c3..725591fdf19b4 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -1,7 +1,8 @@ #!/usr/bin/env bash if [[ "$BUILDKITE_AGENT_NAME" =~ ^bk-agent ]]; then - echo "Pipeline file triggered from outside the kibana executors, skipping pre_command" + echo "Pipeline file triggered from outside the kibana executors, skipping .buildkite/scripts/lifecycle/pre_command.sh" + export SONAR_LOGIN=$(vault read -field=token secret/ci/elastic-kibana/sonarqube) else source .buildkite/scripts/lifecycle/pre_command.sh fi diff --git a/.buildkite/pipelines/sonarqube.yml b/.buildkite/pipelines/sonarqube.yml index 655bf93dcd61a..827c52815c1fa 100644 --- a/.buildkite/pipelines/sonarqube.yml +++ b/.buildkite/pipelines/sonarqube.yml @@ -1,4 +1,5 @@ - -steps: - - label: Placeholder - command: echo "Hello!" \ No newline at end of file + - label: ":sonarqube: Continuous Code Inspection" + agents: + image: docker.elastic.co/cloud-ci/sonarqube/buildkite-scanner:latest + memory: 16G + command: /scan-source-code.sh diff --git a/catalog-info.yaml b/catalog-info.yaml index a28008c14e71f..05251d665f44e 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -10,6 +10,7 @@ metadata: github.com/project-slug: elastic/kibana github.com/team-slug: elastic/kibana-tech-leads buildkite.com/project-slug: elastic/kibana + sonarqube.org/project-key: elastic_kibana_AYvOkAHeQZlFqhqWIr9 tags: - typescript @@ -200,11 +201,15 @@ spec: apiVersion: buildkite.elastic.dev/v1 kind: Pipeline metadata: - name: kibana-bot / sonarqube + name: kibana / sonarqube spec: repository: elastic/kibana provider_settings: trigger_mode: none + schedules: + daily: + branch: main + cronline: "@daily" pipeline_file: ".buildkite/pipelines/sonarqube.yml" teams: kibana-operations: diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 0000000000000..3cac455d961f4 --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,52 @@ +sonar.projectKey=elastic_kibana_AYvOkAHeQZlFqhqWIr9Y +sonar.projectName=Kibana +sonar.host.url=https://sonar.elastic.dev + +sonar.sources=\ + packages, \ + plugins, \ + src, \ + x-pack/packages, \ + x-pack/plugins +sonar.exclusions=\ + **/*.mock.*, \ + **/*.mocks.*, \ + **/*.spec.*, \ + **/*.stories.js, \ + **/*.stories.ts, \ + **/*.story.js, \ + **/*.story.ts, \ + **/*.test.*, \ + **/*.test.mocks.*, \ + **/.storybook/**/*, \ + **/__fixtures__/**/*, \ + **/__jest__/**/*, \ + **/__mocks__/**/*, \ + **/__snapshots__/**/*, \ + **/__stories__/**/*, \ + **/__tests__/**/*, \ + **/cypress/**/*, \ + **/dev_docs/**/*, \ + **/docs/**/*, \ + **/e2e/**/*, \ + **/fixtures/**/*, \ + **/ftr_e2e/**/*, \ + **/integration_tests/**/*, \ + **/jest*, \ + **/manual_tests/**/*, \ + **/mock_responses/**/*, \ + **/mocks/**/*, \ + **/node_modules/**/*, \ + **/packages/**/*, \ + **/public/**/*, \ + **/scripts/**/*, \ + **/storybook/**/*, \ + **/stubs.ts, \ + **/test/**/*, \ + **/test_data/**/*, \ + **/test_mocks.ts, \ + **/test_resources/**/*, \ + **/tests/**/*, \ + src/dev/**/* + +sonar.javascript.node.maxspace=8192 diff --git a/src/dev/precommit_hook/casing_check_config.js b/src/dev/precommit_hook/casing_check_config.js index d7376a81d4525..4043878da9195 100644 --- a/src/dev/precommit_hook/casing_check_config.js +++ b/src/dev/precommit_hook/casing_check_config.js @@ -15,6 +15,7 @@ */ export const IGNORE_FILE_GLOBS = [ '.node-version', + 'sonar-project.properties', '.github/**/*', 'docs/**/*', '**/bin/**/*', From 712406beb68254a5b22b8353fdb90a465a6171d8 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Thu, 4 Jan 2024 01:09:55 -0500 Subject: [PATCH 096/323] [api-docs] 2024-01-04 Daily api_docs build (#174229) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/572 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- .../ai_assistant_management_observability.mdx | 2 +- .../ai_assistant_management_selection.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/apm_data_access.mdx | 2 +- api_docs/asset_manager.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_experiments.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/dataset_quality.mdx | 2 +- api_docs/deprecations_by_api.mdx | 4 +- api_docs/deprecations_by_plugin.mdx | 2 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/elastic_assistant.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_annotation_listing.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/ingest_pipelines.devdocs.json | 102 + api_docs/ingest_pipelines.mdx | 36 + api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_actions_types.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- .../kbn_alerting_api_integration_helpers.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerting_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- api_docs/kbn_analytics_collection_utils.mdx | 2 +- ..._analytics_shippers_elastic_v3_browser.mdx | 2 +- ...n_analytics_shippers_elastic_v3_common.mdx | 2 +- ...n_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_analytics_shippers_gainsight.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_bfetch_error.mdx | 2 +- api_docs/kbn_calculate_auto.mdx | 2 +- .../kbn_calculate_width_from_char_count.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_owners.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- .../kbn_content_management_content_editor.mdx | 2 +- ...tent_management_tabbed_table_list_view.mdx | 2 +- ...kbn_content_management_table_list_view.mdx | 2 +- ...tent_management_table_list_view_common.mdx | 2 +- ...ntent_management_table_list_view_table.mdx | 2 +- api_docs/kbn_content_management_utils.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- .../kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- .../kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- .../kbn_core_application_browser_internal.mdx | 2 +- .../kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- .../kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- .../kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- ..._core_custom_branding_browser_internal.mdx | 2 +- ...kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- ...n_core_custom_branding_server_internal.mdx | 2 +- .../kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- ...kbn_core_deprecations_browser_internal.mdx | 2 +- .../kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- .../kbn_core_deprecations_server_internal.mdx | 2 +- .../kbn_core_deprecations_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- ...e_elasticsearch_client_server_internal.mdx | 2 +- ...core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- ...kbn_core_elasticsearch_server_internal.mdx | 2 +- .../kbn_core_elasticsearch_server_mocks.mdx | 2 +- .../kbn_core_environment_server_internal.mdx | 2 +- .../kbn_core_environment_server_mocks.mdx | 2 +- .../kbn_core_execution_context_browser.mdx | 2 +- ...ore_execution_context_browser_internal.mdx | 2 +- ...n_core_execution_context_browser_mocks.mdx | 2 +- .../kbn_core_execution_context_common.mdx | 2 +- .../kbn_core_execution_context_server.mdx | 2 +- ...core_execution_context_server_internal.mdx | 2 +- ...bn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- .../kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- .../kbn_core_http_context_server_mocks.mdx | 2 +- ...re_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- ...bn_core_http_resources_server_internal.mdx | 2 +- .../kbn_core_http_resources_server_mocks.mdx | 2 +- .../kbn_core_http_router_server_internal.mdx | 2 +- .../kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- ...kbn_core_integrations_browser_internal.mdx | 2 +- .../kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- ...ore_metrics_collectors_server_internal.mdx | 2 +- ...n_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- ...bn_core_notifications_browser_internal.mdx | 2 +- .../kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- .../kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- .../kbn_core_plugins_contracts_browser.mdx | 2 +- .../kbn_core_plugins_contracts_server.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- .../kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- .../kbn_core_saved_objects_api_browser.mdx | 2 +- .../kbn_core_saved_objects_api_server.mdx | 2 +- ...bn_core_saved_objects_api_server_mocks.mdx | 2 +- ...ore_saved_objects_base_server_internal.mdx | 2 +- ...n_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- ...bn_core_saved_objects_browser_internal.mdx | 2 +- .../kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- ..._objects_import_export_server_internal.mdx | 2 +- ...ved_objects_import_export_server_mocks.mdx | 2 +- ...aved_objects_migration_server_internal.mdx | 2 +- ...e_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- ...kbn_core_saved_objects_server_internal.mdx | 2 +- .../kbn_core_saved_objects_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- ...core_test_helpers_deprecations_getters.mdx | 2 +- ...n_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- .../kbn_core_test_helpers_model_versions.mdx | 2 +- ...n_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- .../kbn_core_ui_settings_browser_internal.mdx | 2 +- .../kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- .../kbn_core_ui_settings_server_internal.mdx | 2 +- .../kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- .../kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- ...kbn_core_user_settings_server_internal.mdx | 2 +- .../kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_custom_icons.mdx | 2 +- api_docs/kbn_custom_integrations.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_data_service.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_discover_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_agent_utils.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_elastic_assistant_common.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.devdocs.json | 33 + api_docs/kbn_es_query.mdx | 4 +- api_docs/kbn_es_types.devdocs.json | 107 + api_docs/kbn_es_types.mdx | 4 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_event_annotation_common.mdx | 2 +- api_docs/kbn_event_annotation_components.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_field_utils.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- .../kbn_ftr_common_functional_services.mdx | 2 +- .../kbn_ftr_common_functional_ui_services.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- .../kbn_language_documentation_popover.mdx | 2 +- api_docs/kbn_lens_embeddable_utils.mdx | 2 +- api_docs/kbn_lens_formula_docs.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_management_cards_navigation.mdx | 2 +- .../kbn_management_settings_application.mdx | 2 +- ...ent_settings_components_field_category.mdx | 2 +- ...gement_settings_components_field_input.mdx | 2 +- ...nagement_settings_components_field_row.mdx | 2 +- ...bn_management_settings_components_form.mdx | 2 +- ...n_management_settings_field_definition.mdx | 2 +- api_docs/kbn_management_settings_ids.mdx | 2 +- ...n_management_settings_section_registry.mdx | 2 +- api_docs/kbn_management_settings_types.mdx | 2 +- .../kbn_management_settings_utilities.mdx | 2 +- api_docs/kbn_management_storybook_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_category_validator.mdx | 2 +- api_docs/kbn_ml_chi2test.mdx | 2 +- .../kbn_ml_data_frame_analytics_utils.mdx | 2 +- api_docs/kbn_ml_data_grid.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_date_utils.mdx | 2 +- api_docs/kbn_ml_error_utils.mdx | 2 +- api_docs/kbn_ml_in_memory_table.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_kibana_theme.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_ui_actions.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- .../kbn_observability_alerting_test_data.mdx | 2 +- ...ility_get_padded_alert_time_range_util.mdx | 2 +- api_docs/kbn_openapi_bundler.mdx | 2 +- api_docs/kbn_openapi_generator.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- api_docs/kbn_panel_loader.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_profiling_utils.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_react_kibana_context_common.mdx | 2 +- api_docs/kbn_react_kibana_context_render.mdx | 2 +- api_docs/kbn_react_kibana_context_root.mdx | 2 +- api_docs/kbn_react_kibana_context_styled.mdx | 2 +- api_docs/kbn_react_kibana_context_theme.mdx | 2 +- api_docs/kbn_react_kibana_mount.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_reporting_common.mdx | 2 +- api_docs/kbn_reporting_export_types_csv.mdx | 2 +- .../kbn_reporting_export_types_csv_common.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf.mdx | 2 +- .../kbn_reporting_export_types_pdf_common.mdx | 2 +- api_docs/kbn_reporting_export_types_png.mdx | 2 +- .../kbn_reporting_export_types_png_common.mdx | 2 +- api_docs/kbn_reporting_mocks_server.mdx | 2 +- api_docs/kbn_reporting_public.mdx | 2 +- api_docs/kbn_reporting_server.mdx | 2 +- api_docs/kbn_resizable_layout.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_router_utils.mdx | 2 +- api_docs/kbn_rrule.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_search_api_panels.mdx | 2 +- api_docs/kbn_search_connectors.mdx | 2 +- api_docs/kbn_search_errors.mdx | 2 +- api_docs/kbn_search_index_documents.mdx | 2 +- api_docs/kbn_search_response_warnings.mdx | 2 +- api_docs/kbn_security_plugin_types_common.mdx | 2 +- api_docs/kbn_security_plugin_types_public.mdx | 2 +- api_docs/kbn_security_plugin_types_server.mdx | 2 +- api_docs/kbn_security_solution_features.mdx | 2 +- api_docs/kbn_security_solution_navigation.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- ...kbn_security_solution_storybook_config.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- ...ritysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_grouping.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- ..._securitysolution_io_ts_alerting_types.mdx | 2 +- .../kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- .../kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_serverless_common_settings.mdx | 2 +- .../kbn_serverless_observability_settings.mdx | 2 +- api_docs/kbn_serverless_project_switcher.mdx | 2 +- api_docs/kbn_serverless_search_settings.mdx | 2 +- api_docs/kbn_serverless_security_settings.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- .../kbn_shared_ux_button_exit_full_screen.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_chrome_navigation.mdx | 2 +- api_docs/kbn_shared_ux_error_boundary.mdx | 2 +- api_docs/kbn_shared_ux_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- .../kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- .../kbn_shared_ux_page_analytics_no_data.mdx | 2 +- ...shared_ux_page_analytics_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_no_data.mdx | 2 +- ...bn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_template.mdx | 2 +- ...n_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- .../kbn_shared_ux_page_no_data_config.mdx | 2 +- ...bn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- .../kbn_shared_ux_prompt_no_data_views.mdx | 2 +- ...n_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.devdocs.json | 8 +- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_text_based_editor.devdocs.json | 16 + api_docs/kbn_text_based_editor.mdx | 4 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_triggers_actions_ui_types.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_unified_data_table.mdx | 2 +- api_docs/kbn_unified_doc_viewer.mdx | 2 +- api_docs/kbn_unified_field_list.devdocs.json | 12 +- api_docs/kbn_unified_field_list.mdx | 2 +- api_docs/kbn_unsaved_changes_badge.mdx | 2 +- api_docs/kbn_url_state.mdx | 2 +- api_docs/kbn_use_tracked_promise.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kbn_visualization_ui_components.mdx | 2 +- api_docs/kbn_visualization_utils.mdx | 2 +- api_docs/kbn_xstate_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kbn_zod_helpers.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.devdocs.json | 32 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/links.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/log_explorer.mdx | 2 +- api_docs/logs_shared.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.devdocs.json | 18 +- api_docs/maps.mdx | 4 +- api_docs/maps_ems.mdx | 2 +- api_docs/metrics_data_access.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/mock_idp_plugin.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/no_data_page.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.devdocs.json | 1826 +++++++++++++---- api_docs/observability.mdx | 2 +- api_docs/observability_a_i_assistant.mdx | 2 +- api_docs/observability_log_explorer.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.devdocs.json | 52 +- api_docs/observability_shared.mdx | 4 +- api_docs/osquery.mdx | 2 +- api_docs/painless_lab.mdx | 2 +- api_docs/plugin_directory.mdx | 20 +- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/profiling_data_access.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/security_solution_ess.mdx | 2 +- api_docs/security_solution_serverless.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/text_based_languages.devdocs.json | 16 + api_docs/text_based_languages.mdx | 4 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_doc_viewer.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/uptime.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 648 files changed, 2506 insertions(+), 1056 deletions(-) create mode 100644 api_docs/ingest_pipelines.devdocs.json create mode 100644 api_docs/ingest_pipelines.mdx diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 281a4e1348185..175c79c8edd8f 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2024-01-03 +date: 2024-01-04 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 3648f99ea4831..67938b9ee86c8 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_observability.mdx b/api_docs/ai_assistant_management_observability.mdx index d3331b027d951..568c9569b3e52 100644 --- a/api_docs/ai_assistant_management_observability.mdx +++ b/api_docs/ai_assistant_management_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementObservability title: "aiAssistantManagementObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementObservability plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementObservability'] --- import aiAssistantManagementObservabilityObj from './ai_assistant_management_observability.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index 163f5204f7e78..ce9a17f1097c9 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 75b3c06d42d6b..efe4742f812a6 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 89309bed8376f..e38c25b1345d7 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index b380c619d5e67..97004593fa23a 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index 79422355cd46e..0967e55be0f9f 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index 7aace57deee4f..1cd598a4a0787 100644 --- a/api_docs/asset_manager.mdx +++ b/api_docs/asset_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetManager title: "assetManager" image: https://source.unsplash.com/400x175/?github description: API docs for the assetManager plugin -date: 2024-01-03 +date: 2024-01-04 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 4fd665cd9b20a..fcfe454cd2efb 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2024-01-03 +date: 2024-01-04 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 433f90a1053b0..42b81bc4929d3 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github description: API docs for the bfetch plugin -date: 2024-01-03 +date: 2024-01-04 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 89ab8a4a91808..569b7601fc2e4 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 45c579f7fdd87..b3d7095d46904 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 6d413558acb67..1b368f3d45354 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2024-01-03 +date: 2024-01-04 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 2b09b8b7f4692..1b9f49f8192d6 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index 09c76a68af874..2f280ede33377 100644 --- a/api_docs/cloud_data_migration.mdx +++ b/api_docs/cloud_data_migration.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration title: "cloudDataMigration" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDataMigration plugin -date: 2024-01-03 +date: 2024-01-04 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 dd178b545e280..e5983addb5003 100644 --- a/api_docs/cloud_defend.mdx +++ b/api_docs/cloud_defend.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend title: "cloudDefend" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDefend plugin -date: 2024-01-03 +date: 2024-01-04 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 3145d19a29f5e..6974034289448 100644 --- a/api_docs/cloud_experiments.mdx +++ b/api_docs/cloud_experiments.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments title: "cloudExperiments" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudExperiments plugin -date: 2024-01-03 +date: 2024-01-04 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 37b3e4d8903c1..28df21b79fb93 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2024-01-03 +date: 2024-01-04 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 1be971ab4f9d9..9da7224fcc9dc 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2024-01-03 +date: 2024-01-04 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 f6f169a648d3b..644a576b9a31b 100644 --- a/api_docs/content_management.mdx +++ b/api_docs/content_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement title: "contentManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the contentManagement plugin -date: 2024-01-03 +date: 2024-01-04 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 de441c85f5298..6d149d7f848d3 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2024-01-03 +date: 2024-01-04 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 6cbf150bab20b..6c513a57370b2 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2024-01-03 +date: 2024-01-04 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 d0022ed7d4937..8b12f4b0b3825 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2024-01-03 +date: 2024-01-04 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 98fcf5ca3a078..ceed4cf64c766 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 9d1902cbc0db8..59da5a91e2c55 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 6c126a001865f..57b16fdff130c 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index ac0e8a0add0a5..62cd1bbac7289 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 0f6f82176a98f..299c8ec4f418a 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2024-01-03 +date: 2024-01-04 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 776605a08a29a..426a400c774fd 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2024-01-03 +date: 2024-01-04 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 8213fc9c72b7e..d6991202136d4 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index e9fe566a53bd3..a0cdcce02e887 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index e6219e5675d7d..bacd296a40466 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index 44a4654eb5e2e..79815bf40637e 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index ef17fb470eee4..4ce5183771c88 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -18,7 +18,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | ---------------|-----------|-----------| | | ml, stackAlerts | - | | | ruleRegistry, observability, ml, infra, monitoring, securitySolution, stackAlerts, synthetics, transform, uptime | - | -| | share, uiActions, guidedOnboarding, home, serverless, management, spaces, savedObjects, indexManagement, visualizations, dashboard, savedObjectsTagging, expressionXY, lens, expressionMetricVis, expressionGauge, security, alerting, triggersActionsUi, cases, aiops, advancedSettings, licenseManagement, maps, dataVisualizer, ml, exploratoryView, fleet, metricsDataAccess, osquery, profiling, apm, expressionImage, expressionMetric, expressionError, expressionRevealImage, expressionRepeatImage, expressionShape, crossClusterReplication, graph, grokdebugger, indexLifecycleManagement, infra, ingestPipelines, logstash, monitoring, observabilityOnboarding, devTools, painlessLab, remoteClusters, rollup, searchprofiler, newsfeed, securitySolution, snapshotRestore, synthetics, transform, upgradeAssistant, uptime, ux, watcher, cloudDataMigration, console, filesManagement, kibanaOverview, visDefaultEditor, expressionHeatmap, expressionLegacyMetricVis, expressionPartitionVis, expressionTagcloud, visTypeTable, visTypeTimelion, visTypeTimeseries, visTypeVega, visTypeVislib | - | +| | share, uiActions, guidedOnboarding, home, serverless, management, spaces, savedObjects, indexManagement, visualizations, dashboard, savedObjectsTagging, expressionXY, lens, expressionMetricVis, expressionGauge, security, alerting, triggersActionsUi, cases, aiops, advancedSettings, licenseManagement, maps, dataVisualizer, ml, exploratoryView, fleet, metricsDataAccess, osquery, ingestPipelines, profiling, apm, expressionImage, expressionMetric, expressionError, expressionRevealImage, expressionRepeatImage, expressionShape, crossClusterReplication, graph, grokdebugger, indexLifecycleManagement, infra, logstash, monitoring, observabilityOnboarding, devTools, painlessLab, remoteClusters, rollup, searchprofiler, newsfeed, securitySolution, snapshotRestore, synthetics, transform, upgradeAssistant, uptime, ux, watcher, cloudDataMigration, console, filesManagement, kibanaOverview, visDefaultEditor, expressionHeatmap, expressionLegacyMetricVis, expressionPartitionVis, expressionTagcloud, visTypeTable, visTypeTimelion, visTypeTimeseries, visTypeVega, visTypeVislib | - | | | encryptedSavedObjects, actions, data, ml, logstash, securitySolution, cloudChat | - | | | actions, ml, savedObjectsTagging, enterpriseSearch | - | | | @kbn/core-saved-objects-browser-internal, @kbn/core, savedObjects, visualizations, aiops, ml, dataVisualizer, dashboardEnhanced, graph, lens, securitySolution, eventAnnotation, @kbn/core-saved-objects-browser-mocks | - | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 2648ec6df8172..b55449facaff7 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 765dc2a38f65c..5c49d1c2111f5 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 6a4bc5a428642..c34d797770737 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2024-01-03 +date: 2024-01-04 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 8f9a0054a494f..47dfbf70d346e 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2024-01-03 +date: 2024-01-04 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 6cd00b2a94c00..caa873b92b456 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2024-01-03 +date: 2024-01-04 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 83f31d4fa967d..49056bd1bf759 100644 --- a/api_docs/ecs_data_quality_dashboard.mdx +++ b/api_docs/ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard title: "ecsDataQualityDashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the ecsDataQualityDashboard plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index 0b2670a8873a2..dfb7d99f0c30a 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 7aa3a7d6758ec..7b0b5851dd68e 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 321d251c575e3..9918254100888 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2024-01-03 +date: 2024-01-04 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 9647227264dc0..daa6d36a96145 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2024-01-03 +date: 2024-01-04 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 13b7b18c900d2..9474de5f81979 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2024-01-03 +date: 2024-01-04 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 233eb29c2c756..8320de7c77f9f 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 365f107bb7dfe..3bc7ef1e9dd79 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index 4b91172377f37..4f01a013f6552 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 3fd5ddbcfaf58..dc3c20ed884e9 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index 437aa907c5539..1086207ae79e0 100644 --- a/api_docs/exploratory_view.mdx +++ b/api_docs/exploratory_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView title: "exploratoryView" image: https://source.unsplash.com/400x175/?github description: API docs for the exploratoryView plugin -date: 2024-01-03 +date: 2024-01-04 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 7b351931acbe1..ec4f95d64f91b 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2024-01-03 +date: 2024-01-04 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 88cc7b5f39438..fdf929c6a59cb 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 9cafdd4bfd20a..38d225279672a 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2024-01-03 +date: 2024-01-04 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 49d21cd89648f..27e04629ee41c 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2024-01-03 +date: 2024-01-04 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 2693102013cb8..dee6029f3cb90 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2024-01-03 +date: 2024-01-04 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 0094d6bded0f8..3096059ad7670 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2024-01-03 +date: 2024-01-04 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 2ea41a3b7d7f5..2a20d57c3b137 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2024-01-03 +date: 2024-01-04 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 fd0055b84b469..04ecc8db49661 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2024-01-03 +date: 2024-01-04 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 f24cf0f3fc50d..b6b0ac67a9cb9 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2024-01-03 +date: 2024-01-04 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 3ec151c84ff9d..e5ab37d98ab79 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2024-01-03 +date: 2024-01-04 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 fe9166cafc00f..a07ed74186ff5 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2024-01-03 +date: 2024-01-04 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 65c4039788709..2aa729e87260e 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2024-01-03 +date: 2024-01-04 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 f51e647e6d816..0b10fe16fe0f6 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2024-01-03 +date: 2024-01-04 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 cbc90e0b5197e..b65dc56d93d76 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2024-01-03 +date: 2024-01-04 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 90433a5e9110e..9dd6158563493 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2024-01-03 +date: 2024-01-04 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 859c789455f15..04e8add44042c 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2024-01-03 +date: 2024-01-04 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 57bff5b1b69c8..4c98ec2a3d91b 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 66fc660112973..492b70d6729b6 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2024-01-03 +date: 2024-01-04 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 53660e5ab6727..34f47024dfd71 100644 --- a/api_docs/files_management.mdx +++ b/api_docs/files_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement title: "filesManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the filesManagement plugin -date: 2024-01-03 +date: 2024-01-04 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 d581b113fb519..71082e7d6c850 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2024-01-03 +date: 2024-01-04 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 898af943a8029..f145084416fb0 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2024-01-03 +date: 2024-01-04 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 c3edd4dbe4079..69906278ddaf4 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2024-01-03 +date: 2024-01-04 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 0ce444c73b495..24aa7c9926bda 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2024-01-03 +date: 2024-01-04 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 6fe87e2bd16ce..f0e8319806226 100644 --- a/api_docs/image_embeddable.mdx +++ b/api_docs/image_embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable title: "imageEmbeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the imageEmbeddable plugin -date: 2024-01-03 +date: 2024-01-04 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 f35ddb73641a7..e180f0d1641dc 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexLifecycleManagement plugin -date: 2024-01-03 +date: 2024-01-04 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 bdb4ea347757d..5d41b96d012ee 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2024-01-03 +date: 2024-01-04 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 78449bd7a1927..f5c39b03aca7f 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/ingest_pipelines.devdocs.json b/api_docs/ingest_pipelines.devdocs.json new file mode 100644 index 0000000000000..98a227c237655 --- /dev/null +++ b/api_docs/ingest_pipelines.devdocs.json @@ -0,0 +1,102 @@ +{ + "id": "ingestPipelines", + "client": { + "classes": [], + "functions": [], + "interfaces": [ + { + "parentPluginId": "ingestPipelines", + "id": "def-public.IngestPipelinesListParams", + "type": "Interface", + "tags": [], + "label": "IngestPipelinesListParams", + "description": [], + "signature": [ + { + "pluginId": "ingestPipelines", + "scope": "public", + "docId": "kibIngestPipelinesPluginApi", + "section": "def-public.IngestPipelinesListParams", + "text": "IngestPipelinesListParams" + }, + " extends Partial" + ], + "path": "x-pack/plugins/ingest_pipelines/public/locator.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "ingestPipelines", + "id": "def-public.IngestPipelinesListParams.page", + "type": "string", + "tags": [], + "label": "page", + "description": [], + "signature": [ + { + "pluginId": "ingestPipelines", + "scope": "public", + "docId": "kibIngestPipelinesPluginApi", + "section": "def-public.INGEST_PIPELINES_PAGES", + "text": "INGEST_PIPELINES_PAGES" + }, + ".LIST" + ], + "path": "x-pack/plugins/ingest_pipelines/public/locator.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [ + { + "parentPluginId": "ingestPipelines", + "id": "def-public.INGEST_PIPELINES_PAGES", + "type": "Enum", + "tags": [], + "label": "INGEST_PIPELINES_PAGES", + "description": [], + "path": "x-pack/plugins/ingest_pipelines/public/locator.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "misc": [ + { + "parentPluginId": "ingestPipelines", + "id": "def-public.INGEST_PIPELINES_APP_LOCATOR", + "type": "string", + "tags": [], + "label": "INGEST_PIPELINES_APP_LOCATOR", + "description": [], + "signature": [ + "\"INGEST_PIPELINES_APP_LOCATOR\"" + ], + "path": "x-pack/plugins/ingest_pipelines/public/locator.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/ingest_pipelines.mdx b/api_docs/ingest_pipelines.mdx new file mode 100644 index 0000000000000..6e9aff3bfba06 --- /dev/null +++ b/api_docs/ingest_pipelines.mdx @@ -0,0 +1,36 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibIngestPipelinesPluginApi +slug: /kibana-dev-docs/api/ingestPipelines +title: "ingestPipelines" +image: https://source.unsplash.com/400x175/?github +description: API docs for the ingestPipelines plugin +date: 2024-01-04 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ingestPipelines'] +--- +import ingestPipelinesObj from './ingest_pipelines.devdocs.json'; + + + +Contact [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 4 | 0 | 4 | 0 | + +## Client + +### Interfaces + + +### Enums + + +### Consts, variables and types + + diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 94bcac34fe032..03c65d44f35e7 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2024-01-03 +date: 2024-01-04 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 53d6e671698bb..0086ac4ce9e8e 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2024-01-03 +date: 2024-01-04 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 e6bd17a2da1bc..be92db311d961 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ace plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index be5ddfeece0d6..ea6042678334b 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 957ed4277ea4c..0fceae2c6aa5b 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index fce03996d1fd3..0c572f58a1412 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-utils plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index 4a329e2ad5eaa..48cae6747c964 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 625f69b41f813..7109d9c5de8c6 100644 --- a/api_docs/kbn_alerting_state_types.mdx +++ b/api_docs/kbn_alerting_state_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types title: "@kbn/alerting-state-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-state-types plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index 9df1a5e0eba48..81baf5ce3dea1 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index d3cdedd416f89..9e2d04708b8dd 100644 --- a/api_docs/kbn_alerts_as_data_utils.mdx +++ b/api_docs/kbn_alerts_as_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils title: "@kbn/alerts-as-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-as-data-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 6c0b274a863b0..b835cdf345430 100644 --- a/api_docs/kbn_alerts_ui_shared.mdx +++ b/api_docs/kbn_alerts_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared title: "@kbn/alerts-ui-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-ui-shared plugin -date: 2024-01-03 +date: 2024-01-04 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 33bb144d96e85..bb47843b82e3e 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 136e3802b11aa..3b5f66fe191c9 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-client plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index b415312f60bd2..a5ebd4cabb524 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index c96ba8475c350..4ad36ce3266e0 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser title: "@kbn/analytics-shippers-elastic-v3-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 8f19d26485744..2f441677caed3 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common title: "@kbn/analytics-shippers-elastic-v3-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2024-01-03 +date: 2024-01-04 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 b5773b652cbf3..6d37607eb3780 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server title: "@kbn/analytics-shippers-elastic-v3-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2024-01-03 +date: 2024-01-04 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 7f28e363b0a88..dbf2ed50486ea 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2024-01-03 +date: 2024-01-04 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 2a65f9c6ef18e..6c2e2085a35e6 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: 2024-01-03 +date: 2024-01-04 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 eaa5699ba4e85..2e4da0de9fffb 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2024-01-03 +date: 2024-01-04 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 f30c027fd5da3..08be197d2f328 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2024-01-03 +date: 2024-01-04 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 dd7ac7b7ac758..57f76574a6a01 100644 --- a/api_docs/kbn_apm_synthtrace_client.mdx +++ b/api_docs/kbn_apm_synthtrace_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client title: "@kbn/apm-synthtrace-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace-client plugin -date: 2024-01-03 +date: 2024-01-04 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 fecd230bae721..d4f8acded8bea 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 76b68d7e8a8ab..691cc29eab2b5 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_bfetch_error.mdx b/api_docs/kbn_bfetch_error.mdx index 60870f01959fa..6ffb7d64aa166 100644 --- a/api_docs/kbn_bfetch_error.mdx +++ b/api_docs/kbn_bfetch_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-bfetch-error title: "@kbn/bfetch-error" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/bfetch-error plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bfetch-error'] --- import kbnBfetchErrorObj from './kbn_bfetch_error.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index a125de923f214..bbcb29ede912a 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index 8b10cb871b976..168799bba2c8b 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 59d5bdd4b056e..1cb18fc4b85cf 100644 --- a/api_docs/kbn_cases_components.mdx +++ b/api_docs/kbn_cases_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components title: "@kbn/cases-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cases-components plugin -date: 2024-01-03 +date: 2024-01-04 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 c32de33ae36d2..af7a6aec2f060 100644 --- a/api_docs/kbn_cell_actions.mdx +++ b/api_docs/kbn_cell_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions title: "@kbn/cell-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cell-actions plugin -date: 2024-01-03 +date: 2024-01-04 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 def9203b5df07..8709c69a78d2b 100644 --- a/api_docs/kbn_chart_expressions_common.mdx +++ b/api_docs/kbn_chart_expressions_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common title: "@kbn/chart-expressions-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-expressions-common plugin -date: 2024-01-03 +date: 2024-01-04 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 380dfe6305806..f3d78c78a2774 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2024-01-03 +date: 2024-01-04 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 5a5b23f29794c..fd14fa1f9cc05 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2024-01-03 +date: 2024-01-04 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 50d5f231553e9..c5160318f3046 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2024-01-03 +date: 2024-01-04 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 4578b10c12a3c..6b5d8e5811c66 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2024-01-03 +date: 2024-01-04 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 d63fd39ae8920..c25eb3b034f9a 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2024-01-03 +date: 2024-01-04 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 f3c88feafb8fb..b1faf78313c5d 100644 --- a/api_docs/kbn_code_editor.mdx +++ b/api_docs/kbn_code_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor title: "@kbn/code-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index 27900a811c078..45c2f1eec850e 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index cc7ae2a291ac3..016a50f4eed68 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2024-01-03 +date: 2024-01-04 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 e088532380eef..92e2a6e6a98db 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2024-01-03 +date: 2024-01-04 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 0d9234edd43d2..538b978f01f67 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 27978886440f5..7a11d031669b2 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2024-01-03 +date: 2024-01-04 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 52168398d455e..a01fcd538b274 100644 --- a/api_docs/kbn_content_management_content_editor.mdx +++ b/api_docs/kbn_content_management_content_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor title: "@kbn/content-management-content-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-editor plugin -date: 2024-01-03 +date: 2024-01-04 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 2f86930f47883..ab99b334698e8 100644 --- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx +++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view title: "@kbn/content-management-tabbed-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-tabbed-table-list-view plugin -date: 2024-01-03 +date: 2024-01-04 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 ca1ef88a1a84f..ac36b039e2e28 100644 --- a/api_docs/kbn_content_management_table_list_view.mdx +++ b/api_docs/kbn_content_management_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view title: "@kbn/content-management-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index 954c6639e5880..ba7e057ea4c5e 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index 1d98bfb99c974..4eb648daed693 100644 --- a/api_docs/kbn_content_management_table_list_view_table.mdx +++ b/api_docs/kbn_content_management_table_list_view_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table title: "@kbn/content-management-table-list-view-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-table plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index f8ff902603871..b93c28f3f242f 100644 --- a/api_docs/kbn_content_management_utils.mdx +++ b/api_docs/kbn_content_management_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils title: "@kbn/content-management-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-utils plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index fb67afa9f68f9..5d321c806dae1 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 084a2064caa70..1f543f4bf84ce 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 2c296064cc413..2705851553d33 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 820b9b50a857e..7c3743c1dbd8c 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2024-01-03 +date: 2024-01-04 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 ed9ddf9ba7278..3e4b93af573ae 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 8895890bbda27..13fddb27bcd44 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 69e7a953b57cb..79983ab12c2e4 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 dc8042fc624b2..c96835fd136f4 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 010704177b189..0d0d8e97c742e 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 ce9452d1b6d25..8448a8305a7e5 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2024-01-03 +date: 2024-01-04 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 8dd653db6a14a..9723b65a44983 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 b7a5f1b773856..596f3e1409ae3 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 62693c356c349..d271d9e001764 100644 --- a/api_docs/kbn_core_apps_server_internal.mdx +++ b/api_docs/kbn_core_apps_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal title: "@kbn/core-apps-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 a2857301c2ee2..67397822cc15e 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 12d84e7534fb2..96261af6de97b 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2024-01-03 +date: 2024-01-04 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 a4315c041bc38..690927a8f239f 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 1f46f664c85d7..acdf0cea09385 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 93ee246b6daed..05311bbc8df07 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 e93970c01e89f..b394f4e578b45 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2024-01-03 +date: 2024-01-04 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 18b16da16a429..04e0c62d9deaf 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2024-01-03 +date: 2024-01-04 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 2a9a67281fd56..4b249f1bff217 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 d48b8db85e8b8..5e8bdf8c5aa08 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 a501da2a419de..02e3a5ec0123f 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 e21bed9178568..2289372300052 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 b3ffb68bfc9a3..fb768b7c12d3f 100644 --- a/api_docs/kbn_core_custom_branding_browser.mdx +++ b/api_docs/kbn_core_custom_branding_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser title: "@kbn/core-custom-branding-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 11f476d661dc6..47066277a2823 100644 --- a/api_docs/kbn_core_custom_branding_browser_internal.mdx +++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal title: "@kbn/core-custom-branding-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 c31ef8466be22..0557c03698a20 100644 --- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks title: "@kbn/core-custom-branding-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 7b46e4bda2bdd..e4c2d814ce4ce 100644 --- a/api_docs/kbn_core_custom_branding_common.mdx +++ b/api_docs/kbn_core_custom_branding_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common title: "@kbn/core-custom-branding-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-common plugin -date: 2024-01-03 +date: 2024-01-04 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 2ac5f5a0f3f99..47df9f6bd415c 100644 --- a/api_docs/kbn_core_custom_branding_server.mdx +++ b/api_docs/kbn_core_custom_branding_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server title: "@kbn/core-custom-branding-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server plugin -date: 2024-01-03 +date: 2024-01-04 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 2975a2dd8f608..8f0176938100e 100644 --- a/api_docs/kbn_core_custom_branding_server_internal.mdx +++ b/api_docs/kbn_core_custom_branding_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal title: "@kbn/core-custom-branding-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 408a458442a2c..5c6ac50845b06 100644 --- a/api_docs/kbn_core_custom_branding_server_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks title: "@kbn/core-custom-branding-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 d0d0dc5db65cc..cb4891afb2a62 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 eb3d82b08be26..2fcebc148f34f 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 3454f526a4658..40c40b888547e 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 745db2ae5330c..276dae6fdc910 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2024-01-03 +date: 2024-01-04 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 6ef3177e1992b..06938c8a2b3d5 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2024-01-03 +date: 2024-01-04 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 c0399a7f4d096..096e7236e1524 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 09d119948c21a..cc44b8b202e8f 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 ac09858373c69..2f95b164db63d 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 26b8565018958..e001c1a7741c5 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 4c4ad04ae1639..0dd3e339adf53 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2024-01-03 +date: 2024-01-04 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 4c7257ac2ac36..039d4286527ab 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 fec986b99d1fd..6ae23ebdbc4f2 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 c6850b2c70007..84519ae1e6f50 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 346ca2d190bbf..58dc5db374275 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2024-01-03 +date: 2024-01-04 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 39479af5f1377..30259cc8ff033 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 d5d27043ce5c4..fb88fcd87870e 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 1b2e8908f0a0f..0b45eda63a4d6 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 ce72221f86261..68780da325957 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 e11b99119989a..84acec6f8c4d0 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 5f2630e38c80c..6f5cdfc30e9fb 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 e1ed98c3c2126..dae8f7597fa85 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 4749de418f516..d3443180f5e37 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2024-01-03 +date: 2024-01-04 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 65ef3da10669f..9bcd85c18be25 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2024-01-03 +date: 2024-01-04 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 9a70bce6e3102..c55c66060c457 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 415460c1a58c7..c02aee85f62c2 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 84e518b002b46..a370ba31b7392 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 c30e71484c941..4cd23b56d2049 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 af017fb002122..b1d5fa2f87bf7 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 82de69c4be7ea..95910196e46a0 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 276d926365c69..bf351d6b6045b 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 2fc031418675d..cf934a82ce8a1 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2024-01-03 +date: 2024-01-04 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 ef4c144548594..cf0cc09149fe9 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 e1c2cc8c7ae18..c843f511ba710 100644 --- a/api_docs/kbn_core_http_request_handler_context_server.mdx +++ b/api_docs/kbn_core_http_request_handler_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server title: "@kbn/core-http-request-handler-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-request-handler-context-server plugin -date: 2024-01-03 +date: 2024-01-04 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 e8f02b23c9f33..9b26b97d0bf25 100644 --- a/api_docs/kbn_core_http_resources_server.mdx +++ b/api_docs/kbn_core_http_resources_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server title: "@kbn/core-http-resources-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server plugin -date: 2024-01-03 +date: 2024-01-04 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 43ed60b3ba322..3e9098cf3068b 100644 --- a/api_docs/kbn_core_http_resources_server_internal.mdx +++ b/api_docs/kbn_core_http_resources_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal title: "@kbn/core-http-resources-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 931293c715b06..0f301dc896f4c 100644 --- a/api_docs/kbn_core_http_resources_server_mocks.mdx +++ b/api_docs/kbn_core_http_resources_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks title: "@kbn/core-http-resources-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 69a2492af2c24..4619b1f044320 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 d5aa6a118e180..1b0b50082abf7 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 4ab26d2d59bc6..1646c74c42d11 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2024-01-03 +date: 2024-01-04 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 1df81d16867d5..95405dcd06ca7 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 263279611b441..d23065a22a01e 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 514b6aa871ad0..807e09bb6a594 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 8093ac0446912..20ebff06fbca3 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 09aec2547a4ac..f56413569351d 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2024-01-03 +date: 2024-01-04 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 c7c33a5b6118e..31ac9457e072f 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 5fb00144b8c78..47ccee6e6cd15 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 dbc63a501a5fd..2ed3ed3355a46 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 6ceb5a9662846..24be40a1fc587 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 09c38f28a542b..e1e5c04231041 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 dd98257acd82e..64ffdd809b2a6 100644 --- a/api_docs/kbn_core_lifecycle_browser.mdx +++ b/api_docs/kbn_core_lifecycle_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser title: "@kbn/core-lifecycle-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 f3acecd69cd42..6e94acb61527b 100644 --- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks title: "@kbn/core-lifecycle-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 dea4a77a2b4de..fc5a818242d33 100644 --- a/api_docs/kbn_core_lifecycle_server.mdx +++ b/api_docs/kbn_core_lifecycle_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server title: "@kbn/core-lifecycle-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server plugin -date: 2024-01-03 +date: 2024-01-04 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 c12bd0a09e3af..d66a001fbed30 100644 --- a/api_docs/kbn_core_lifecycle_server_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks title: "@kbn/core-lifecycle-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 40e5d02a8ad58..584b2355c3273 100644 --- a/api_docs/kbn_core_logging_browser_mocks.mdx +++ b/api_docs/kbn_core_logging_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks title: "@kbn/core-logging-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 e8722874c4686..a1e0764981126 100644 --- a/api_docs/kbn_core_logging_common_internal.mdx +++ b/api_docs/kbn_core_logging_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal title: "@kbn/core-logging-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-common-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 a51553a551049..431cd7f5a46b7 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2024-01-03 +date: 2024-01-04 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 9c2c844dff888..89e76e1e5d977 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 7b7ccf141fe28..7706403fd0843 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 c414274124d1e..13f01e4c371d4 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 35d68f65b5e58..1f612d9b47e42 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 4ee47e2d8dd60..a5110c2ef5806 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2024-01-03 +date: 2024-01-04 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 9aacfa448896c..0794553156ba8 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 0e1baa15d4200..1fcb936b77402 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 4752700e1c99d..e9d8e7bd63339 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 60f5ae32452b2..41847b2965ce1 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2024-01-03 +date: 2024-01-04 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 f7dc3c3ddc4f8..dc5608723d689 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 d63b0def5c05b..74e310e07bc4d 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 e1bb395d680b5..3c89672e3fcb5 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 8b67baca1c60a..f68349b2df2bd 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 5b153a5f41f39..aa66bff4ae8c5 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 f4b82cc736f55..099c145770adc 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 fd1f986e4c439..5ee90e5a9a9fd 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 abbfa4511d9f1..aca97bed11b21 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 da897df7ec3b9..3ad8d49e085d4 100644 --- a/api_docs/kbn_core_plugins_browser.mdx +++ b/api_docs/kbn_core_plugins_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser title: "@kbn/core-plugins-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 a2a0aaf9118c7..7517e87c6bf45 100644 --- a/api_docs/kbn_core_plugins_browser_mocks.mdx +++ b/api_docs/kbn_core_plugins_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks title: "@kbn/core-plugins-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index d040203085f15..2d32821e57a68 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index 49e8c56fb4b5b..3a622d5b19917 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index 1854c6fa54dce..e97622f466a7f 100644 --- a/api_docs/kbn_core_plugins_server.mdx +++ b/api_docs/kbn_core_plugins_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server title: "@kbn/core-plugins-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server plugin -date: 2024-01-03 +date: 2024-01-04 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 cc53b2eaaec33..789728222a03c 100644 --- a/api_docs/kbn_core_plugins_server_mocks.mdx +++ b/api_docs/kbn_core_plugins_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks title: "@kbn/core-plugins-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 4ad04774e3d68..3188532eef0c4 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2024-01-03 +date: 2024-01-04 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 a23b044901e0e..9abf502bc9841 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 40c49d0116428..1b65c430646de 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 bfd50e040c375..269a838711fe1 100644 --- a/api_docs/kbn_core_rendering_server_internal.mdx +++ b/api_docs/kbn_core_rendering_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal title: "@kbn/core-rendering-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 dcdb95e7bbcee..530d51da435ae 100644 --- a/api_docs/kbn_core_rendering_server_mocks.mdx +++ b/api_docs/kbn_core_rendering_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks title: "@kbn/core-rendering-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 66684b6ad5075..d88b4b65ba87f 100644 --- a/api_docs/kbn_core_root_server_internal.mdx +++ b/api_docs/kbn_core_root_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal title: "@kbn/core-root-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-root-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 e584098dad104..405eb70d599cb 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 92d730df53d96..36f8838849be8 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2024-01-03 +date: 2024-01-04 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 21829e8279486..690c0b69d4244 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 418fd4ac62c68..0dbdf60396e53 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 7bd30b20d2e47..ea3ea08c9248e 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 41e78996ea96d..8ea6c02a57b23 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 cb0fb3f6baa9e..0819d5a1e7997 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 a16963f102bfc..4658f309b11a5 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 5031e809ed813..a74bec6b40adf 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2024-01-03 +date: 2024-01-04 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 da7613f02bbd1..1a4c01991982f 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 9a4668c1262c4..f37847eb15bda 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 3eacc30df4fdb..be10a7df2c69e 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 9ca3561cc5916..83d236a7c90b8 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 5945e190b4691..073d01306e15f 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2024-01-03 +date: 2024-01-04 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 26180f76794cd..ff992ba279e5f 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 626cf4f89b04f..d0c9b94683c4c 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 34d470522d22e..9a655a53f3d2c 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2024-01-03 +date: 2024-01-04 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 18fcfbb094b01..30d1a76ba87a6 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2024-01-03 +date: 2024-01-04 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 bf766399819b4..e7b9d22253332 100644 --- a/api_docs/kbn_core_status_common_internal.mdx +++ b/api_docs/kbn_core_status_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal title: "@kbn/core-status-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 34beba74de29f..1ced970793db3 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2024-01-03 +date: 2024-01-04 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 2866e403ef49d..cb2db0211eeb1 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 2c962ca195ee4..2defa9b66cd1e 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 46528c170ec7d..bcd02b5b63d8f 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2024-01-03 +date: 2024-01-04 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 41a589bc5ac10..7c28f8c40e05c 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 13061b14ec965..d1f7537721766 100644 --- a/api_docs/kbn_core_test_helpers_kbn_server.mdx +++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server title: "@kbn/core-test-helpers-kbn-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-kbn-server plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index 7d924c455d36c..df6c2317422f8 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index e90d6e84ae5b5..a5d5ec6bcf424 100644 --- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx +++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer title: "@kbn/core-test-helpers-so-type-serializer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin -date: 2024-01-03 +date: 2024-01-04 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 69498c46d3d14..3812d80d05841 100644 --- a/api_docs/kbn_core_test_helpers_test_utils.mdx +++ b/api_docs/kbn_core_test_helpers_test_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils title: "@kbn/core-test-helpers-test-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-test-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 2cecef44b7aa4..ad3d2637f65c3 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 2d1e6cb70ad1f..1c655b9d37744 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 c0615e03e7124..933b7613d430e 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 7d1e4ae48cfd3..1759294c3ede1 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 1189bbd4e76f6..711277a14d313 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 c00ea25223ac0..48f92b475d5ea 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2024-01-03 +date: 2024-01-04 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 f377f812c53b7..9ab86721089f6 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2024-01-03 +date: 2024-01-04 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 9577d99b879e7..a177e83347b19 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 a9747955ced7d..d82f2f595f8eb 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 30a5f4f911ebd..c1fce322f9508 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2024-01-03 +date: 2024-01-04 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 c8f403350217a..420a7ba708a2f 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 9deb4e9043a4f..8df47910b2611 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 6d40f3e613b6b..b4252ff9424a0 100644 --- a/api_docs/kbn_core_user_settings_server.mdx +++ b/api_docs/kbn_core_user_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server title: "@kbn/core-user-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server plugin -date: 2024-01-03 +date: 2024-01-04 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 77a75b4c31f80..3fcfb92e24af9 100644 --- a/api_docs/kbn_core_user_settings_server_internal.mdx +++ b/api_docs/kbn_core_user_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-internal title: "@kbn/core-user-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-internal plugin -date: 2024-01-03 +date: 2024-01-04 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 e3362ebb5c110..bcd3b45938020 100644 --- a/api_docs/kbn_core_user_settings_server_mocks.mdx +++ b/api_docs/kbn_core_user_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks title: "@kbn/core-user-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 9782f7bcc7385..1756c3f446e3e 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2024-01-03 +date: 2024-01-04 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 c906455a6b7dc..df724db842c5a 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index 70392256f5d0a..f2a931c88273c 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index 2160f14689d94..99d54015c69a1 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index d67b6d92f1713..e9a58ed538b8f 100644 --- a/api_docs/kbn_cypress_config.mdx +++ b/api_docs/kbn_cypress_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config title: "@kbn/cypress-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cypress-config plugin -date: 2024-01-03 +date: 2024-01-04 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 71a723d246023..643081b1d4dae 100644 --- a/api_docs/kbn_data_service.mdx +++ b/api_docs/kbn_data_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service title: "@kbn/data-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-service plugin -date: 2024-01-03 +date: 2024-01-04 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 535720cf4e94a..81c40771e0bb7 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2024-01-03 +date: 2024-01-04 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 9d322f0778f15..2f5c0b0c898e2 100644 --- a/api_docs/kbn_deeplinks_analytics.mdx +++ b/api_docs/kbn_deeplinks_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics title: "@kbn/deeplinks-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-analytics plugin -date: 2024-01-03 +date: 2024-01-04 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 7a96972afca3f..be2b50795b6b8 100644 --- a/api_docs/kbn_deeplinks_devtools.mdx +++ b/api_docs/kbn_deeplinks_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools title: "@kbn/deeplinks-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-devtools plugin -date: 2024-01-03 +date: 2024-01-04 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 d4ba2283f9b33..9a9c64b5db9b0 100644 --- a/api_docs/kbn_deeplinks_management.mdx +++ b/api_docs/kbn_deeplinks_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management title: "@kbn/deeplinks-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-management plugin -date: 2024-01-03 +date: 2024-01-04 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 c8652fba0e7bb..7afa5a8820ef3 100644 --- a/api_docs/kbn_deeplinks_ml.mdx +++ b/api_docs/kbn_deeplinks_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml title: "@kbn/deeplinks-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-ml plugin -date: 2024-01-03 +date: 2024-01-04 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 a369a14687d79..f43d2395f1399 100644 --- a/api_docs/kbn_deeplinks_observability.mdx +++ b/api_docs/kbn_deeplinks_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability title: "@kbn/deeplinks-observability" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-observability plugin -date: 2024-01-03 +date: 2024-01-04 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 b95bad9a2e80a..f213317ca7a0a 100644 --- a/api_docs/kbn_deeplinks_search.mdx +++ b/api_docs/kbn_deeplinks_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search title: "@kbn/deeplinks-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-search plugin -date: 2024-01-03 +date: 2024-01-04 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 017d76bdbb719..2cac4b3d4fce7 100644 --- a/api_docs/kbn_default_nav_analytics.mdx +++ b/api_docs/kbn_default_nav_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics title: "@kbn/default-nav-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-analytics plugin -date: 2024-01-03 +date: 2024-01-04 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 a1440065b3f50..6fcd2c17b24e4 100644 --- a/api_docs/kbn_default_nav_devtools.mdx +++ b/api_docs/kbn_default_nav_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools title: "@kbn/default-nav-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-devtools plugin -date: 2024-01-03 +date: 2024-01-04 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 c7bf147d812b2..d6165f2f72d22 100644 --- a/api_docs/kbn_default_nav_management.mdx +++ b/api_docs/kbn_default_nav_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management title: "@kbn/default-nav-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-management plugin -date: 2024-01-03 +date: 2024-01-04 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 16526a11f6bba..b5a858abc5056 100644 --- a/api_docs/kbn_default_nav_ml.mdx +++ b/api_docs/kbn_default_nav_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml title: "@kbn/default-nav-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-ml plugin -date: 2024-01-03 +date: 2024-01-04 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 e5974cd2ed6eb..ff8d6d8c74371 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2024-01-03 +date: 2024-01-04 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 63e79c1b93307..41dc8147ad3a4 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2024-01-03 +date: 2024-01-04 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 17453f780b438..e4581551a701a 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2024-01-03 +date: 2024-01-04 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 dd10715c25188..d8eba73051f31 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 7a69e749fe9f2..834b54a7cc8b5 100644 --- a/api_docs/kbn_discover_utils.mdx +++ b/api_docs/kbn_discover_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils title: "@kbn/discover-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-utils plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index dbb26e025754b..26ad9f0b338ad 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2024-01-03 +date: 2024-01-04 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 ebb45c1079ca8..97ec6e097df36 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 c94f5987750c9..69962080ec4df 100644 --- a/api_docs/kbn_dom_drag_drop.mdx +++ b/api_docs/kbn_dom_drag_drop.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop title: "@kbn/dom-drag-drop" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dom-drag-drop plugin -date: 2024-01-03 +date: 2024-01-04 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 9543c83cdbb3d..b9a95c21a65f4 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2024-01-03 +date: 2024-01-04 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 935959878e454..655a8f4727802 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: 2024-01-03 +date: 2024-01-04 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 689a27844fad4..5f82c57739561 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.mdx +++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard title: "@kbn/ecs-data-quality-dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs-data-quality-dashboard plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index 1670c41dae040..c37ce828a8515 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index 2f4fc945428b0..1d76023b58651 100644 --- a/api_docs/kbn_elastic_assistant.mdx +++ b/api_docs/kbn_elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant title: "@kbn/elastic-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index 9c944f0bf5b28..dc32cd0edca70 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index df177dc44a94c..fef9a0cc1a18e 100644 --- a/api_docs/kbn_es.mdx +++ b/api_docs/kbn_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es title: "@kbn/es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es plugin -date: 2024-01-03 +date: 2024-01-04 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 426fbe2e3f71a..cb8a2c1ea7cb0 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2024-01-03 +date: 2024-01-04 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 4b4d5ee0d43b9..211c745a6f22a 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.devdocs.json b/api_docs/kbn_es_query.devdocs.json index f8c36e7dbc2b1..bbf0ed6c546aa 100644 --- a/api_docs/kbn_es_query.devdocs.json +++ b/api_docs/kbn_es_query.devdocs.json @@ -2815,6 +2815,39 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/es-query", + "id": "def-common.getLimitFromESQLQuery", + "type": "Function", + "tags": [], + "label": "getLimitFromESQLQuery", + "description": [], + "signature": [ + "(esql: string) => number" + ], + "path": "packages/kbn-es-query/src/es_query/es_aggregate_query.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/es-query", + "id": "def-common.getLimitFromESQLQuery.$1", + "type": "string", + "tags": [], + "label": "esql", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-es-query/src/es_query/es_aggregate_query.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/es-query", "id": "def-common.isCombinedFilter", diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 04ef6c7b6d3f0..74a7c73aec306 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.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 | |-------------------|-----------|------------------------|-----------------| -| 267 | 1 | 207 | 15 | +| 269 | 1 | 209 | 15 | ## Common diff --git a/api_docs/kbn_es_types.devdocs.json b/api_docs/kbn_es_types.devdocs.json index 37cab03f85e11..aaf5f53cf1583 100644 --- a/api_docs/kbn_es_types.devdocs.json +++ b/api_docs/kbn_es_types.devdocs.json @@ -114,6 +114,98 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/es-types", + "id": "def-common.ESQLColumn", + "type": "Interface", + "tags": [], + "label": "ESQLColumn", + "description": [], + "path": "packages/kbn-es-types/src/search.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/es-types", + "id": "def-common.ESQLColumn.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-es-types/src/search.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/es-types", + "id": "def-common.ESQLColumn.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "path": "packages/kbn-es-types/src/search.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/es-types", + "id": "def-common.ESQLSearchReponse", + "type": "Interface", + "tags": [], + "label": "ESQLSearchReponse", + "description": [], + "path": "packages/kbn-es-types/src/search.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/es-types", + "id": "def-common.ESQLSearchReponse.columns", + "type": "Array", + "tags": [], + "label": "columns", + "description": [], + "signature": [ + { + "pluginId": "@kbn/es-types", + "scope": "common", + "docId": "kibKbnEsTypesPluginApi", + "section": "def-common.ESQLColumn", + "text": "ESQLColumn" + }, + "[]" + ], + "path": "packages/kbn-es-types/src/search.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/es-types", + "id": "def-common.ESQLSearchReponse.values", + "type": "Array", + "tags": [], + "label": "values", + "description": [], + "signature": [ + { + "pluginId": "@kbn/es-types", + "scope": "common", + "docId": "kibKbnEsTypesPluginApi", + "section": "def-common.ESQLRow", + "text": "ESQLRow" + }, + "[]" + ], + "path": "packages/kbn-es-types/src/search.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/es-types", "id": "def-common.ESSearchOptions", @@ -390,6 +482,21 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/es-types", + "id": "def-common.ESQLRow", + "type": "Type", + "tags": [], + "label": "ESQLRow", + "description": [], + "signature": [ + "unknown[]" + ], + "path": "packages/kbn-es-types/src/search.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/es-types", "id": "def-common.ESSearchRequest", diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index b970c49d3c813..2239b14ba2ac0 100644 --- a/api_docs/kbn_es_types.mdx +++ b/api_docs/kbn_es_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types title: "@kbn/es-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-types plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.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 | |-------------------|-----------|------------------------|-----------------| -| 19 | 0 | 19 | 0 | +| 26 | 0 | 26 | 0 | ## Common diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index 8f725923411af..a87f273b8bdd2 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2024-01-03 +date: 2024-01-04 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 e4c0f7b5a4437..a78fb63d369e0 100644 --- a/api_docs/kbn_event_annotation_common.mdx +++ b/api_docs/kbn_event_annotation_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common title: "@kbn/event-annotation-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-common plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index ff1517ae1b59d..7b0106699b554 100644 --- a/api_docs/kbn_event_annotation_components.mdx +++ b/api_docs/kbn_event_annotation_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components title: "@kbn/event-annotation-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-components plugin -date: 2024-01-03 +date: 2024-01-04 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 9c140e044bba4..ae08844018103 100644 --- a/api_docs/kbn_expandable_flyout.mdx +++ b/api_docs/kbn_expandable_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout title: "@kbn/expandable-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/expandable-flyout plugin -date: 2024-01-03 +date: 2024-01-04 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 22c559f70a6f0..cb55a29f3f27a 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index 02c6f4bd66adf..06b57eb8264ed 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index de6b1fdee5f49..0c91dccea3f64 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2024-01-03 +date: 2024-01-04 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 1410ce0b1edbc..1f31375de175b 100644 --- a/api_docs/kbn_ftr_common_functional_services.mdx +++ b/api_docs/kbn_ftr_common_functional_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services title: "@kbn/ftr-common-functional-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-services plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index c0447d91a8980..5ae37e8d16e56 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index a7d1a12c44a9c..36eafb28920c1 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2024-01-03 +date: 2024-01-04 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 bf03bd157f8f9..c1df6a5359777 100644 --- a/api_docs/kbn_generate_console_definitions.mdx +++ b/api_docs/kbn_generate_console_definitions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions title: "@kbn/generate-console-definitions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-console-definitions plugin -date: 2024-01-03 +date: 2024-01-04 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 7236b8c2a2055..7bac3ecd7910f 100644 --- a/api_docs/kbn_generate_csv.mdx +++ b/api_docs/kbn_generate_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv title: "@kbn/generate-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index 87e92255ec291..db5cdc5bfb7da 100644 --- a/api_docs/kbn_guided_onboarding.mdx +++ b/api_docs/kbn_guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding title: "@kbn/guided-onboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/guided-onboarding plugin -date: 2024-01-03 +date: 2024-01-04 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 ece5567608b1b..6a0befe70ba7f 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2024-01-03 +date: 2024-01-04 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 17bb23390b867..bb37a568b1ec5 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 2e58c2b0c74c4..627e55d7366ab 100644 --- a/api_docs/kbn_health_gateway_server.mdx +++ b/api_docs/kbn_health_gateway_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server title: "@kbn/health-gateway-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/health-gateway-server plugin -date: 2024-01-03 +date: 2024-01-04 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 1dfc83f6a280b..441e0efe22fd7 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2024-01-03 +date: 2024-01-04 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 7374f07335517..6799d3dd72d8a 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2024-01-03 +date: 2024-01-04 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 5c87c1bd9a073..8a55b88394817 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2024-01-03 +date: 2024-01-04 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 2f9dfe84b2fa6..11fa0001cf29a 100644 --- a/api_docs/kbn_i18n_react.mdx +++ b/api_docs/kbn_i18n_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react title: "@kbn/i18n-react" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n-react plugin -date: 2024-01-03 +date: 2024-01-04 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 9c5ae7112f347..ec1fb89e48854 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2024-01-03 +date: 2024-01-04 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 9a28f3cc28a04..7f40747ccdcba 100644 --- a/api_docs/kbn_infra_forge.mdx +++ b/api_docs/kbn_infra_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge title: "@kbn/infra-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/infra-forge plugin -date: 2024-01-03 +date: 2024-01-04 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 04232da34b033..6ac0d16ef0a88 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 95303c94ee32f..75987734e69fd 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 bc27368ebfe3f..9e823e2397576 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2024-01-03 +date: 2024-01-04 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 1a3289e17468a..8f1a3030fbbb7 100644 --- a/api_docs/kbn_journeys.mdx +++ b/api_docs/kbn_journeys.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys title: "@kbn/journeys" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/journeys plugin -date: 2024-01-03 +date: 2024-01-04 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 1be271e7fb49a..c49f1a87109fb 100644 --- a/api_docs/kbn_json_ast.mdx +++ b/api_docs/kbn_json_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast title: "@kbn/json-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-ast plugin -date: 2024-01-03 +date: 2024-01-04 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 883ec22a62a8b..5f60c54d9642c 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2024-01-03 +date: 2024-01-04 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 ec6def5b60bd8..324f24f8675e0 100644 --- a/api_docs/kbn_language_documentation_popover.mdx +++ b/api_docs/kbn_language_documentation_popover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover title: "@kbn/language-documentation-popover" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation-popover plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index e02c88f3ee05d..545336948dd3e 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_lens_formula_docs.mdx b/api_docs/kbn_lens_formula_docs.mdx index 5d63a5d0cce64..49d87393a64b1 100644 --- a/api_docs/kbn_lens_formula_docs.mdx +++ b/api_docs/kbn_lens_formula_docs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-formula-docs title: "@kbn/lens-formula-docs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-formula-docs plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-formula-docs'] --- import kbnLensFormulaDocsObj from './kbn_lens_formula_docs.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 0aad7f0b31b60..542f339b089d4 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2024-01-03 +date: 2024-01-04 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 608f5e661b253..94d7cca0be296 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 0e76dcfee8184..bc1555c584f97 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2024-01-03 +date: 2024-01-04 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 3b7c3219f961c..1bdb160fbc40a 100644 --- a/api_docs/kbn_management_cards_navigation.mdx +++ b/api_docs/kbn_management_cards_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation title: "@kbn/management-cards-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-cards-navigation plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index 89e1034ca738b..19b9ea606ec35 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index 74809bc030a97..affa6056621a0 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index bd4a5ce1f8c46..8ee7f834f3c6a 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index 6a2b8f7df7556..68a0b2989d6d8 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index 7ef6f131a7201..01813717bb7ba 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index 4868c02e24d88..8c23fe69ea36b 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index db3f309da4413..a2af9654d6fd7 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index 14daebc7a1ef0..d8c9c2b467eae 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index 46fe06d3202fa..843c1a1a00164 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index d83cd2ed75991..3c816e2185887 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 12aed4a625022..eba599a7e5075 100644 --- a/api_docs/kbn_management_storybook_config.mdx +++ b/api_docs/kbn_management_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config title: "@kbn/management-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-storybook-config plugin -date: 2024-01-03 +date: 2024-01-04 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 13562d6da3e93..1f5342d2c4d1c 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2024-01-03 +date: 2024-01-04 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 6afb6f2796da8..c9bd0585c6686 100644 --- a/api_docs/kbn_maps_vector_tile_utils.mdx +++ b/api_docs/kbn_maps_vector_tile_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils title: "@kbn/maps-vector-tile-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/maps-vector-tile-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 bce484f2a3ba9..5d2de4f593d7a 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 f555b04985d4c..4ae0cd37048f3 100644 --- a/api_docs/kbn_ml_anomaly_utils.mdx +++ b/api_docs/kbn_ml_anomaly_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils title: "@kbn/ml-anomaly-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-anomaly-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 7844c32ad787c..1749b7b94941d 100644 --- a/api_docs/kbn_ml_category_validator.mdx +++ b/api_docs/kbn_ml_category_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator title: "@kbn/ml-category-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-category-validator plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index 32843c50baf6d..87aa68a02ce1e 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index 2a237add5bb32..b51e24cfc9e02 100644 --- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx +++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils title: "@kbn/ml-data-frame-analytics-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-frame-analytics-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 7050f7dccb806..15704541aba35 100644 --- a/api_docs/kbn_ml_data_grid.mdx +++ b/api_docs/kbn_ml_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid title: "@kbn/ml-data-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-grid plugin -date: 2024-01-03 +date: 2024-01-04 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 b49a49b6197d2..7f1d1f24f296b 100644 --- a/api_docs/kbn_ml_date_picker.mdx +++ b/api_docs/kbn_ml_date_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker title: "@kbn/ml-date-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-picker plugin -date: 2024-01-03 +date: 2024-01-04 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 c590ad4216cc2..32d332cb36251 100644 --- a/api_docs/kbn_ml_date_utils.mdx +++ b/api_docs/kbn_ml_date_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils title: "@kbn/ml-date-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 d8ca772173fca..0817c29408526 100644 --- a/api_docs/kbn_ml_error_utils.mdx +++ b/api_docs/kbn_ml_error_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils title: "@kbn/ml-error-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-error-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 aa56ebf03fd15..7b99edefb5d33 100644 --- a/api_docs/kbn_ml_in_memory_table.mdx +++ b/api_docs/kbn_ml_in_memory_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table title: "@kbn/ml-in-memory-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-in-memory-table plugin -date: 2024-01-03 +date: 2024-01-04 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 a21fc6b630fc1..ba7f8df01c943 100644 --- a/api_docs/kbn_ml_is_defined.mdx +++ b/api_docs/kbn_ml_is_defined.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined title: "@kbn/ml-is-defined" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-defined plugin -date: 2024-01-03 +date: 2024-01-04 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 ca8f6f8dabee1..cc3caa796ca3f 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2024-01-03 +date: 2024-01-04 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 55e6b1a595d3a..2baaadefca37e 100644 --- a/api_docs/kbn_ml_kibana_theme.mdx +++ b/api_docs/kbn_ml_kibana_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-kibana-theme title: "@kbn/ml-kibana-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-kibana-theme plugin -date: 2024-01-03 +date: 2024-01-04 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 c81a827f09ba7..9c43a57f9ec49 100644 --- a/api_docs/kbn_ml_local_storage.mdx +++ b/api_docs/kbn_ml_local_storage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage title: "@kbn/ml-local-storage" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-local-storage plugin -date: 2024-01-03 +date: 2024-01-04 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 5fcbbce949ab2..ea76351c49442 100644 --- a/api_docs/kbn_ml_nested_property.mdx +++ b/api_docs/kbn_ml_nested_property.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property title: "@kbn/ml-nested-property" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-nested-property plugin -date: 2024-01-03 +date: 2024-01-04 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 549b31f6914df..8d5b4fd623e5c 100644 --- a/api_docs/kbn_ml_number_utils.mdx +++ b/api_docs/kbn_ml_number_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils title: "@kbn/ml-number-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-number-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 7b6d8e7ba6737..c647a2df0a9e5 100644 --- a/api_docs/kbn_ml_query_utils.mdx +++ b/api_docs/kbn_ml_query_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils title: "@kbn/ml-query-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-query-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 79bccf79b8e18..a841aba311646 100644 --- a/api_docs/kbn_ml_random_sampler_utils.mdx +++ b/api_docs/kbn_ml_random_sampler_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils title: "@kbn/ml-random-sampler-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-random-sampler-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 5a686d30db186..ccd80736003c1 100644 --- a/api_docs/kbn_ml_route_utils.mdx +++ b/api_docs/kbn_ml_route_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils title: "@kbn/ml-route-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-route-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 30ad12e967919..492263a8f3d01 100644 --- a/api_docs/kbn_ml_runtime_field_utils.mdx +++ b/api_docs/kbn_ml_runtime_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils title: "@kbn/ml-runtime-field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-runtime-field-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 34f8d460992c3..f25d70b6cd1f1 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2024-01-03 +date: 2024-01-04 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 02e93e5198380..a11036a8ec060 100644 --- a/api_docs/kbn_ml_trained_models_utils.mdx +++ b/api_docs/kbn_ml_trained_models_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils title: "@kbn/ml-trained-models-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-trained-models-utils plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_ui_actions.mdx b/api_docs/kbn_ml_ui_actions.mdx index be58f24546153..77579773f2d25 100644 --- a/api_docs/kbn_ml_ui_actions.mdx +++ b/api_docs/kbn_ml_ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-ui-actions title: "@kbn/ml-ui-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-ui-actions plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-ui-actions'] --- import kbnMlUiActionsObj from './kbn_ml_ui_actions.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 49ff37164b4cd..eb3fc4d159e98 100644 --- a/api_docs/kbn_ml_url_state.mdx +++ b/api_docs/kbn_ml_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state title: "@kbn/ml-url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-url-state plugin -date: 2024-01-03 +date: 2024-01-04 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 81cc6961a3dfd..af33db98bd479 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2024-01-03 +date: 2024-01-04 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 cb1ef42476df8..3a7f7718854db 100644 --- a/api_docs/kbn_object_versioning.mdx +++ b/api_docs/kbn_object_versioning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning title: "@kbn/object-versioning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning plugin -date: 2024-01-03 +date: 2024-01-04 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 54645dda86e93..c9745d645c585 100644 --- a/api_docs/kbn_observability_alert_details.mdx +++ b/api_docs/kbn_observability_alert_details.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details title: "@kbn/observability-alert-details" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alert-details plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index 529085337a743..42a2150e00911 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index 9bddb8fc65312..b13a5137b825e 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index 2e474066f282f..bd8a7f9a511aa 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index 92dc147c6dfe3..f351063dc53f1 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 2fe16fd4e8bbc..106de241e3f71 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2024-01-03 +date: 2024-01-04 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 95da111246b73..3c99f96697c13 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2024-01-03 +date: 2024-01-04 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 428b1988c5266..9ec21c688095b 100644 --- a/api_docs/kbn_osquery_io_ts_types.mdx +++ b/api_docs/kbn_osquery_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types title: "@kbn/osquery-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/osquery-io-ts-types plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index c1be463949bc5..95b31bd16993f 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 43b7ecb46c378..7bb20cc446e44 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2024-01-03 +date: 2024-01-04 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 2de8e21c2b5dd..9a2911c70c02a 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2024-01-03 +date: 2024-01-04 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 daa193082d6fa..0264711c85004 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index 18436bcedaea1..6f0b23f99b947 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 420fa81ed4057..3f36204f291bd 100644 --- a/api_docs/kbn_random_sampling.mdx +++ b/api_docs/kbn_random_sampling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling title: "@kbn/random-sampling" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/random-sampling plugin -date: 2024-01-03 +date: 2024-01-04 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 ef1d5e1575d16..ae92727810f60 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2024-01-03 +date: 2024-01-04 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 09218d858f4a4..752c4a1b3b5ba 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2024-01-03 +date: 2024-01-04 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 315a71dd74f08..3ab51934192ba 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2024-01-03 +date: 2024-01-04 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 74e588dcd6974..b428dd102f64e 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2024-01-03 +date: 2024-01-04 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 7ce89ba190aa5..ec8467440e1cc 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2024-01-03 +date: 2024-01-04 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 05e5c7aecedc6..425336cc11126 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2024-01-03 +date: 2024-01-04 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 fb18a053e3ffa..ae9ad6538f42e 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2024-01-03 +date: 2024-01-04 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 415c2cea3cf7c..934e8dc6db220 100644 --- a/api_docs/kbn_repo_file_maps.mdx +++ b/api_docs/kbn_repo_file_maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps title: "@kbn/repo-file-maps" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-file-maps plugin -date: 2024-01-03 +date: 2024-01-04 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 7282467a965ce..8452c33949f34 100644 --- a/api_docs/kbn_repo_linter.mdx +++ b/api_docs/kbn_repo_linter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter title: "@kbn/repo-linter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-linter plugin -date: 2024-01-03 +date: 2024-01-04 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 f148614157a0b..d1b4e65b919cc 100644 --- a/api_docs/kbn_repo_path.mdx +++ b/api_docs/kbn_repo_path.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path title: "@kbn/repo-path" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-path plugin -date: 2024-01-03 +date: 2024-01-04 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 4bc6616c3081b..544e2b0664268 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2024-01-03 +date: 2024-01-04 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 da5c09a6d0c8f..5e307d64f309a 100644 --- a/api_docs/kbn_reporting_common.mdx +++ b/api_docs/kbn_reporting_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common title: "@kbn/reporting-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-common plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index f5e18c1615ac7..cffea7d370a0f 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index e8481d356dabb..3c031d6311cba 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index 42ff98e422988..a55f05c20655c 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index 2252fb1d7977b..16068bfc850d3 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index 8176c546a0fe0..888ab158d8b78 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index f39d7e111bc91..edeaa5bcba34a 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index 0061529c8c618..fd930185f2947 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index a052bd3626774..efc40ca26ab59 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index 8bfe06034f44e..4c448634c1009 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index 64399026f1acc..b30087977bd6a 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 97cf0ad255b20..e3d821bf69509 100644 --- a/api_docs/kbn_rison.mdx +++ b/api_docs/kbn_rison.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison title: "@kbn/rison" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rison plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index 1d208bc86fcb0..41dd91c10405b 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index e32b7867319ec..d7667564e2673 100644 --- a/api_docs/kbn_rrule.mdx +++ b/api_docs/kbn_rrule.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule title: "@kbn/rrule" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rrule plugin -date: 2024-01-03 +date: 2024-01-04 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 6af048a8e4864..ba718f93a7ea5 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 b99395bfe0711..6dde8ce80a6b5 100644 --- a/api_docs/kbn_saved_objects_settings.mdx +++ b/api_docs/kbn_saved_objects_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings title: "@kbn/saved-objects-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-objects-settings plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index b728a36f9c936..a13947e6e5261 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index a9f69c48340be..87f07895068e2 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index d4942841b3e92..6436525cb6a0b 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index bf8f93490d97a..be8ab42529bc2 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index 524bbb2ba17d5..7fdb3a3cf28fe 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index da636b1c1eb17..dbee323f97b17 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index adc89d81337bc..98b7d98ee4725 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index 00c15e7cccb6c..e0f56bc22e011 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index cadcb170ebc94..2fbb7e118c612 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index 566e682d55ee9..92e8e8344b2b6 100644 --- a/api_docs/kbn_security_solution_navigation.mdx +++ b/api_docs/kbn_security_solution_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation title: "@kbn/security-solution-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-navigation plugin -date: 2024-01-03 +date: 2024-01-04 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 6b2e00f57c6ea..aff5bd1085fa8 100644 --- a/api_docs/kbn_security_solution_side_nav.mdx +++ b/api_docs/kbn_security_solution_side_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav title: "@kbn/security-solution-side-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-side-nav plugin -date: 2024-01-03 +date: 2024-01-04 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 834885381eda9..dc21480479027 100644 --- a/api_docs/kbn_security_solution_storybook_config.mdx +++ b/api_docs/kbn_security_solution_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config title: "@kbn/security-solution-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-storybook-config plugin -date: 2024-01-03 +date: 2024-01-04 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 e10ab24287a01..7163dac06cdc2 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2024-01-03 +date: 2024-01-04 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 2f6b6b2851d8c..90937af245e19 100644 --- a/api_docs/kbn_securitysolution_data_table.mdx +++ b/api_docs/kbn_securitysolution_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table title: "@kbn/securitysolution-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-data-table plugin -date: 2024-01-03 +date: 2024-01-04 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 bd1e25d126795..51e74190ac751 100644 --- a/api_docs/kbn_securitysolution_ecs.mdx +++ b/api_docs/kbn_securitysolution_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs title: "@kbn/securitysolution-ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-ecs plugin -date: 2024-01-03 +date: 2024-01-04 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 a9d6f110a244b..17a40ed54bda2 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 f437cefd7525b..b2afeec510c3c 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.mdx +++ b/api_docs/kbn_securitysolution_exception_list_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components title: "@kbn/securitysolution-exception-list-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-exception-list-components plugin -date: 2024-01-03 +date: 2024-01-04 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 7ad7facc591d5..db37eb84d8666 100644 --- a/api_docs/kbn_securitysolution_grouping.mdx +++ b/api_docs/kbn_securitysolution_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-grouping title: "@kbn/securitysolution-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-grouping plugin -date: 2024-01-03 +date: 2024-01-04 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 efeb0e6fe16a1..0854b53299222 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 520f50d1154c7..acb3294dcff1b 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2024-01-03 +date: 2024-01-04 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 83b2bc0d036f5..ea3f440adbbeb 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2024-01-03 +date: 2024-01-04 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 d8a27520e0ec8..4e888725a1da8 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2024-01-03 +date: 2024-01-04 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 57966232ac0ed..0ffb44db27367 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 ca14c731fa9ec..40e6da5004cc5 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2024-01-03 +date: 2024-01-04 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 9abe4ac959005..18f0cf1ae0ee2 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2024-01-03 +date: 2024-01-04 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 28e949d75ba67..2a3347f55bae6 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2024-01-03 +date: 2024-01-04 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 5ce57dbadb96f..c1ee608bb1db2 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 3ae83f273eec8..afa1e118ebf3e 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2024-01-03 +date: 2024-01-04 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 373d807dc9d11..a87fc0b2ac0ed 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2024-01-03 +date: 2024-01-04 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 6d17995911366..95f3463571774 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2024-01-03 +date: 2024-01-04 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 455ddc5f82b63..ae4b50cd3bb4a 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2024-01-03 +date: 2024-01-04 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 d29cce7f05c69..937fee8f57568 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index e9433cf3b698d..f81861d2b7a22 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index a1660b4bd7e88..ae38e144c548d 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index 93523f759f581..2f55b792e84bf 100644 --- a/api_docs/kbn_serverless_project_switcher.mdx +++ b/api_docs/kbn_serverless_project_switcher.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher title: "@kbn/serverless-project-switcher" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-project-switcher plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index cc0f78b5a522e..c6dc4f07ec729 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index 67423f625ef46..83ebdf1d77e17 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index c8925d6bf6fb7..ec1bab55da237 100644 --- a/api_docs/kbn_serverless_storybook_config.mdx +++ b/api_docs/kbn_serverless_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config title: "@kbn/serverless-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-storybook-config plugin -date: 2024-01-03 +date: 2024-01-04 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 7c922d1e2b589..5431f9e167731 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2024-01-03 +date: 2024-01-04 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 796bcda6e0e9b..066131a53df68 100644 --- a/api_docs/kbn_shared_ux_avatar_solution.mdx +++ b/api_docs/kbn_shared_ux_avatar_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution title: "@kbn/shared-ux-avatar-solution" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-solution plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index de736c1d7f90f..3938867793590 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen title: "@kbn/shared-ux-button-exit-full-screen" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index 58a5ab4b38f8f..ef44ec1d7e587 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2024-01-03 +date: 2024-01-04 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 90d1f72419326..c3f456f227f0d 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data title: "@kbn/shared-ux-card-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2024-01-03 +date: 2024-01-04 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 fd3e522119dbe..5d15ab603ca6c 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 224a41536790b..bc6f88412940d 100644 --- a/api_docs/kbn_shared_ux_chrome_navigation.mdx +++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation title: "@kbn/shared-ux-chrome-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-chrome-navigation plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index 248fd2e12c3b4..54073921400a3 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index f6f66007e3ab5..bc71b9ad9324d 100644 --- a/api_docs/kbn_shared_ux_file_context.mdx +++ b/api_docs/kbn_shared_ux_file_context.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context title: "@kbn/shared-ux-file-context" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-context plugin -date: 2024-01-03 +date: 2024-01-04 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 61eae0e2d5d6e..5bf4b8888bcf7 100644 --- a/api_docs/kbn_shared_ux_file_image.mdx +++ b/api_docs/kbn_shared_ux_file_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image title: "@kbn/shared-ux-file-image" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image plugin -date: 2024-01-03 +date: 2024-01-04 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 1ae453e2c3a63..b0657728c183f 100644 --- a/api_docs/kbn_shared_ux_file_image_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks title: "@kbn/shared-ux-file-image-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 bef9e26fb6764..a3c5b0c967b45 100644 --- a/api_docs/kbn_shared_ux_file_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks title: "@kbn/shared-ux-file-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 3650f4ac8270d..f4a8ac64778b2 100644 --- a/api_docs/kbn_shared_ux_file_picker.mdx +++ b/api_docs/kbn_shared_ux_file_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker title: "@kbn/shared-ux-file-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-picker plugin -date: 2024-01-03 +date: 2024-01-04 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 e6a8523cba6b7..5a36f4e70f4b7 100644 --- a/api_docs/kbn_shared_ux_file_types.mdx +++ b/api_docs/kbn_shared_ux_file_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types title: "@kbn/shared-ux-file-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-types plugin -date: 2024-01-03 +date: 2024-01-04 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 9912cf8d22e9c..214d49cacc56c 100644 --- a/api_docs/kbn_shared_ux_file_upload.mdx +++ b/api_docs/kbn_shared_ux_file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload title: "@kbn/shared-ux-file-upload" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-upload plugin -date: 2024-01-03 +date: 2024-01-04 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 494f4af5b8330..55a174557b7ba 100644 --- a/api_docs/kbn_shared_ux_file_util.mdx +++ b/api_docs/kbn_shared_ux_file_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util title: "@kbn/shared-ux-file-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-util plugin -date: 2024-01-03 +date: 2024-01-04 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 132b156c677ba..dfd6ed1999a23 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app title: "@kbn/shared-ux-link-redirect-app" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app plugin -date: 2024-01-03 +date: 2024-01-04 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 4f0a1d6d682a2..8352f4b366f71 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 564a99f44d3af..099046c2f5f2d 100644 --- a/api_docs/kbn_shared_ux_markdown.mdx +++ b/api_docs/kbn_shared_ux_markdown.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown title: "@kbn/shared-ux-markdown" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown plugin -date: 2024-01-03 +date: 2024-01-04 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 14043b1af7ccd..99d0a0fe58b55 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.mdx +++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks title: "@kbn/shared-ux-markdown-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 76ecc24e5c503..93d84a4d60904 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2024-01-03 +date: 2024-01-04 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 5952a742ad198..b7b893d353ce1 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 a19f29ae4197d..b2e2082bf682c 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2024-01-03 +date: 2024-01-04 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 6edab56b60236..7886c18d6e140 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 6846a3f39744a..6a5df38fdb42b 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2024-01-03 +date: 2024-01-04 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 2a1d929f82bc2..cfc33d1476587 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 8f7d5e9972bed..9039fd3d9ddad 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2024-01-03 +date: 2024-01-04 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 ccca99c9c473f..6b510fb7bb1d7 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2024-01-03 +date: 2024-01-04 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 aa615696e5bca..f71530cb9c8ea 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 803059f6fa37b..538aa87c13941 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 0c13af1740585..40b76ca9599e6 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2024-01-03 +date: 2024-01-04 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 cc38c174485a1..b5c76b7869f4a 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2024-01-03 +date: 2024-01-04 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 2673bb590a21b..40ea019a88d4e 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 68513b4bdc5bd..38f5104395b42 100644 --- a/api_docs/kbn_shared_ux_prompt_not_found.mdx +++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found title: "@kbn/shared-ux-prompt-not-found" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-not-found plugin -date: 2024-01-03 +date: 2024-01-04 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 a1921cc39f3ce..339bdfe6f8a4f 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2024-01-03 +date: 2024-01-04 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 8d3c93253e39a..7389373f01590 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2024-01-03 +date: 2024-01-04 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 5b90814ed5685..f791535672973 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2024-01-03 +date: 2024-01-04 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 d69ac1205fe9d..3f305dba05a87 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2024-01-03 +date: 2024-01-04 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 4cb6047f567a5..6eefeea597adf 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2024-01-03 +date: 2024-01-04 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.devdocs.json b/api_docs/kbn_slo_schema.devdocs.json index 6ee292f202063..bd1f6fc99dc21 100644 --- a/api_docs/kbn_slo_schema.devdocs.json +++ b/api_docs/kbn_slo_schema.devdocs.json @@ -590,7 +590,7 @@ "label": "CreateSLOInput", "description": [], "signature": [ - "{ name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; } & { id?: string | undefined; settings?: { syncDelay?: string | undefined; frequency?: string | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }" + "{ name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; } & { id?: string | undefined; settings?: { syncDelay?: string | undefined; frequency?: string | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; revision?: number | undefined; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", "deprecated": false, @@ -645,7 +645,7 @@ "section": "def-common.Duration", "text": "Duration" }, - " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }" + " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; revision?: number | undefined; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", "deprecated": false, @@ -1865,7 +1865,9 @@ "LiteralC", "<\"*\">, ", "StringC", - "]>; }>]>; }>" + "]>; revision: ", + "NumberC", + "; }>]>; }>" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", "deprecated": false, diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index 89dbd5e19d512..ebc02e018b762 100644 --- a/api_docs/kbn_slo_schema.mdx +++ b/api_docs/kbn_slo_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema title: "@kbn/slo-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/slo-schema plugin -date: 2024-01-03 +date: 2024-01-04 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 dd6d1cd901524..4e4bcfdef739e 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2024-01-03 +date: 2024-01-04 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 2c8d82b3d13ce..e41f4e72b5f45 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2024-01-03 +date: 2024-01-04 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 4dab60cc6a5b0..a59d24d575dd9 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2024-01-03 +date: 2024-01-04 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 915c6a4406be4..463a6ccd8e6b4 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2024-01-03 +date: 2024-01-04 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 c88538f066da9..d017bcc4387d9 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2024-01-03 +date: 2024-01-04 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 8a458402df9d3..dbc578273baf9 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2024-01-03 +date: 2024-01-04 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 80aa7c0b186fc..90ad352d24301 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2024-01-03 +date: 2024-01-04 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 3d129388e8d9b..d2a83bfeb5823 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_text_based_editor.devdocs.json b/api_docs/kbn_text_based_editor.devdocs.json index 69205611cafdf..593be947f90f7 100644 --- a/api_docs/kbn_text_based_editor.devdocs.json +++ b/api_docs/kbn_text_based_editor.devdocs.json @@ -394,6 +394,22 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "@kbn/text-based-editor", + "id": "def-public.TextBasedLanguagesEditorProps.isLoading", + "type": "CompoundType", + "tags": [], + "label": "isLoading", + "description": [ + "Disables the editor and displays loading icon in run button" + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-text-based-editor/src/text_based_languages_editor.tsx", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "@kbn/text-based-editor", "id": "def-public.TextBasedLanguagesEditorProps.isDisabled", diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx index 03bf2b4697f27..6fbbedbb4060e 100644 --- a/api_docs/kbn_text_based_editor.mdx +++ b/api_docs/kbn_text_based_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-text-based-editor title: "@kbn/text-based-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/text-based-editor plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor'] --- import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 25 | 0 | 10 | 0 | +| 26 | 0 | 10 | 0 | ## Client diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 653a918f3428c..8394bd0a1bedd 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index 4f57c9886f97c..588370be25ebd 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 4ba0d12a8120d..a6f14944025e9 100644 --- a/api_docs/kbn_ts_projects.mdx +++ b/api_docs/kbn_ts_projects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects title: "@kbn/ts-projects" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ts-projects plugin -date: 2024-01-03 +date: 2024-01-04 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 e71fb6b97df1b..a98d6266b66b0 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2024-01-03 +date: 2024-01-04 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 a8c13d1fb6c78..46ba6f2227f30 100644 --- a/api_docs/kbn_ui_actions_browser.mdx +++ b/api_docs/kbn_ui_actions_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser title: "@kbn/ui-actions-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-actions-browser plugin -date: 2024-01-03 +date: 2024-01-04 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 04c5a4630b4e1..01f1a1b95e1f8 100644 --- a/api_docs/kbn_ui_shared_deps_src.mdx +++ b/api_docs/kbn_ui_shared_deps_src.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src title: "@kbn/ui-shared-deps-src" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-shared-deps-src plugin -date: 2024-01-03 +date: 2024-01-04 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 05444f50727f5..2054df010326b 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index 27c0944ded0b7..32098ef443509 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index 2cd19b347d1ee..99b430eb56fc9 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.devdocs.json b/api_docs/kbn_unified_field_list.devdocs.json index 541b20f210c13..1f322e1c28603 100644 --- a/api_docs/kbn_unified_field_list.devdocs.json +++ b/api_docs/kbn_unified_field_list.devdocs.json @@ -31,7 +31,7 @@ "\nField list item component" ], "signature": [ - "({\n field,\n fieldSearchHighlight,\n isSelected,\n isActive,\n isEmpty,\n infoIcon,\n className,\n getCustomFieldType,\n dataTestSubj,\n size,\n onClick,\n shouldAlwaysShowAction,\n buttonAddFieldToWorkspaceProps,\n buttonRemoveFieldFromWorkspaceProps,\n onAddFieldToWorkspace,\n onRemoveFieldFromWorkspace,\n ...otherProps\n}: ", + "({\n field,\n fieldSearchHighlight,\n isSelected,\n isActive,\n isEmpty,\n infoIcon,\n className,\n getCustomFieldType,\n dataTestSubj,\n size,\n withDragIcon,\n onClick,\n shouldAlwaysShowAction,\n buttonAddFieldToWorkspaceProps,\n buttonRemoveFieldFromWorkspaceProps,\n onAddFieldToWorkspace,\n onRemoveFieldFromWorkspace,\n ...otherProps\n}: ", { "pluginId": "@kbn/unified-field-list", "scope": "common", @@ -50,7 +50,7 @@ "id": "def-common.FieldItemButton.$1", "type": "Object", "tags": [], - "label": "{\n field,\n fieldSearchHighlight,\n isSelected,\n isActive,\n isEmpty,\n infoIcon,\n className,\n getCustomFieldType,\n dataTestSubj,\n size,\n onClick,\n shouldAlwaysShowAction,\n buttonAddFieldToWorkspaceProps,\n buttonRemoveFieldFromWorkspaceProps,\n onAddFieldToWorkspace,\n onRemoveFieldFromWorkspace,\n ...otherProps\n}", + "label": "{\n field,\n fieldSearchHighlight,\n isSelected,\n isActive,\n isEmpty,\n infoIcon,\n className,\n getCustomFieldType,\n dataTestSubj,\n size,\n withDragIcon,\n onClick,\n shouldAlwaysShowAction,\n buttonAddFieldToWorkspaceProps,\n buttonRemoveFieldFromWorkspaceProps,\n onAddFieldToWorkspace,\n onRemoveFieldFromWorkspace,\n ...otherProps\n}", "description": [], "signature": [ { @@ -2417,13 +2417,13 @@ }, { "parentPluginId": "@kbn/unified-field-list", - "id": "def-common.FieldItemButtonProps.dragHandle", - "type": "Object", + "id": "def-common.FieldItemButtonProps.withDragIcon", + "type": "CompoundType", "tags": [], - "label": "dragHandle", + "label": "withDragIcon", "description": [], "signature": [ - "React.ReactElement> | undefined" + "boolean | undefined" ], "path": "packages/kbn-unified-field-list/src/components/field_item_button/field_item_button.tsx", "deprecated": false, diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index 941aa79576c78..52be5cce13839 100644 --- a/api_docs/kbn_unified_field_list.mdx +++ b/api_docs/kbn_unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list title: "@kbn/unified-field-list" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-field-list plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index 54cf31b1cfa91..aae4e0e6b7214 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx index 92172339b303d..52085bb35f2b4 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: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index f1a231f2edd3b..20ffe3d59787b 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 61c7ded7ee365..10edf6016074c 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index 3c1c971dc9643..7d3fc106dac29 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2024-01-03 +date: 2024-01-04 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 fe8b3fa0b2eae..c276f12da1e50 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2024-01-03 +date: 2024-01-04 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 870a70ccc59a0..f069f54e5d8c3 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2024-01-03 +date: 2024-01-04 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 4457643c9d519..f5580d57a021d 100644 --- a/api_docs/kbn_visualization_ui_components.mdx +++ b/api_docs/kbn_visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components title: "@kbn/visualization-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-ui-components plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_visualization_utils.mdx b/api_docs/kbn_visualization_utils.mdx index 83120f04b39b1..7f270fa1d36f3 100644 --- a/api_docs/kbn_visualization_utils.mdx +++ b/api_docs/kbn_visualization_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-utils title: "@kbn/visualization-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-utils plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-utils'] --- import kbnVisualizationUtilsObj from './kbn_visualization_utils.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index 068712904f1f3..ef70cc8f32ac4 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 5bc2ac9d9b274..0c633dc5c27d5 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index 30d93558b2aab..a418ec701d6cc 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 900c0050bccc1..f856e3a8ce372 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2024-01-03 +date: 2024-01-04 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 e970238d6160b..8707e724e80e0 100644 --- a/api_docs/kibana_react.devdocs.json +++ b/api_docs/kibana_react.devdocs.json @@ -1399,6 +1399,22 @@ "plugin": "osquery", "path": "x-pack/plugins/osquery/public/application.tsx" }, + { + "plugin": "ingestPipelines", + "path": "x-pack/plugins/ingest_pipelines/public/shared_imports.ts" + }, + { + "plugin": "ingestPipelines", + "path": "x-pack/plugins/ingest_pipelines/public/application/index.tsx" + }, + { + "plugin": "ingestPipelines", + "path": "x-pack/plugins/ingest_pipelines/public/application/index.tsx" + }, + { + "plugin": "ingestPipelines", + "path": "x-pack/plugins/ingest_pipelines/public/application/index.tsx" + }, { "plugin": "profiling", "path": "x-pack/plugins/profiling/public/app.tsx" @@ -1579,22 +1595,6 @@ "plugin": "infra", "path": "x-pack/plugins/infra/public/apps/common_providers.tsx" }, - { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/public/shared_imports.ts" - }, - { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/public/application/index.tsx" - }, - { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/public/application/index.tsx" - }, - { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/public/application/index.tsx" - }, { "plugin": "logstash", "path": "x-pack/plugins/logstash/public/application/index.tsx" diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index f062f7a1978ef..b24f96cb3444e 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2024-01-03 +date: 2024-01-04 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 51a97b2547ba7..b5c7372638bcb 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2024-01-03 +date: 2024-01-04 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 ddd27527049c5..a5ffb3a455b9c 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the kubernetesSecurity plugin -date: 2024-01-03 +date: 2024-01-04 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 77b173434d849..162d4ed72ae98 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2024-01-03 +date: 2024-01-04 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 dd62dc6469ab8..ea890b5957f21 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2024-01-03 +date: 2024-01-04 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 22ba90cd24a27..e3b420f9e5b17 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index cc0934bb97f61..14e73c2998c72 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index cd5906c590ddc..cf0d1eed7664f 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 459851d88d76a..010957d4e13d3 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx index 0f86843637c18..7cfcac8ae5cf6 100644 --- a/api_docs/log_explorer.mdx +++ b/api_docs/log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logExplorer title: "logExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logExplorer plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer'] --- import logExplorerObj from './log_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 8b6055b3dc3f0..0353663c316d2 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2024-01-03 +date: 2024-01-04 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 21d1f4112a115..eea3cf75d8548 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.devdocs.json b/api_docs/maps.devdocs.json index 96444b697240f..0ad90fed89145 100644 --- a/api_docs/maps.devdocs.json +++ b/api_docs/maps.devdocs.json @@ -3370,6 +3370,22 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "maps", + "id": "def-public.IVectorSource.getInspectorRequestIds", + "type": "Function", + "tags": [], + "label": "getInspectorRequestIds", + "description": [], + "signature": [ + "() => string[]" + ], + "path": "x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] } ], "initialIsOpen": false @@ -3989,7 +4005,7 @@ "section": "def-common.LayerDescriptor", "text": "LayerDescriptor" }, - "[]) => void; mapColors: string[]; currentStepId: string | null; isOnFinalStep: boolean; enableNextBtn: () => void; disableNextBtn: () => void; startStepLoading: () => void; stopStepLoading: () => void; advanceToNextStep: () => void; }" + "[]) => void; mapColors: string[]; mostCommonDataViewId?: string | undefined; currentStepId: string | null; isOnFinalStep: boolean; enableNextBtn: () => void; disableNextBtn: () => void; startStepLoading: () => void; stopStepLoading: () => void; advanceToNextStep: () => void; }" ], "path": "x-pack/plugins/maps/public/classes/layers/wizards/layer_wizard_registry.ts", "deprecated": false, diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index b38008b55d907..816acd8202392 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 260 | 0 | 259 | 28 | +| 261 | 0 | 260 | 28 | ## Client diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index 11ea4193bf725..e7e002205a35a 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index 0c4cfa7f55142..9fd89853595bd 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index bbb4846ee65ec..682e2bdebbdff 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index 80aac90bc6263..d4b39b356cba6 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 0b77040cf831e..2f971fff8ff49 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2024-01-03 +date: 2024-01-04 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 4e375924fb996..be8ae0637856b 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2024-01-03 +date: 2024-01-04 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 53f14005f29da..9356cae6383b0 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2024-01-03 +date: 2024-01-04 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 1a184b5a94b66..9947a396715b1 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index 08b58bf9ae33f..3031839874fc8 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 502d1e6ac2292..68875d62f9d62 100644 --- a/api_docs/notifications.mdx +++ b/api_docs/notifications.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications title: "notifications" image: https://source.unsplash.com/400x175/?github description: API docs for the notifications plugin -date: 2024-01-03 +date: 2024-01-04 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 423280f403ac4..905d4306e1661 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -9467,7 +9467,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"POST /api/observability/slos 2023-10-31\": { endpoint: \"POST /api/observability/slos 2023-10-31\"; params?: ", + "; \"POST /internal/api/observability/slos/_inspect 2023-10-31\": { endpoint: \"POST /internal/api/observability/slos/_inspect 2023-10-31\"; params?: ", "TypeC", "<{ body: ", "IntersectionC", @@ -9899,7 +9899,9 @@ "LiteralC", "<\"*\">, ", "StringC", - "]>; }>]>; }> | undefined; handler: ({}: ", + "]>; revision: ", + "NumberC", + "; }>]>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -9947,109 +9949,51 @@ "section": "def-common.Duration", "text": "Duration" }, - " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }; }; }) => Promise<{ id: string; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\": { endpoint: \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\"; params?: ", - "TypeC", - "<{ query: ", - "TypeC", - "<{ registrationContexts: ", - "ArrayC", - "<", - "StringC", - ">; namespace: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", + " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; revision?: number | undefined; }; }; }) => Promise<{ slo: { name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: ", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - " & { params: { query: { registrationContexts: string[]; namespace: string; }; }; }) => Promise; } & ", + "; type: \"rolling\"; } | { duration: ", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - "; }[TEndpoint] extends { endpoint: any; params?: any; handler: ({}: any) => Promise; } & ", - "ServerRouteCreateOptions", - " ? TReturnType : never" - ], - "path": "x-pack/plugins/observability/server/routes/types.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "observability", - "id": "def-server.ObservabilityConfig", - "type": "Type", - "tags": [], - "label": "ObservabilityConfig", - "description": [], - "signature": [ - "{ readonly enabled: boolean; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly customThresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly createO11yGenericFeatureId: boolean; readonly sloOrphanSummaryCleanUpTaskEnabled: boolean; }" - ], - "path": "x-pack/plugins/observability/server/index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "observability", - "id": "def-server.ObservabilityServerRouteRepository", - "type": "Type", - "tags": [], - "label": "ObservabilityServerRouteRepository", - "description": [], - "signature": [ - "{ \"POST /api/observability/slos/{id}/_reset 2023-10-31\": { endpoint: \"POST /api/observability/slos/{id}/_reset 2023-10-31\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", + "; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - " & { params: { path: { id: string; }; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; version: number; } & { instanceId?: string | undefined; }>; } & ", + " | undefined; }; } & { id?: string | undefined; settings?: { syncDelay?: ", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - "; \"GET /internal/observability/slos/{id}/_instances\": { endpoint: \"GET /internal/observability/slos/{id}/_instances\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", + " | undefined; frequency?: ", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - " & { params: { path: { id: string; }; }; }) => Promise<{ groupBy: string; instances: string[]; }>; } & ", + " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; revision?: number | undefined; }; pipeline: Record; rollUpTransform: ", + "TransformPutTransformRequest", + "; summaryTransform: ", + "TransformPutTransformRequest", + "; temporaryDoc: Record; }>; } & ", { "pluginId": "observability", "scope": "server", @@ -10057,11 +10001,17 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"POST /internal/observability/slos/_preview\": { endpoint: \"POST /internal/observability/slos/_preview\"; params?: ", + "; \"POST /api/observability/slos 2023-10-31\": { endpoint: \"POST /api/observability/slos 2023-10-31\"; params?: ", "TypeC", "<{ body: ", + "IntersectionC", + "<[", "TypeC", - "<{ indicator: ", + "<{ name: ", + "StringC", + "; description: ", + "StringC", + "; indicator: ", "UnionC", "<[", "TypeC", @@ -10391,49 +10341,69 @@ "PartialC", "<{ filter: ", "StringC", - "; }>]>; }>]>; range: ", + "; }>]>; }>]>; timeWindow: ", + "UnionC", + "<[", "TypeC", - "<{ start: ", - "NumberC", - "; end: ", - "NumberC", - "; }>; }>; }> | undefined; handler: ({}: ", + "<{ duration: ", + "Type", + "<", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - " & { params: { body: { indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; range: { start: number; end: number; }; }; }; }) => Promise<({ date: string; sliValue: number; } & { events?: { good: number; bad: number; total: number; } | undefined; })[]>; } & ", + ", string, unknown>; type: ", + "LiteralC", + "<\"rolling\">; }>, ", + "TypeC", + "<{ duration: ", + "Type", + "<", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - "; \"POST /internal/observability/slos/{id}/_burn_rates\": { endpoint: \"POST /internal/observability/slos/{id}/_burn_rates\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; body: ", - "TypeC", - "<{ instanceId: ", + ", string, unknown>; type: ", + "LiteralC", + "<\"calendarAligned\">; }>]>; budgetingMethod: ", "UnionC", "<[", "LiteralC", - "<\"*\">, ", - "StringC", - "]>; windows: ", - "ArrayC", - "<", + "<\"occurrences\">, ", + "LiteralC", + "<\"timeslices\">]>; objective: ", + "IntersectionC", + "<[", "TypeC", - "<{ name: ", + "<{ target: ", + "NumberC", + "; }>, ", + "PartialC", + "<{ timesliceTarget: ", + "NumberC", + "; timesliceWindow: ", + "Type", + "<", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + ", string, unknown>; }>]>; }>, ", + "PartialC", + "<{ id: ", "StringC", - "; duration: ", + "; settings: ", + "PartialC", + "<{ syncDelay: ", "Type", "<", { @@ -10443,7 +10413,29 @@ "section": "def-common.Duration", "text": "Duration" }, - ", string, unknown>; }>>; }>; }> | undefined; handler: ({}: ", + ", string, unknown>; frequency: ", + "Type", + "<", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + ", string, unknown>; }>; tags: ", + "ArrayC", + "<", + "StringC", + ">; groupBy: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; revision: ", + "NumberC", + "; }>]>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -10451,7 +10443,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { path: { id: string; }; body: { instanceId: string; windows: { name: string; duration: ", + " & { params: { body: { name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -10459,15 +10451,1085 @@ "section": "def-common.Duration", "text": "Duration" }, - "; }[]; }; }; }) => Promise<{ burnRates: { name: string; burnRate: number; sli: number; }[]; }>; } & ", + "; type: \"rolling\"; } | { duration: ", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - "; \"GET /internal/observability/slos/_diagnosis\": { endpoint: \"GET /internal/observability/slos/_diagnosis\"; params?: undefined; handler: ({}: ", + "; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + " | undefined; }; } & { id?: string | undefined; settings?: { syncDelay?: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + " | undefined; frequency?: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; revision?: number | undefined; }; }; }) => Promise<{ id: string; }>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\": { endpoint: \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\"; params?: ", + "TypeC", + "<{ query: ", + "TypeC", + "<{ registrationContexts: ", + "ArrayC", + "<", + "StringC", + ">; namespace: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { query: { registrationContexts: string[]; namespace: string; }; }; }) => Promise; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; }[TEndpoint] extends { endpoint: any; params?: any; handler: ({}: any) => Promise; } & ", + "ServerRouteCreateOptions", + " ? TReturnType : never" + ], + "path": "x-pack/plugins/observability/server/routes/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "observability", + "id": "def-server.ObservabilityConfig", + "type": "Type", + "tags": [], + "label": "ObservabilityConfig", + "description": [], + "signature": [ + "{ readonly enabled: boolean; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly customThresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly createO11yGenericFeatureId: boolean; readonly sloOrphanSummaryCleanUpTaskEnabled: boolean; }" + ], + "path": "x-pack/plugins/observability/server/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "observability", + "id": "def-server.ObservabilityServerRouteRepository", + "type": "Type", + "tags": [], + "label": "ObservabilityServerRouteRepository", + "description": [], + "signature": [ + "{ \"POST /api/observability/slos/{id}/_reset 2023-10-31\": { endpoint: \"POST /api/observability/slos/{id}/_reset 2023-10-31\"; params?: ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ id: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { path: { id: string; }; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; version: number; } & { instanceId?: string | undefined; }>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"GET /internal/observability/slos/{id}/_instances\": { endpoint: \"GET /internal/observability/slos/{id}/_instances\"; params?: ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ id: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { path: { id: string; }; }; }) => Promise<{ groupBy: string; instances: string[]; }>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"POST /internal/observability/slos/_preview\": { endpoint: \"POST /internal/observability/slos/_preview\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ indicator: ", + "UnionC", + "<[", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.apm.transactionDuration\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; service: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; threshold: ", + "NumberC", + "; index: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.apm.transactionErrorRate\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; service: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; index: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.kql.custom\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ index: ", + "StringC", + "; good: ", + "StringC", + "; total: ", + "StringC", + "; timestampField: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.metric.custom\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ index: ", + "StringC", + "; good: ", + "TypeC", + "<{ metrics: ", + "ArrayC", + "<", + "UnionC", + "<[", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"sum\">; field: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>, ", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"doc_count\">; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>]>>; equation: ", + "StringC", + "; }>; total: ", + "TypeC", + "<{ metrics: ", + "ArrayC", + "<", + "UnionC", + "<[", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"sum\">; field: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>, ", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"doc_count\">; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>]>>; equation: ", + "StringC", + "; }>; timestampField: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.metric.timeslice\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ index: ", + "StringC", + "; metric: ", + "TypeC", + "<{ metrics: ", + "ArrayC", + "<", + "UnionC", + "<[", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "KeyofC", + "<{ avg: boolean; max: boolean; min: boolean; sum: boolean; cardinality: boolean; last_value: boolean; std_deviation: boolean; }>; field: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>, ", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"doc_count\">; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>, ", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"percentile\">; field: ", + "StringC", + "; percentile: ", + "NumberC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>]>>; equation: ", + "StringC", + "; threshold: ", + "NumberC", + "; comparator: ", + "KeyofC", + "<{ GT: string; GTE: string; LT: string; LTE: string; }>; }>; timestampField: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.histogram.custom\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ index: ", + "StringC", + "; timestampField: ", + "StringC", + "; good: ", + "UnionC", + "<[", + "IntersectionC", + "<[", + "TypeC", + "<{ field: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"value_count\">; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>, ", + "IntersectionC", + "<[", + "TypeC", + "<{ field: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"range\">; from: ", + "NumberC", + "; to: ", + "NumberC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>]>; total: ", + "UnionC", + "<[", + "IntersectionC", + "<[", + "TypeC", + "<{ field: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"value_count\">; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>, ", + "IntersectionC", + "<[", + "TypeC", + "<{ field: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"range\">; from: ", + "NumberC", + "; to: ", + "NumberC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>]>; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>]>; range: ", + "TypeC", + "<{ start: ", + "NumberC", + "; end: ", + "NumberC", + "; }>; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { body: { indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; range: { start: number; end: number; }; }; }; }) => Promise<({ date: string; sliValue: number; } & { events?: { good: number; bad: number; total: number; } | undefined; })[]>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"POST /internal/observability/slos/{id}/_burn_rates\": { endpoint: \"POST /internal/observability/slos/{id}/_burn_rates\"; params?: ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ id: ", + "StringC", + "; }>; body: ", + "TypeC", + "<{ instanceId: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; windows: ", + "ArrayC", + "<", + "TypeC", + "<{ name: ", + "StringC", + "; duration: ", + "Type", + "<", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + ", string, unknown>; }>>; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { path: { id: string; }; body: { instanceId: string; windows: { name: string; duration: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + "; }[]; }; }; }) => Promise<{ burnRates: { name: string; burnRate: number; sli: number; }[]; }>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"GET /internal/observability/slos/_diagnosis\": { endpoint: \"GET /internal/observability/slos/_diagnosis\"; params?: undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + ") => Promise<{ licenseAndFeatures: ", + "PublicLicenseJSON", + "; userPrivileges: { write: ", + "SecurityHasPrivilegesResponse", + "; read: ", + "SecurityHasPrivilegesResponse", + "; }; }>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"PUT /api/observability/slos/{id} 2023-10-31\": { endpoint: \"PUT /api/observability/slos/{id} 2023-10-31\"; params?: ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ id: ", + "StringC", + "; }>; body: ", + "PartialC", + "<{ name: ", + "StringC", + "; description: ", + "StringC", + "; indicator: ", + "UnionC", + "<[", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.apm.transactionDuration\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; service: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; threshold: ", + "NumberC", + "; index: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.apm.transactionErrorRate\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; service: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; index: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.kql.custom\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ index: ", + "StringC", + "; good: ", + "StringC", + "; total: ", + "StringC", + "; timestampField: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.metric.custom\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ index: ", + "StringC", + "; good: ", + "TypeC", + "<{ metrics: ", + "ArrayC", + "<", + "UnionC", + "<[", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"sum\">; field: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>, ", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"doc_count\">; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>]>>; equation: ", + "StringC", + "; }>; total: ", + "TypeC", + "<{ metrics: ", + "ArrayC", + "<", + "UnionC", + "<[", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"sum\">; field: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>, ", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"doc_count\">; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>]>>; equation: ", + "StringC", + "; }>; timestampField: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.metric.timeslice\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ index: ", + "StringC", + "; metric: ", + "TypeC", + "<{ metrics: ", + "ArrayC", + "<", + "UnionC", + "<[", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "KeyofC", + "<{ avg: boolean; max: boolean; min: boolean; sum: boolean; cardinality: boolean; last_value: boolean; std_deviation: boolean; }>; field: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>, ", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"doc_count\">; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>, ", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"percentile\">; field: ", + "StringC", + "; percentile: ", + "NumberC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>]>>; equation: ", + "StringC", + "; threshold: ", + "NumberC", + "; comparator: ", + "KeyofC", + "<{ GT: string; GTE: string; LT: string; LTE: string; }>; }>; timestampField: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.histogram.custom\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ index: ", + "StringC", + "; timestampField: ", + "StringC", + "; good: ", + "UnionC", + "<[", + "IntersectionC", + "<[", + "TypeC", + "<{ field: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"value_count\">; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>, ", + "IntersectionC", + "<[", + "TypeC", + "<{ field: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"range\">; from: ", + "NumberC", + "; to: ", + "NumberC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>]>; total: ", + "UnionC", + "<[", + "IntersectionC", + "<[", + "TypeC", + "<{ field: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"value_count\">; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>, ", + "IntersectionC", + "<[", + "TypeC", + "<{ field: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"range\">; from: ", + "NumberC", + "; to: ", + "NumberC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>]>; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>]>; timeWindow: ", + "UnionC", + "<[", + "TypeC", + "<{ duration: ", + "Type", + "<", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + ", string, unknown>; type: ", + "LiteralC", + "<\"rolling\">; }>, ", + "TypeC", + "<{ duration: ", + "Type", + "<", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + ", string, unknown>; type: ", + "LiteralC", + "<\"calendarAligned\">; }>]>; budgetingMethod: ", + "UnionC", + "<[", + "LiteralC", + "<\"occurrences\">, ", + "LiteralC", + "<\"timeslices\">]>; objective: ", + "IntersectionC", + "<[", + "TypeC", + "<{ target: ", + "NumberC", + "; }>, ", + "PartialC", + "<{ timesliceTarget: ", + "NumberC", + "; timesliceWindow: ", + "Type", + "<", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + ", string, unknown>; }>]>; settings: ", + "PartialC", + "<{ syncDelay: ", + "Type", + "<", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + ", string, unknown>; frequency: ", + "Type", + "<", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + ", string, unknown>; }>; tags: ", + "ArrayC", + "<", + "StringC", + ">; groupBy: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { path: { id: string; }; body: { name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; } | undefined; timeWindow?: { duration: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + "; type: \"rolling\"; } | { duration: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + "; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + " | undefined; }) | undefined; settings?: { syncDelay?: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + " | undefined; frequency?: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; version: number; } & { instanceId?: string | undefined; }>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"GET /api/observability/slos/{id} 2023-10-31\": { endpoint: \"GET /api/observability/slos/{id} 2023-10-31\"; params?: ", + "IntersectionC", + "<[", + "TypeC", + "<{ path: ", + "TypeC", + "<{ id: ", + "StringC", + "; }>; }>, ", + "PartialC", + "<{ query: ", + "PartialC", + "<{ instanceId: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; }>; }>]> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -10475,13 +11537,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - ") => Promise<{ licenseAndFeatures: ", - "PublicLicenseJSON", - "; userPrivileges: { write: ", - "SecurityHasPrivilegesResponse", - "; read: ", - "SecurityHasPrivilegesResponse", - "; }; }>; } & ", + " & { params: { path: { id: string; }; } & { query?: { instanceId?: string | undefined; } | undefined; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; version: number; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }>; } & ", { "pluginId": "observability", "scope": "server", @@ -10489,14 +11545,208 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"PUT /api/observability/slos/{id} 2023-10-31\": { endpoint: \"PUT /api/observability/slos/{id} 2023-10-31\"; params?: ", + "; \"GET /api/observability/slos 2023-10-31\": { endpoint: \"GET /api/observability/slos 2023-10-31\"; params?: ", + "PartialC", + "<{ query: ", + "PartialC", + "<{ kqlQuery: ", + "StringC", + "; page: ", + "StringC", + "; perPage: ", + "StringC", + "; sortBy: ", + "UnionC", + "<[", + "LiteralC", + "<\"error_budget_consumed\">, ", + "LiteralC", + "<\"error_budget_remaining\">, ", + "LiteralC", + "<\"sli_value\">, ", + "LiteralC", + "<\"status\">]>; sortDirection: ", + "UnionC", + "<[", + "LiteralC", + "<\"asc\">, ", + "LiteralC", + "<\"desc\">]>; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params?: { query?: { kqlQuery?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"status\" | \"error_budget_consumed\" | \"error_budget_remaining\" | \"sli_value\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; version: number; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"GET /api/observability/slos/_definitions 2023-10-31\": { endpoint: \"GET /api/observability/slos/_definitions 2023-10-31\"; params?: ", + "PartialC", + "<{ query: ", + "PartialC", + "<{ search: ", + "StringC", + "; includeOutdatedOnly: ", + "Type", + "; page: ", + "StringC", + "; perPage: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params?: { query?: { search?: string | undefined; includeOutdatedOnly?: boolean | undefined; page?: string | undefined; perPage?: string | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; version: number; } & { instanceId?: string | undefined; })[]; }>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"POST /internal/observability/slos/_historical_summary\": { endpoint: \"POST /internal/observability/slos/_historical_summary\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ list: ", + "ArrayC", + "<", + "TypeC", + "<{ sloId: ", + "StringC", + "; instanceId: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; }>>; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { body: { list: { sloId: string; instanceId: string; }[]; }; }; }) => Promise<{ sloId: string; instanceId: string; data: ({ date: string; } & { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; })[]; }[]>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"POST /api/observability/slos/{id}/enable 2023-10-31\": { endpoint: \"POST /api/observability/slos/{id}/enable 2023-10-31\"; params?: ", "TypeC", "<{ path: ", "TypeC", "<{ id: ", "StringC", - "; }>; body: ", - "PartialC", + "; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { path: { id: string; }; }; }) => Promise; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"POST /api/observability/slos/{id}/disable 2023-10-31\": { endpoint: \"POST /api/observability/slos/{id}/disable 2023-10-31\"; params?: ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ id: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { path: { id: string; }; }; }) => Promise; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"POST /api/observability/slos/_delete_instances 2023-10-31\": { endpoint: \"POST /api/observability/slos/_delete_instances 2023-10-31\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ list: ", + "ArrayC", + "<", + "TypeC", + "<{ sloId: ", + "StringC", + "; instanceId: ", + "StringC", + "; }>>; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { body: { list: { sloId: string; instanceId: string; }[]; }; }; }) => Promise; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"DELETE /api/observability/slos/{id} 2023-10-31\": { endpoint: \"DELETE /api/observability/slos/{id} 2023-10-31\"; params?: ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ id: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { path: { id: string; }; }; }) => Promise; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"POST /internal/api/observability/slos/_inspect 2023-10-31\": { endpoint: \"POST /internal/api/observability/slos/_inspect 2023-10-31\"; params?: ", + "TypeC", + "<{ body: ", + "IntersectionC", + "<[", + "TypeC", "<{ name: ", "StringC", "; description: ", @@ -10887,7 +12137,11 @@ "section": "def-common.Duration", "text": "Duration" }, - ", string, unknown>; }>]>; settings: ", + ", string, unknown>; }>]>; }>, ", + "PartialC", + "<{ id: ", + "StringC", + "; settings: ", "PartialC", "<{ syncDelay: ", "Type", @@ -10919,7 +12173,9 @@ "LiteralC", "<\"*\">, ", "StringC", - "]>; }>; }> | undefined; handler: ({}: ", + "]>; revision: ", + "NumberC", + "; }>]>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -10927,7 +12183,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { path: { id: string; }; body: { name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; } | undefined; timeWindow?: { duration: ", + " & { params: { body: { name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -10943,7 +12199,7 @@ "section": "def-common.Duration", "text": "Duration" }, - "; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", + "; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -10951,7 +12207,7 @@ "section": "def-common.Duration", "text": "Duration" }, - " | undefined; }) | undefined; settings?: { syncDelay?: ", + " | undefined; }; } & { id?: string | undefined; settings?: { syncDelay?: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -10967,237 +12223,51 @@ "section": "def-common.Duration", "text": "Duration" }, - " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; version: number; } & { instanceId?: string | undefined; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"GET /api/observability/slos/{id} 2023-10-31\": { endpoint: \"GET /api/observability/slos/{id} 2023-10-31\"; params?: ", - "IntersectionC", - "<[", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }>, ", - "PartialC", - "<{ query: ", - "PartialC", - "<{ instanceId: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; }>; }>]> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; } & { query?: { instanceId?: string | undefined; } | undefined; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; version: number; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"GET /api/observability/slos 2023-10-31\": { endpoint: \"GET /api/observability/slos 2023-10-31\"; params?: ", - "PartialC", - "<{ query: ", - "PartialC", - "<{ kqlQuery: ", - "StringC", - "; page: ", - "StringC", - "; perPage: ", - "StringC", - "; sortBy: ", - "UnionC", - "<[", - "LiteralC", - "<\"error_budget_consumed\">, ", - "LiteralC", - "<\"error_budget_remaining\">, ", - "LiteralC", - "<\"sli_value\">, ", - "LiteralC", - "<\"status\">]>; sortDirection: ", - "UnionC", - "<[", - "LiteralC", - "<\"asc\">, ", - "LiteralC", - "<\"desc\">]>; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params?: { query?: { kqlQuery?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"status\" | \"error_budget_consumed\" | \"error_budget_remaining\" | \"sli_value\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; version: number; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"GET /api/observability/slos/_definitions 2023-10-31\": { endpoint: \"GET /api/observability/slos/_definitions 2023-10-31\"; params?: ", - "PartialC", - "<{ query: ", - "PartialC", - "<{ search: ", - "StringC", - "; includeOutdatedOnly: ", - "Type", - "; page: ", - "StringC", - "; perPage: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params?: { query?: { search?: string | undefined; includeOutdatedOnly?: boolean | undefined; page?: string | undefined; perPage?: string | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; version: number; } & { instanceId?: string | undefined; })[]; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"POST /internal/observability/slos/_historical_summary\": { endpoint: \"POST /internal/observability/slos/_historical_summary\"; params?: ", - "TypeC", - "<{ body: ", - "TypeC", - "<{ list: ", - "ArrayC", - "<", - "TypeC", - "<{ sloId: ", - "StringC", - "; instanceId: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; }>>; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { body: { list: { sloId: string; instanceId: string; }[]; }; }; }) => Promise<{ sloId: string; instanceId: string; data: ({ date: string; } & { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; })[]; }[]>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"POST /api/observability/slos/{id}/enable 2023-10-31\": { endpoint: \"POST /api/observability/slos/{id}/enable 2023-10-31\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; }; }) => Promise; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"POST /api/observability/slos/{id}/disable 2023-10-31\": { endpoint: \"POST /api/observability/slos/{id}/disable 2023-10-31\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", + " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; revision?: number | undefined; }; }; }) => Promise<{ slo: { name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: ", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - " & { params: { path: { id: string; }; }; }) => Promise; } & ", + "; type: \"rolling\"; } | { duration: ", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - "; \"POST /api/observability/slos/_delete_instances 2023-10-31\": { endpoint: \"POST /api/observability/slos/_delete_instances 2023-10-31\"; params?: ", - "TypeC", - "<{ body: ", - "TypeC", - "<{ list: ", - "ArrayC", - "<", - "TypeC", - "<{ sloId: ", - "StringC", - "; instanceId: ", - "StringC", - "; }>>; }>; }> | undefined; handler: ({}: ", + "; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - " & { params: { body: { list: { sloId: string; instanceId: string; }[]; }; }; }) => Promise; } & ", + " | undefined; }; } & { id?: string | undefined; settings?: { syncDelay?: ", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - "; \"DELETE /api/observability/slos/{id} 2023-10-31\": { endpoint: \"DELETE /api/observability/slos/{id} 2023-10-31\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", + " | undefined; frequency?: ", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - " & { params: { path: { id: string; }; }; }) => Promise; } & ", + " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; revision?: number | undefined; }; pipeline: Record; rollUpTransform: ", + "TransformPutTransformRequest", + "; summaryTransform: ", + "TransformPutTransformRequest", + "; temporaryDoc: Record; }>; } & ", { "pluginId": "observability", "scope": "server", @@ -11637,7 +12707,9 @@ "LiteralC", "<\"*\">, ", "StringC", - "]>; }>]>; }> | undefined; handler: ({}: ", + "]>; revision: ", + "NumberC", + "; }>]>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -11685,7 +12757,7 @@ "section": "def-common.Duration", "text": "Duration" }, - " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }; }; }) => Promise<{ id: string; }>; } & ", + " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; revision?: number | undefined; }; }; }) => Promise<{ id: string; }>; } & ", { "pluginId": "observability", "scope": "server", diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index d468bbe94eafc..bbb951a816d2a 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index d7ce131b6a005..3f95923dd0f9c 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_log_explorer.mdx b/api_docs/observability_log_explorer.mdx index 9c960bc052bf9..302ac71a55f4f 100644 --- a/api_docs/observability_log_explorer.mdx +++ b/api_docs/observability_log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogExplorer title: "observabilityLogExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogExplorer plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogExplorer'] --- import observabilityLogExplorerObj from './observability_log_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 0e5003d939247..da8442b82ed09 100644 --- a/api_docs/observability_onboarding.mdx +++ b/api_docs/observability_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding title: "observabilityOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityOnboarding plugin -date: 2024-01-03 +date: 2024-01-04 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 a347d6029067f..fb0a79a236383 100644 --- a/api_docs/observability_shared.devdocs.json +++ b/api_docs/observability_shared.devdocs.json @@ -385,7 +385,7 @@ { "parentPluginId": "observabilityShared", "id": "def-public.EmbeddableFunctions.$1", - "type": "CompoundType", + "type": "Object", "tags": [], "label": "props", "description": [], @@ -448,6 +448,39 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "observabilityShared", + "id": "def-public.EmbeddableStackTraces", + "type": "Function", + "tags": [], + "label": "EmbeddableStackTraces", + "description": [], + "signature": [ + "(props: Props) => JSX.Element" + ], + "path": "x-pack/plugins/observability_shared/public/components/profiling/embeddables/embeddable_stack_traces.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityShared", + "id": "def-public.EmbeddableStackTraces.$1", + "type": "Object", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "Props" + ], + "path": "x-pack/plugins/observability_shared/public/components/profiling/embeddables/embeddable_stack_traces.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "observabilityShared", "id": "def-public.getContextMenuItemsFromActions", @@ -2818,6 +2851,23 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "observabilityShared", + "id": "def-public.EMBEDDABLE_STACK_TRACES", + "type": "string", + "tags": [], + "label": "EMBEDDABLE_STACK_TRACES", + "description": [ + "Profiling threads embeddable key" + ], + "signature": [ + "\"EMBEDDABLE_STACK_TRACES\"" + ], + "path": "x-pack/plugins/observability_shared/public/components/profiling/embeddables/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "observabilityShared", "id": "def-public.LazyObservabilityPageTemplateProps", diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index 4f59ae57937f2..74848aaa6f3f1 100644 --- a/api_docs/observability_shared.mdx +++ b/api_docs/observability_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared title: "observabilityShared" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityShared plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 307 | 1 | 303 | 15 | +| 310 | 1 | 305 | 15 | ## Client diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 609775afeb479..be0ab0aceff46 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index a5e6430fdf179..be7778b29462f 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 81175579f00cd..c93080b72b3ad 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -15,13 +15,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| -| 739 | 629 | 41 | +| 739 | 630 | 41 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 78142 | 234 | 66861 | 1696 | +| 78161 | 234 | 66877 | 1696 | ## Plugin Directory @@ -111,7 +111,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 4 | 0 | 4 | 0 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 215 | 0 | 210 | 4 | | | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | This plugin visualizes data from Filebeat and Metricbeat, and integrates with other Observability solutions | 32 | 0 | 29 | 8 | -| ingestPipelines | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 0 | 0 | 0 | 0 | +| | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 4 | 0 | 4 | 0 | | inputControlVis | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds Input Control visualization to Kibana | 0 | 0 | 0 | 0 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 123 | 2 | 96 | 4 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides UI and APIs for the interactive setup mode. | 28 | 0 | 18 | 0 | @@ -130,7 +130,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | Exposes the shared components and APIs to access and visualize logs. | 291 | 11 | 276 | 26 | | logstash | [@elastic/logstash](https://github.com/orgs/elastic/teams/logstash) | - | 0 | 0 | 0 | 0 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 45 | 0 | 45 | 7 | -| | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 260 | 0 | 259 | 28 | +| | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 261 | 0 | 260 | 28 | | | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 60 | 0 | 60 | 0 | | | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | Exposes utilities for accessing metrics data | 104 | 8 | 104 | 7 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | This plugin provides access to the machine learning features provided by Elastic. | 151 | 3 | 65 | 95 | @@ -145,7 +145,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 75 | 0 | 73 | 13 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin exposes and registers observability log consumption features. | 18 | 0 | 18 | 1 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 14 | 0 | 14 | 0 | -| | [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observability-ui) | - | 307 | 1 | 303 | 15 | +| | [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observability-ui) | - | 310 | 1 | 305 | 15 | | | [@elastic/security-defend-workflows](https://github.com/orgs/elastic/teams/security-defend-workflows) | - | 24 | 0 | 24 | 7 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 2 | 0 | 2 | 0 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Presentation Utility Plugin is a set of common, shared components and toolkits for solutions within the Presentation space, (e.g. Dashboards, Canvas). | 219 | 2 | 164 | 11 | @@ -184,7 +184,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 31 | 0 | 26 | 6 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 1 | 0 | 1 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 6 | 0 | 0 | 0 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 23 | 0 | 9 | 0 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 24 | 0 | 9 | 0 | | | [@elastic/protections-experience](https://github.com/orgs/elastic/teams/protections-experience) | Elastic threat intelligence helps you see if you are open to or have been subject to current or historical known threats | 30 | 0 | 14 | 5 | | | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 240 | 1 | 196 | 17 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | This plugin provides access to the transforms features provided by Elastic. Transforms enable you to convert existing Elasticsearch indices into summarized indices, which provide opportunities for new insights and analytics. | 4 | 0 | 4 | 1 | @@ -459,8 +459,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 48 | 0 | 33 | 7 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 27 | 0 | 14 | 1 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 7 | 0 | 3 | 0 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 267 | 1 | 207 | 15 | -| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 19 | 0 | 19 | 0 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 269 | 1 | 209 | 15 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 26 | 0 | 26 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 1 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 39 | 0 | 39 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 52 | 0 | 52 | 1 | @@ -662,7 +662,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 311 | 4 | 263 | 12 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 137 | 5 | 105 | 2 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 1 | 0 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 25 | 0 | 10 | 0 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 26 | 0 | 10 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 72 | 0 | 55 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 11 | 0 | 11 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 39 | 0 | 25 | 1 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index e56d71cb98bcc..6e6c5741a6ec7 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2024-01-03 +date: 2024-01-04 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 f39051a371ff7..399dd64183353 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index d7f8672329881..f6311d7c54487 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index b109b3446cecf..78c2e5aa4aa53 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2024-01-03 +date: 2024-01-04 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 31a3da2b5ab6d..40ad623e1af45 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2024-01-03 +date: 2024-01-04 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 cea802f9971f4..250319a684a61 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2024-01-03 +date: 2024-01-04 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 b870959636a99..c951acaa232dd 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2024-01-03 +date: 2024-01-04 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 69eb6b0b86f3e..9db85c536b5c1 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2024-01-03 +date: 2024-01-04 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 6bb60e236065f..603b1a75edb62 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index e4f06dedc68c9..9597a8287cc37 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 240f5379146d0..a437d3b666cea 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 5f0850edfd8ba..e72d964311e90 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2024-01-03 +date: 2024-01-04 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 b8fd6f76fcc4a..903def8f53d00 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2024-01-03 +date: 2024-01-04 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 60ed1196eb3fc..7ce63486b6cf5 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2024-01-03 +date: 2024-01-04 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 ab659d230c860..87cc479ecea93 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2024-01-03 +date: 2024-01-04 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 cfd2c82a6d31a..fb382915fbd09 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 4bf743a49f344..8fd74810bb99c 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 5d631622d3c55..8eef95d5129ce 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index 496db05fd9caa..ffa55031142c3 100644 --- a/api_docs/security_solution_ess.mdx +++ b/api_docs/security_solution_ess.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss title: "securitySolutionEss" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionEss plugin -date: 2024-01-03 +date: 2024-01-04 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 29c98b16a0679..1424cf9913554 100644 --- a/api_docs/security_solution_serverless.mdx +++ b/api_docs/security_solution_serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless title: "securitySolutionServerless" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionServerless plugin -date: 2024-01-03 +date: 2024-01-04 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 59b23a3c31a25..2e7a6aadd704b 100644 --- a/api_docs/serverless.mdx +++ b/api_docs/serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless title: "serverless" image: https://source.unsplash.com/400x175/?github description: API docs for the serverless plugin -date: 2024-01-03 +date: 2024-01-04 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 b351d1f0b1287..1bf96e28966e0 100644 --- a/api_docs/serverless_observability.mdx +++ b/api_docs/serverless_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability title: "serverlessObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessObservability plugin -date: 2024-01-03 +date: 2024-01-04 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 65a73bf283578..fc4b453d0c79d 100644 --- a/api_docs/serverless_search.mdx +++ b/api_docs/serverless_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch title: "serverlessSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSearch plugin -date: 2024-01-03 +date: 2024-01-04 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 9957256613981..2f8c9f437ccb8 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2024-01-03 +date: 2024-01-04 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 8df6e5a837baa..a0d28e5a26b04 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2024-01-03 +date: 2024-01-04 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 8a9b27fb11cbb..dba4bc4e7e8b5 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2024-01-03 +date: 2024-01-04 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 e59ab271b2634..f638dca83f957 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2024-01-03 +date: 2024-01-04 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 af43ca66522ed..88a3c55dc67b7 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2024-01-03 +date: 2024-01-04 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 ae06061a2d8cb..86f2c02b51559 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2024-01-03 +date: 2024-01-04 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 500e303d69b67..56924fd413208 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2024-01-03 +date: 2024-01-04 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 0264fb525ecbd..4fad05863370d 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2024-01-03 +date: 2024-01-04 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 9575f4a0718ff..a690d153a5453 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2024-01-03 +date: 2024-01-04 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 88a0e0ef99f32..1a6dadc567f66 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionXpack plugin -date: 2024-01-03 +date: 2024-01-04 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 82c661cf3473b..d280cb1dbe2d7 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/text_based_languages.devdocs.json b/api_docs/text_based_languages.devdocs.json index bfbd1ef629c7f..35e649a14f3f2 100644 --- a/api_docs/text_based_languages.devdocs.json +++ b/api_docs/text_based_languages.devdocs.json @@ -271,6 +271,22 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "textBasedLanguages", + "id": "def-public.TextBasedLanguagesEditorProps.isLoading", + "type": "CompoundType", + "tags": [], + "label": "isLoading", + "description": [ + "Disables the editor and displays loading icon in run button" + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-text-based-editor/src/text_based_languages_editor.tsx", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "textBasedLanguages", "id": "def-public.TextBasedLanguagesEditorProps.isDisabled", diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx index 927887f108372..cc12aff43841a 100644 --- a/api_docs/text_based_languages.mdx +++ b/api_docs/text_based_languages.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/textBasedLanguages title: "textBasedLanguages" image: https://source.unsplash.com/400x175/?github description: API docs for the textBasedLanguages plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages'] --- import textBasedLanguagesObj from './text_based_languages.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 23 | 0 | 9 | 0 | +| 24 | 0 | 9 | 0 | ## Client diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index fa99d8b38f8c6..b2400c6a56059 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2024-01-03 +date: 2024-01-04 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 05668cbb7ddd4..089062e668317 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2024-01-03 +date: 2024-01-04 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 c04d00490bd4b..e1380a11e5fb2 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 351e8d3a65a35..34d9b1ae953ba 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 7d24106350bb3..14ec4d033c757 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 2897f21dfafb7..06ed1525dd171 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index 70d55981c9fdb..9a912ac1027c1 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index b841711c08667..9bec81e68ad55 100644 --- a/api_docs/unified_histogram.mdx +++ b/api_docs/unified_histogram.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram title: "unifiedHistogram" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedHistogram plugin -date: 2024-01-03 +date: 2024-01-04 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 890f5712ce2f7..b98e1e61aa279 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2024-01-03 +date: 2024-01-04 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 6014e6f7cb259..1d7c6f9317dfd 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2024-01-03 +date: 2024-01-04 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 5089071b68843..92ee3d44518da 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2024-01-03 +date: 2024-01-04 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 857b1c234e058..d7d4d5e1139d6 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2024-01-03 +date: 2024-01-04 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 898b58dc778f0..5672f86c23a08 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2024-01-03 +date: 2024-01-04 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 4242c83addcbd..024cb71786684 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2024-01-03 +date: 2024-01-04 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 f32d6d222012f..18110a2986cd7 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2024-01-03 +date: 2024-01-04 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 8240fbbe9d4da..6d093cb710b76 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2024-01-03 +date: 2024-01-04 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 ea235c34b46b8..1320fe72ef085 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2024-01-03 +date: 2024-01-04 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 f9b3982af9cc7..19d7fa2ba0e22 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2024-01-03 +date: 2024-01-04 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 cf87397eb440d..358e0aa109bfd 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2024-01-03 +date: 2024-01-04 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 d88e8087f2288..8e70657f3210d 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2024-01-03 +date: 2024-01-04 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 9208339d2cec7..8df27109a1300 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2024-01-03 +date: 2024-01-04 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 de9e191a9a6ee..0c5734a0dbf20 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2024-01-03 +date: 2024-01-04 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 9277efa317640..4e0db374f9487 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2024-01-03 +date: 2024-01-04 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 123ecf53cf5e3..193a6c9b0e2c7 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2024-01-03 +date: 2024-01-04 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 180108f0dc59c..7232243e38c10 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2024-01-03 +date: 2024-01-04 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From ee3c5c6ac6ed72782a580c76f4c69d6fed71fd22 Mon Sep 17 00:00:00 2001 From: Ignacio Rivas Date: Thu, 4 Jan 2024 08:40:35 +0100 Subject: [PATCH 097/323] [Management] Update reporting description (#174175) --- packages/kbn-management/cards_navigation/src/consts.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kbn-management/cards_navigation/src/consts.tsx b/packages/kbn-management/cards_navigation/src/consts.tsx index b5544d917d9dc..0804ce4459ab7 100644 --- a/packages/kbn-management/cards_navigation/src/consts.tsx +++ b/packages/kbn-management/cards_navigation/src/consts.tsx @@ -107,7 +107,7 @@ export const appDefinitions: Record = { [AppIds.REPORTING]: { category: appCategories.CONTENT, description: i18n.translate('management.landing.withCardNavigation.reportingDescription', { - defaultMessage: 'Manage generated PDF, PNG and CSV reports.', + defaultMessage: 'Manage generated CSV reports.', }), icon: 'visPie', }, From 07948b92391a28d50e9ef4e46084003006daa280 Mon Sep 17 00:00:00 2001 From: Sander Philipse <94373878+sphilipse@users.noreply.github.com> Date: Thu, 4 Jan 2024 15:45:10 +0800 Subject: [PATCH 098/323] [Serverless Search] Add consistent toast messages for all APIs (#173989) ## Summary This adds default error toast messages to all API calls in the Serverless Elasticsearch plugin, and provides some ways to skip or modify the toasts. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- docs/developer/plugin-list.asciidoc | 2 +- x-pack/plugins/serverless_search/README.mdx | 9 +++++- .../connector_config/connector_index_name.tsx | 9 ------ .../connector_index_name_panel.tsx | 15 ++------- .../connector_config/connector_overview.tsx | 9 ------ .../components/connectors/edit_connector.tsx | 2 +- .../connectors/edit_description.tsx | 9 ------ .../components/connectors/edit_name.tsx | 9 ------ .../connectors/edit_service_type.tsx | 9 ------ .../public/application/connectors.tsx | 5 +-- .../public/application/elasticsearch.tsx | 4 +-- .../application/hooks/use_error_toast.tsx | 18 ----------- .../serverless_search/public/plugin.ts | 32 +++++++++++++++++-- .../public/utils/get_error_message.ts | 28 ++++++++++++++-- 14 files changed, 73 insertions(+), 87 deletions(-) delete mode 100644 x-pack/plugins/serverless_search/public/application/hooks/use_error_toast.tsx diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index 3e2b2ba853398..e50cadb8f1398 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -783,7 +783,7 @@ It leverages universal configuration and other APIs in the serverless plugin to |{kib-repo}blob/{branch}/x-pack/plugins/serverless_search/README.mdx[serverlessSearch] -|This plugin contains configuration and code used to create a Serverless Search project. It leverages universal configuration and other APIs in the serverless plugin to configure Kibana. +|This plugin contains configuration and code used to create a Serverless Search project. It leverages universal configuration and other APIs in the serverless plugin to configure Kibana. |{kib-repo}blob/{branch}/x-pack/plugins/session_view/README.md[sessionView] diff --git a/x-pack/plugins/serverless_search/README.mdx b/x-pack/plugins/serverless_search/README.mdx index 0b89338e5cae5..d902ab55c4108 100755 --- a/x-pack/plugins/serverless_search/README.mdx +++ b/x-pack/plugins/serverless_search/README.mdx @@ -1,3 +1,10 @@ # Serverless Search project plugin -This plugin contains configuration and code used to create a Serverless Search project. It leverages universal configuration and other APIs in the [`serverless`](../serverless/README.mdx) plugin to configure Kibana. \ No newline at end of file +This plugin contains configuration and code used to create a Serverless Search project. It leverages universal configuration and other APIs in the [`serverless`](../serverless/README.mdx) plugin to configure Kibana. + +## Code guidance + +We use Tanstack React Query to handle all API calls in the browser. To create consistent error behavior, all APIs will flash an error toast if they encounter an error, except for 404 errors on GET calls. +To skip the error message, add a boolean property `skipToast` to your error and set it to `true`. +To change the toast message, change the `name` property on your error to change the title and the `body.message` property to change the message contents. +You can do this by catching the error in your fetch function and modifying the error in your catch before rethrowing. diff --git a/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_index_name.tsx b/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_index_name.tsx index f755e7f5fd50f..aa4b9a69755bd 100644 --- a/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_index_name.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_index_name.tsx @@ -16,7 +16,6 @@ import { useConnector } from '../../../hooks/api/use_connector'; import { useKibanaServices } from '../../../hooks/use_kibana'; import { ApiKeyPanel } from './api_key_panel'; import { ConnectorIndexNameForm } from './connector_index_name_form'; -import { useShowErrorToast } from '../../../hooks/use_error_toast'; import { SyncScheduledCallOut } from './sync_scheduled_callout'; interface ConnectorIndexNameProps { @@ -27,7 +26,6 @@ export const ConnectorIndexName: React.FC = ({ connecto const { http } = useKibanaServices(); const queryClient = useQueryClient(); const { queryKey } = useConnector(connector.id); - const showErrorToast = useShowErrorToast(); const { data, isLoading, isSuccess, mutate } = useMutation({ mutationFn: async ({ inputName, sync }: { inputName: string | null; sync?: boolean }) => { if (inputName && inputName !== connector.index_name) { @@ -41,13 +39,6 @@ export const ConnectorIndexName: React.FC = ({ connecto } return inputName; }, - onError: (error) => - showErrorToast( - error, - i18n.translate('xpack.serverlessSearch.connectors.config.connectorIndexNameError', { - defaultMessage: 'Error updating index name', - }) - ), onSuccess: () => { queryClient.setQueryData(queryKey, { connector: { ...connector, index_name: data } }); queryClient.invalidateQueries(queryKey); diff --git a/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_index_name_panel.tsx b/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_index_name_panel.tsx index 2f5e3f4829d48..ac472d9a4b440 100644 --- a/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_index_name_panel.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_index_name_panel.tsx @@ -6,7 +6,6 @@ */ import { EuiFlexGroup, EuiFlexItem, EuiButton, EuiSpacer } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; import { Connector } from '@kbn/search-connectors'; import { useMutation, useQueryClient } from '@tanstack/react-query'; import React, { useEffect, useState } from 'react'; @@ -21,8 +20,8 @@ interface ConnectorIndexNamePanelProps { } export const ConnectorIndexnamePanel: React.FC = ({ connector }) => { - const { http, notifications } = useKibanaServices(); - const { data, error, isLoading, isSuccess, mutate, reset } = useMutation({ + const { http } = useKibanaServices(); + const { data, isLoading, isSuccess, mutate, reset } = useMutation({ mutationFn: async (inputName: string) => { if (inputName && inputName !== connector.index_name) { const body = { index_name: inputName }; @@ -44,16 +43,6 @@ export const ConnectorIndexnamePanel: React.FC = ( } }, [data, isSuccess, connector, queryClient, queryKey, reset]); - useEffect(() => { - if (error) { - notifications.toasts.addError(error as Error, { - title: i18n.translate('xpack.serverlessSearch.connectors.config.connectorIndexNameError', { - defaultMessage: 'Error updating index name', - }), - }); - } - }, [error, notifications]); - const [newIndexName, setNewIndexName] = useState(connector.index_name || ''); return ( diff --git a/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_overview.tsx b/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_overview.tsx index d141ae51c25ce..f75a6d405c43e 100644 --- a/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_overview.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_overview.tsx @@ -17,7 +17,6 @@ import { useQueryClient, useMutation } from '@tanstack/react-query'; import React, { useState } from 'react'; import { useConnector } from '../../../hooks/api/use_connector'; import { useSyncJobs } from '../../../hooks/api/use_sync_jobs'; -import { useShowErrorToast } from '../../../hooks/use_error_toast'; import { useKibanaServices } from '../../../hooks/use_kibana'; import { SyncScheduledCallOut } from './sync_scheduled_callout'; @@ -29,18 +28,10 @@ export const ConnectorOverview: React.FC = ({ connector const { http } = useKibanaServices(); const queryClient = useQueryClient(); const { queryKey } = useConnector(connector.id); - const showErrorToast = useShowErrorToast(); const { data, isLoading, isSuccess, mutate } = useMutation({ mutationFn: async () => { await http.post(`/internal/serverless_search/connectors/${connector.id}/sync`); }, - onError: (error) => - showErrorToast( - error, - i18n.translate('xpack.serverlessSearch.connectors.config.connectorSyncError', { - defaultMessage: 'Error scheduling sync', - }) - ), onSuccess: () => { queryClient.setQueryData(queryKey, { connector: { ...connector, index_name: data } }); queryClient.invalidateQueries(queryKey); diff --git a/x-pack/plugins/serverless_search/public/application/components/connectors/edit_connector.tsx b/x-pack/plugins/serverless_search/public/application/components/connectors/edit_connector.tsx index 78d47421420e0..927d3d795aaed 100644 --- a/x-pack/plugins/serverless_search/public/application/components/connectors/edit_connector.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/connectors/edit_connector.tsx @@ -66,7 +66,7 @@ export const EditConnector: React.FC = () => { title={

{i18n.translate('xpack.serverlessSearch.connectors.notFound', { - defaultMessage: 'Could not find a connector with id {id}', + defaultMessage: 'Could not find connector {id}', values: { id }, })}

diff --git a/x-pack/plugins/serverless_search/public/application/components/connectors/edit_description.tsx b/x-pack/plugins/serverless_search/public/application/components/connectors/edit_description.tsx index 0c22fcae8945f..111d91b74d043 100644 --- a/x-pack/plugins/serverless_search/public/application/components/connectors/edit_description.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/connectors/edit_description.tsx @@ -24,7 +24,6 @@ import { Connector } from '@kbn/search-connectors'; import { CANCEL_LABEL, EDIT_LABEL, SAVE_LABEL } from '../../../../common/i18n_string'; import { useKibanaServices } from '../../hooks/use_kibana'; import { useConnector } from '../../hooks/api/use_connector'; -import { useShowErrorToast } from '../../hooks/use_error_toast'; interface EditDescriptionProps { connector: Connector; @@ -34,7 +33,6 @@ export const EditDescription: React.FC = ({ connector }) = const [isEditing, setIsEditing] = useState(false); const [newDescription, setNewDescription] = useState(connector.description || ''); const { http } = useKibanaServices(); - const showErrorToast = useShowErrorToast(); const queryClient = useQueryClient(); const { queryKey } = useConnector(connector.id); @@ -48,13 +46,6 @@ export const EditDescription: React.FC = ({ connector }) = }); return inputDescription; }, - onError: (error) => - showErrorToast( - error, - i18n.translate('xpack.serverlessSearch.connectors.config.connectorDescription', { - defaultMessage: 'Error updating description', - }) - ), onSuccess: (successData) => { queryClient.setQueryData(queryKey, { connector: { ...connector, description: successData }, diff --git a/x-pack/plugins/serverless_search/public/application/components/connectors/edit_name.tsx b/x-pack/plugins/serverless_search/public/application/components/connectors/edit_name.tsx index fbab2b15d3434..642814a35c9e7 100644 --- a/x-pack/plugins/serverless_search/public/application/components/connectors/edit_name.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/connectors/edit_name.tsx @@ -24,7 +24,6 @@ import { Connector } from '@kbn/search-connectors'; import { CANCEL_LABEL, CONNECTOR_LABEL, SAVE_LABEL } from '../../../../common/i18n_string'; import { useKibanaServices } from '../../hooks/use_kibana'; import { useConnector } from '../../hooks/api/use_connector'; -import { useShowErrorToast } from '../../hooks/use_error_toast'; interface EditNameProps { connector: Connector; @@ -34,7 +33,6 @@ export const EditName: React.FC = ({ connector }) => { const [isEditing, setIsEditing] = useState(false); const [newName, setNewName] = useState(connector.name || CONNECTOR_LABEL); const { http } = useKibanaServices(); - const showErrorToast = useShowErrorToast(); const queryClient = useQueryClient(); const { queryKey } = useConnector(connector.id); @@ -48,13 +46,6 @@ export const EditName: React.FC = ({ connector }) => { }); return inputName; }, - onError: (error) => - showErrorToast( - error, - i18n.translate('xpack.serverlessSearch.connectors.config.connectorNameError', { - defaultMessage: 'Error updating name', - }) - ), onSuccess: (successData) => { queryClient.setQueryData(queryKey, { connector: { ...connector, service_type: successData }, diff --git a/x-pack/plugins/serverless_search/public/application/components/connectors/edit_service_type.tsx b/x-pack/plugins/serverless_search/public/application/components/connectors/edit_service_type.tsx index a2df8f7c35bfe..e00cda1e20956 100644 --- a/x-pack/plugins/serverless_search/public/application/components/connectors/edit_service_type.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/connectors/edit_service_type.tsx @@ -19,7 +19,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query'; import { Connector } from '@kbn/search-connectors'; import { useKibanaServices } from '../../hooks/use_kibana'; import { useConnectorTypes } from '../../hooks/api/use_connector_types'; -import { useShowErrorToast } from '../../hooks/use_error_toast'; import { useConnector } from '../../hooks/api/use_connector'; interface EditServiceTypeProps { @@ -29,7 +28,6 @@ interface EditServiceTypeProps { export const EditServiceType: React.FC = ({ connector }) => { const { http } = useKibanaServices(); const { data: connectorTypes } = useConnectorTypes(); - const showErrorToast = useShowErrorToast(); const queryClient = useQueryClient(); const { queryKey } = useConnector(connector.id); @@ -62,13 +60,6 @@ export const EditServiceType: React.FC = ({ connector }) = }); return inputServiceType; }, - onError: (error) => - showErrorToast( - error, - i18n.translate('xpack.serverlessSearch.connectors.config.connectorServiceTypeError', { - defaultMessage: 'Error updating service type', - }) - ), onSuccess: (successData) => { queryClient.setQueryData(queryKey, { connector: { ...connector, service_type: successData }, diff --git a/x-pack/plugins/serverless_search/public/application/connectors.tsx b/x-pack/plugins/serverless_search/public/application/connectors.tsx index fe78131ea4547..44d125117d2a8 100644 --- a/x-pack/plugins/serverless_search/public/application/connectors.tsx +++ b/x-pack/plugins/serverless_search/public/application/connectors.tsx @@ -22,10 +22,11 @@ import { ServerlessSearchContext } from './hooks/use_kibana'; export async function renderApp( element: HTMLElement, core: CoreStart, - services: ServerlessSearchContext + services: ServerlessSearchContext, + queryClient: QueryClient ) { const { ConnectorsRouter } = await import('./components/connectors_router'); - const queryClient = new QueryClient(); + ReactDOM.render( diff --git a/x-pack/plugins/serverless_search/public/application/elasticsearch.tsx b/x-pack/plugins/serverless_search/public/application/elasticsearch.tsx index 711f4a4c51f1f..5413ff6361cf9 100644 --- a/x-pack/plugins/serverless_search/public/application/elasticsearch.tsx +++ b/x-pack/plugins/serverless_search/public/application/elasticsearch.tsx @@ -19,10 +19,10 @@ import { ServerlessSearchContext } from './hooks/use_kibana'; export async function renderApp( element: HTMLElement, core: CoreStart, - services: ServerlessSearchContext + services: ServerlessSearchContext, + queryClient: QueryClient ) { const { ElasticsearchOverview } = await import('./components/overview'); - const queryClient = new QueryClient(); ReactDOM.render( diff --git a/x-pack/plugins/serverless_search/public/application/hooks/use_error_toast.tsx b/x-pack/plugins/serverless_search/public/application/hooks/use_error_toast.tsx deleted file mode 100644 index 84d65989042bc..0000000000000 --- a/x-pack/plugins/serverless_search/public/application/hooks/use_error_toast.tsx +++ /dev/null @@ -1,18 +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 { getErrorMessage } from '../../utils/get_error_message'; -import { useKibanaServices } from './use_kibana'; - -export const useShowErrorToast = () => { - const { notifications } = useKibanaServices(); - - return (error: unknown, errorTitle?: string) => - notifications.toasts.addError(new Error(getErrorMessage(error)), { - title: errorTitle || getErrorMessage(error), - }); -}; diff --git a/x-pack/plugins/serverless_search/public/plugin.ts b/x-pack/plugins/serverless_search/public/plugin.ts index 6c6328931915e..31068557ce42e 100644 --- a/x-pack/plugins/serverless_search/public/plugin.ts +++ b/x-pack/plugins/serverless_search/public/plugin.ts @@ -15,6 +15,7 @@ import { import { i18n } from '@kbn/i18n'; import { appIds } from '@kbn/management-cards-navigation'; import { AuthenticatedUser } from '@kbn/security-plugin/common'; +import { QueryClient, MutationCache, QueryCache } from '@tanstack/react-query'; import { createIndexMappingsDocsLinkContent as createIndexMappingsContent } from './application/components/index_management/index_mappings_docs_link'; import { createIndexOverviewContent } from './application/components/index_management/index_overview_content'; import { createServerlessSearchSideNavComponent as createComponent } from './layout/nav'; @@ -26,6 +27,7 @@ import { ServerlessSearchPluginStartDependencies, } from './types'; import { createIndexDocumentsContent } from './application/components/index_documents/documents_tab'; +import { getErrorCode, getErrorMessage, isKibanaServerError } from './utils/get_error_message'; export class ServerlessSearchPlugin implements @@ -40,6 +42,32 @@ export class ServerlessSearchPlugin core: CoreSetup, _setupDeps: ServerlessSearchPluginSetupDependencies ): ServerlessSearchPluginSetup { + const queryClient = new QueryClient({ + mutationCache: new MutationCache({ + onError: (error) => { + core.notifications.toasts.addError(error as Error, { + title: (error as Error).name, + toastMessage: getErrorMessage(error), + toastLifeTimeMs: 1000, + }); + }, + }), + queryCache: new QueryCache({ + onError: (error) => { + // 404s are often functionally okay and shouldn't show toasts by default + if (getErrorCode(error) === 404) { + return; + } + if (isKibanaServerError(error) && !error.skipToast) { + core.notifications.toasts.addError(error, { + title: error.name, + toastMessage: getErrorMessage(error), + toastLifeTimeMs: 1000, + }); + } + }, + }), + }); core.application.register({ id: 'serverlessElasticsearch', title: i18n.translate('xpack.serverlessSearch.app.elasticsearch.title', { @@ -61,7 +89,7 @@ export class ServerlessSearchPlugin user = undefined; } - return await renderApp(element, coreStart, { history, user, ...services }); + return await renderApp(element, coreStart, { history, user, ...services }, queryClient); }, }); @@ -79,7 +107,7 @@ export class ServerlessSearchPlugin const [coreStart, services] = await core.getStartServices(); docLinks.setDocLinks(coreStart.docLinks.links); - return await renderApp(element, coreStart, { history, ...services }); + return await renderApp(element, coreStart, { history, ...services }, queryClient); }, }); return {}; diff --git a/x-pack/plugins/serverless_search/public/utils/get_error_message.ts b/x-pack/plugins/serverless_search/public/utils/get_error_message.ts index 5dd1b9ffcb022..0a73af9e544ce 100644 --- a/x-pack/plugins/serverless_search/public/utils/get_error_message.ts +++ b/x-pack/plugins/serverless_search/public/utils/get_error_message.ts @@ -11,9 +11,33 @@ export function getErrorMessage(error: unknown): string { if (typeof error === 'string') { return error; } - if (typeof error === 'object') { - return (error as { body: KibanaServerError })?.body?.message || ''; + if (isKibanaServerError(error)) { + return error.body.message; + } + + if (typeof error === 'object' && (error as { name: string }).name) { + return (error as { name: string }).name; } return ''; } + +export function getErrorCode(error: unknown): number | undefined { + if (isKibanaServerError(error)) { + return error.body.statusCode; + } + return undefined; +} + +export function isKibanaServerError( + input: unknown +): input is Error & { body: KibanaServerError; name: string; skipToast?: boolean } { + if ( + typeof input === 'object' && + (input as { body: KibanaServerError }).body && + typeof (input as { body: KibanaServerError }).body.message === 'string' + ) { + return true; + } + return false; +} From c7f15fc82c760c3b6247f5d57ea74da35fc22dd6 Mon Sep 17 00:00:00 2001 From: Pierre Gayvallet Date: Thu, 4 Jan 2024 09:29:39 +0100 Subject: [PATCH 099/323] [security solution] fix darkMode access (#173894) ## Summary Part of https://github.com/elastic/kibana/issues/173529 Adapt theme access based on `uiSettings.get('theme:darkMode')` with the correct approach of using `core.theme` or the `useDarkMode` react hook. --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- x-pack/plugins/security_solution/common/constants.ts | 1 - x-pack/plugins/security_solution/public/app/app.tsx | 6 +++--- .../public/common/components/charts/common.test.tsx | 6 +++--- .../public/common/components/charts/common.tsx | 5 ++--- .../public/common/lib/kibana/__mocks__/index.ts | 3 +++ .../public/common/lib/kibana/kibana_react.mock.ts | 6 +----- .../public/common/lib/kibana/kibana_react.ts | 2 ++ .../public/common/lib/theme/use_eui_theme.tsx | 5 ++--- .../public/common/mock/endpoint/app_root_provider.tsx | 5 +++-- .../public/explore/network/components/details/index.tsx | 5 ++--- .../public/overview/components/host_overview/index.tsx | 5 ++--- .../public/overview/components/user_overview/index.tsx | 5 ++--- .../public/resolver/view/symbol_definitions.tsx | 4 ++-- 13 files changed, 27 insertions(+), 31 deletions(-) diff --git a/x-pack/plugins/security_solution/common/constants.ts b/x-pack/plugins/security_solution/common/constants.ts index 52a2bcfc859b1..e3fe732373798 100644 --- a/x-pack/plugins/security_solution/common/constants.ts +++ b/x-pack/plugins/security_solution/common/constants.ts @@ -31,7 +31,6 @@ export const ADD_THREAT_INTELLIGENCE_DATA_PATH = `/app/integrations/browse/threa export const DEFAULT_BYTES_FORMAT = 'format:bytes:defaultPattern' as const; export const DEFAULT_DATE_FORMAT = 'dateFormat' as const; export const DEFAULT_DATE_FORMAT_TZ = 'dateFormat:tz' as const; -export const DEFAULT_DARK_MODE = 'theme:darkMode' as const; export const DEFAULT_INDEX_KEY = 'securitySolution:defaultIndex' as const; export const DEFAULT_NUMBER_FORMAT = 'format:number:defaultPattern' as const; export const DEFAULT_DATA_VIEW_ID = 'security-solution' as const; diff --git a/x-pack/plugins/security_solution/public/app/app.tsx b/x-pack/plugins/security_solution/public/app/app.tsx index ad99133f266ac..ede4908540ad2 100644 --- a/x-pack/plugins/security_solution/public/app/app.tsx +++ b/x-pack/plugins/security_solution/public/app/app.tsx @@ -20,11 +20,11 @@ import { KibanaErrorBoundary, KibanaErrorBoundaryProvider } from '@kbn/shared-ux import { NavigationProvider } from '@kbn/security-solution-navigation'; import { UpsellingProvider } from '../common/components/upselling_provider'; import { ManageUserInfo } from '../detections/components/user_info'; -import { DEFAULT_DARK_MODE, APP_NAME } from '../../common/constants'; +import { APP_NAME } from '../../common/constants'; import { ErrorToastDispatcher } from '../common/components/error_toast_dispatcher'; import { MlCapabilitiesProvider } from '../common/components/ml/permissions/ml_capabilities_provider'; import { GlobalToaster, ManageGlobalToaster } from '../common/components/toasters'; -import { KibanaContextProvider, useKibana, useUiSetting$ } from '../common/lib/kibana'; +import { KibanaContextProvider, useKibana, useDarkMode } from '../common/lib/kibana'; import type { State } from '../common/store'; import type { StartServices } from '../types'; import { PageRouter } from './routes'; @@ -57,7 +57,7 @@ const StartAppComponent: FC = ({ upselling, } = services; - const [darkMode] = useUiSetting$(DEFAULT_DARK_MODE); + const darkMode = useDarkMode(); return ( diff --git a/x-pack/plugins/security_solution/public/common/components/charts/common.test.tsx b/x-pack/plugins/security_solution/public/common/components/charts/common.test.tsx index 71c3c0793d72b..20dfc140c4138 100644 --- a/x-pack/plugins/security_solution/public/common/components/charts/common.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/charts/common.test.tsx @@ -9,7 +9,7 @@ import { shallow } from 'enzyme'; import React from 'react'; import { renderHook } from '@testing-library/react-hooks'; -import { useUiSetting } from '../../lib/kibana'; +import { useDarkMode } from '../../lib/kibana'; import type { ChartSeriesData } from './common'; import { checkIfAllValuesAreZero, @@ -178,14 +178,14 @@ describe('checkIfAllValuesAreZero', () => { }); it('should return light baseTheme when isDarkMode false', () => { - (useUiSetting as jest.Mock).mockImplementation(() => false); + (useDarkMode as jest.Mock).mockImplementation(() => false); const { result } = renderHook(() => useThemes()); expect(result.current.baseTheme).toBe(LEGACY_LIGHT_THEME); }); it('should return dark baseTheme when isDarkMode true', () => { - (useUiSetting as jest.Mock).mockImplementation(() => true); + (useDarkMode as jest.Mock).mockImplementation(() => true); const { result } = renderHook(() => useThemes()); expect(result.current.baseTheme).toBe(LEGACY_DARK_THEME); diff --git a/x-pack/plugins/security_solution/public/common/components/charts/common.tsx b/x-pack/plugins/security_solution/public/common/components/charts/common.tsx index 73fab4a3a8890..05edabafcff7c 100644 --- a/x-pack/plugins/security_solution/public/common/components/charts/common.tsx +++ b/x-pack/plugins/security_solution/public/common/components/charts/common.tsx @@ -22,8 +22,7 @@ import { EuiFlexGroup } from '@elastic/eui'; import React from 'react'; import styled from 'styled-components'; -import { DEFAULT_DARK_MODE } from '../../../../common/constants'; -import { useUiSetting } from '../../lib/kibana'; +import { useDarkMode } from '../../lib/kibana'; export const defaultChartHeight = '100%'; export const defaultChartWidth = '100%'; @@ -113,7 +112,7 @@ const theme: PartialTheme = { }, }; export const useThemes = (): { baseTheme: Theme; theme: PartialTheme } => { - const isDarkMode = useUiSetting(DEFAULT_DARK_MODE); + const isDarkMode = useDarkMode(); // TODO connect to charts.theme service see src/plugins/charts/public/services/theme/README.md const baseTheme = isDarkMode ? LEGACY_DARK_THEME : LEGACY_LIGHT_THEME; return { diff --git a/x-pack/plugins/security_solution/public/common/lib/kibana/__mocks__/index.ts b/x-pack/plugins/security_solution/public/common/lib/kibana/__mocks__/index.ts index a0f59fb18f3f8..27d48a9ff6417 100644 --- a/x-pack/plugins/security_solution/public/common/lib/kibana/__mocks__/index.ts +++ b/x-pack/plugins/security_solution/public/common/lib/kibana/__mocks__/index.ts @@ -85,6 +85,9 @@ export const useKibana = jest.fn().mockReturnValue({ }); export const useUiSetting = jest.fn(createUseUiSettingMock()); export const useUiSetting$ = jest.fn(createUseUiSetting$Mock()); +export const useDarkMode = jest + .fn() + .mockImplementation((defaultValue?: boolean) => defaultValue ?? false); export const useHttp = jest.fn().mockReturnValue(createStartServicesMock().http); export const useTimeZone = jest.fn(); export const useDateFormat = jest.fn().mockReturnValue('MMM D, YYYY @ HH:mm:ss.SSS'); diff --git a/x-pack/plugins/security_solution/public/common/lib/kibana/kibana_react.mock.ts b/x-pack/plugins/security_solution/public/common/lib/kibana/kibana_react.mock.ts index ffbd26b97028a..b2cda32060382 100644 --- a/x-pack/plugins/security_solution/public/common/lib/kibana/kibana_react.mock.ts +++ b/x-pack/plugins/security_solution/public/common/lib/kibana/kibana_react.mock.ts @@ -18,7 +18,6 @@ import { DEFAULT_APP_REFRESH_INTERVAL, DEFAULT_APP_TIME_RANGE, DEFAULT_BYTES_FORMAT, - DEFAULT_DARK_MODE, DEFAULT_DATE_FORMAT, DEFAULT_DATE_FORMAT_TZ, DEFAULT_FROM, @@ -69,7 +68,6 @@ const mockUiSettings: Record = { [DEFAULT_BYTES_FORMAT]: '0,0.[0]b', [DEFAULT_DATE_FORMAT_TZ]: 'UTC', [DEFAULT_DATE_FORMAT]: 'MMM D, YYYY @ HH:mm:ss.SSS', - [DEFAULT_DARK_MODE]: false, [DEFAULT_RULES_TABLE_REFRESH_SETTING]: { on: DEFAULT_RULE_REFRESH_INTERVAL_ON, value: DEFAULT_RULE_REFRESH_INTERVAL_VALUE, @@ -199,9 +197,7 @@ export const createStartServicesMock = ( locator, }, telemetry: {}, - theme: { - theme$: themeServiceMock.createTheme$(), - }, + theme: themeServiceMock.createSetupContract(), timelines: { getLastUpdated: jest.fn(), getFieldBrowser: jest.fn(), diff --git a/x-pack/plugins/security_solution/public/common/lib/kibana/kibana_react.ts b/x-pack/plugins/security_solution/public/common/lib/kibana/kibana_react.ts index 4878ee2a30919..8590cfe98dc17 100644 --- a/x-pack/plugins/security_solution/public/common/lib/kibana/kibana_react.ts +++ b/x-pack/plugins/security_solution/public/common/lib/kibana/kibana_react.ts @@ -10,6 +10,7 @@ import { useKibana, useUiSetting, useUiSetting$, + useDarkMode, withKibana, } from '@kbn/kibana-react-plugin/public'; import type { ApmBase } from '@elastic/apm-rum'; @@ -23,5 +24,6 @@ export { useTypedKibana as useKibana, useUiSetting, useUiSetting$, + useDarkMode, withKibana, }; diff --git a/x-pack/plugins/security_solution/public/common/lib/theme/use_eui_theme.tsx b/x-pack/plugins/security_solution/public/common/lib/theme/use_eui_theme.tsx index e890d9fe6d650..41a3076d52c88 100644 --- a/x-pack/plugins/security_solution/public/common/lib/theme/use_eui_theme.tsx +++ b/x-pack/plugins/security_solution/public/common/lib/theme/use_eui_theme.tsx @@ -7,10 +7,9 @@ import { euiLightVars as lightTheme, euiDarkVars as darkTheme } from '@kbn/ui-theme'; -import { DEFAULT_DARK_MODE } from '../../../../common/constants'; -import { useUiSetting$ } from '../kibana'; +import { useDarkMode } from '../kibana'; export const useEuiTheme = () => { - const [darkMode] = useUiSetting$(DEFAULT_DARK_MODE); + const darkMode = useDarkMode(); return darkMode ? darkTheme : lightTheme; }; diff --git a/x-pack/plugins/security_solution/public/common/mock/endpoint/app_root_provider.tsx b/x-pack/plugins/security_solution/public/common/mock/endpoint/app_root_provider.tsx index 8c65ba84ff871..e32297f729ec3 100644 --- a/x-pack/plugins/security_solution/public/common/mock/endpoint/app_root_provider.tsx +++ b/x-pack/plugins/security_solution/public/common/mock/endpoint/app_root_provider.tsx @@ -37,8 +37,9 @@ export const AppRootProvider = memo<{ queryClient: QueryClient; children: ReactNode | ReactNode[]; }>(({ store, history, coreStart, depsStart: { data }, queryClient, startServices, children }) => { - const { uiSettings } = coreStart; - const isDarkMode = useObservable(uiSettings.get$('theme:darkMode')); + const { theme: themeStart } = coreStart; + const theme = useObservable(themeStart.theme$, themeStart.getTheme()); + const isDarkMode = theme.darkMode; return ( diff --git a/x-pack/plugins/security_solution/public/explore/network/components/details/index.tsx b/x-pack/plugins/security_solution/public/explore/network/components/details/index.tsx index 62c6a6f462d14..1c909a8eff31b 100644 --- a/x-pack/plugins/security_solution/public/explore/network/components/details/index.tsx +++ b/x-pack/plugins/security_solution/public/explore/network/components/details/index.tsx @@ -8,9 +8,8 @@ import { euiLightVars as lightTheme, euiDarkVars as darkTheme } from '@kbn/ui-theme'; import React from 'react'; -import { DEFAULT_DARK_MODE } from '../../../../../common/constants'; import type { DescriptionList } from '../../../../../common/utility_types'; -import { useUiSetting$ } from '../../../../common/lib/kibana'; +import { useDarkMode } from '../../../../common/lib/kibana'; import type { FlowTargetSourceDest, NetworkDetailsStrategyResponse, @@ -79,7 +78,7 @@ export const IpOverview = React.memo( }) => { const capabilities = useMlCapabilities(); const userPermissions = hasMlUserPermissions(capabilities); - const [darkMode] = useUiSetting$(DEFAULT_DARK_MODE); + const darkMode = useDarkMode(); const typeData = data[flowTarget]; const column: DescriptionList[] = [ { diff --git a/x-pack/plugins/security_solution/public/overview/components/host_overview/index.tsx b/x-pack/plugins/security_solution/public/overview/components/host_overview/index.tsx index a6409c587e0a6..92ff143585117 100644 --- a/x-pack/plugins/security_solution/public/overview/components/host_overview/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/host_overview/index.tsx @@ -13,9 +13,8 @@ import styled from 'styled-components'; import { useRiskScore } from '../../../entity_analytics/api/hooks/use_risk_score'; import type { HostItem } from '../../../../common/search_strategy'; import { buildHostNamesFilter, RiskScoreEntity } from '../../../../common/search_strategy'; -import { DEFAULT_DARK_MODE } from '../../../../common/constants'; import type { DescriptionList } from '../../../../common/utility_types'; -import { useUiSetting$ } from '../../../common/lib/kibana'; +import { useDarkMode } from '../../../common/lib/kibana'; import { getEmptyTagValue } from '../../../common/components/empty_value'; import { DefaultFieldRenderer, @@ -84,7 +83,7 @@ export const HostOverview = React.memo( }) => { const capabilities = useMlCapabilities(); const userPermissions = hasMlUserPermissions(capabilities); - const [darkMode] = useUiSetting$(DEFAULT_DARK_MODE); + const darkMode = useDarkMode(); const filterQuery = useMemo( () => (hostName ? buildHostNamesFilter([hostName]) : undefined), [hostName] diff --git a/x-pack/plugins/security_solution/public/overview/components/user_overview/index.tsx b/x-pack/plugins/security_solution/public/overview/components/user_overview/index.tsx index 572e4aab7e6df..bd9e56dffee8d 100644 --- a/x-pack/plugins/security_solution/public/overview/components/user_overview/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/user_overview/index.tsx @@ -12,9 +12,8 @@ import React, { useCallback, useMemo } from 'react'; import styled from 'styled-components'; import { useRiskScore } from '../../../entity_analytics/api/hooks/use_risk_score'; import { buildUserNamesFilter, RiskScoreEntity } from '../../../../common/search_strategy'; -import { DEFAULT_DARK_MODE } from '../../../../common/constants'; import type { DescriptionList } from '../../../../common/utility_types'; -import { useUiSetting$ } from '../../../common/lib/kibana'; +import { useDarkMode } from '../../../common/lib/kibana'; import { getEmptyTagValue } from '../../../common/components/empty_value'; import { DefaultFieldRenderer } from '../../../timelines/components/field_renderers/field_renderers'; import { @@ -82,7 +81,7 @@ export const UserOverview = React.memo( }) => { const capabilities = useMlCapabilities(); const userPermissions = hasMlUserPermissions(capabilities); - const [darkMode] = useUiSetting$(DEFAULT_DARK_MODE); + const darkMode = useDarkMode(); const filterQuery = useMemo( () => (userName ? buildUserNamesFilter([userName]) : undefined), [userName] diff --git a/x-pack/plugins/security_solution/public/resolver/view/symbol_definitions.tsx b/x-pack/plugins/security_solution/public/resolver/view/symbol_definitions.tsx index 926227f6fcfd7..8576c6a364a96 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/symbol_definitions.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/symbol_definitions.tsx @@ -8,7 +8,7 @@ import React, { memo } from 'react'; import styled from 'styled-components'; import { i18n } from '@kbn/i18n'; -import { useUiSetting } from '@kbn/kibana-react-plugin/public'; +import { useDarkMode } from '@kbn/kibana-react-plugin/public'; import { useSymbolIDs } from './use_symbol_ids'; import { usePaintServerIDs } from './use_paint_server_ids'; @@ -435,7 +435,7 @@ const SymbolsAndShapes = memo(({ id, isDarkMode }: { id: string; isDarkMode: boo */ // eslint-disable-next-line react/display-name export const SymbolDefinitions = memo(({ id }: { id: string }) => { - const isDarkMode = useUiSetting('theme:darkMode'); + const isDarkMode = useDarkMode(); return ( From e2906aee878b25494acbd02f950fe8d4e4abbc9b Mon Sep 17 00:00:00 2001 From: Angela Chuang <6295984+angorayc@users.noreply.github.com> Date: Thu, 4 Jan 2024 16:35:05 +0800 Subject: [PATCH 100/323] [SecuritySolution] Disable Panel Settings for visualization context menu (#174183) ## Summary `Panel Settings` action is not compatible with Security Solution ([bug](https://github.com/elastic/kibana/issues/168670)), removing them in this PR. Steps to verify: 1. Visit network / hosts / users / rules / alerts page 2. Find a visualization rendered with Lens Embeddable 3. Click on `...`, and find `Panel settings` should not exist ![Screenshot 2024-01-03 at 22 41 51](https://github.com/elastic/kibana/assets/6295984/f97866a4-0d97-42f5-94d1-46e1b4f3395e) - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --- .../visualization_actions/lens_embeddable.test.tsx | 7 +++++++ .../components/visualization_actions/lens_embeddable.tsx | 4 +++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_embeddable.test.tsx b/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_embeddable.test.tsx index c7607cd1046df..92f394006d8e9 100644 --- a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_embeddable.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_embeddable.test.tsx @@ -20,6 +20,7 @@ import { kpiHostMetricLensAttributes } from './lens_attributes/hosts/kpi_host_me import { LensEmbeddable } from './lens_embeddable'; import { useKibana } from '../../lib/kibana'; import { useActions } from './use_actions'; +import { ACTION_CUSTOMIZE_PANEL } from '@kbn/embeddable-plugin/public'; const mockActions = [ { id: 'inspect' }, @@ -128,4 +129,10 @@ describe('LensEmbeddable', () => { expect(mockEmbeddableComponent.mock.calls[0][0].syncTooltips).toEqual(false); expect(mockEmbeddableComponent.mock.calls[0][0].syncCursor).toEqual(false); }); + + it('should not render Panel settings action', () => { + expect( + mockEmbeddableComponent.mock.calls[0][0].disabledActions.includes(ACTION_CUSTOMIZE_PANEL) + ).toBeTruthy(); + }); }); 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 fdaa006e15f56..69d171467f996 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 @@ -9,7 +9,7 @@ import React, { useCallback, useMemo, useState } from 'react'; import { useDispatch } from 'react-redux'; import { FormattedMessage } from '@kbn/i18n-react'; -import { ViewMode } from '@kbn/embeddable-plugin/public'; +import { ACTION_CUSTOMIZE_PANEL, ViewMode } from '@kbn/embeddable-plugin/public'; import styled from 'styled-components'; import { EuiEmptyPrompt, EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; import type { RangeFilterParams } from '@kbn/es-query'; @@ -29,6 +29,7 @@ import { SourcererScopeName } from '../../store/sourcerer/model'; import { VisualizationActions } from './actions'; const HOVER_ACTIONS_PADDING = 24; +const DISABLED_ACTIONS = [ACTION_CUSTOMIZE_PANEL]; const LensComponentWrapper = styled.div<{ $height?: number; @@ -278,6 +279,7 @@ const LensEmbeddableComponent: React.FC = ({ style={style} timeRange={timerange} attributes={attributes} + disabledActions={DISABLED_ACTIONS} onLoad={onLoadCallback} onBrushEnd={updateDateRange} onFilter={onFilterCallback} From f8f0d87d5b6d8e657cf30153039fe8054311d42c Mon Sep 17 00:00:00 2001 From: Marta Bondyra <4283304+mbondyra@users.noreply.github.com> Date: Thu, 4 Jan 2024 11:51:48 +0100 Subject: [PATCH 101/323] [Lens] do not allow to save incorrect state in inline Lens editor (#172819) ## Summary Fixes https://github.com/elastic/kibana/issues/168445 We follow the approach: 1. if we can render we are able to save even with errors 2. If we cannot render, we cannot save There are 3 cases we have to think when approaching this task. 1. When the error comes from the request (for example, incorrect KQL in 'filter by' or wrong response from ES) We don't catch those cases in Lens app so I didn't fix it here either. It would be very difficult to do so. 2. When the chart cannot be rendered (whether there's a missing dimension or errors stop the expression to be generated) Screenshot 2023-10-16 at 13 30 32 3. When the chart has errors but can be rendered We allow saving in this case. Screenshot 2023-10-17 at 15 02 47 --------- Co-authored-by: Stratoula Kalafateli --- .../shared/edit_on_the_fly/flyout_wrapper.tsx | 4 +- .../lens_configuration_flyout.test.tsx | 65 +++++++++++++++---- .../lens_configuration_flyout.tsx | 56 ++++++++++++++-- .../shared/edit_on_the_fly/types.ts | 2 +- .../workspace_panel/workspace_panel.tsx | 20 +++--- x-pack/plugins/lens/public/utils.ts | 2 + 6 files changed, 118 insertions(+), 31 deletions(-) diff --git a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/flyout_wrapper.tsx b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/flyout_wrapper.tsx index f9a6ac0ce397b..009d21d65eb57 100644 --- a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/flyout_wrapper.tsx +++ b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/flyout_wrapper.tsx @@ -31,8 +31,8 @@ export const FlyoutWrapper = ({ isScrollable, displayFlyoutHeader, language, - attributesChanged, isNewPanel, + isSaveable, onCancel, navigateToLensEditor, onApply, @@ -153,7 +153,7 @@ export const FlyoutWrapper = ({ aria-label={i18n.translate('xpack.lens.config.applyFlyoutAriaLabel', { defaultMessage: 'Apply changes', })} - disabled={Boolean(isNewPanel) ? false : !attributesChanged} + disabled={Boolean(isNewPanel) ? false : !isSaveable} iconType="check" data-test-subj="applyFlyoutButton" > diff --git a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/lens_configuration_flyout.test.tsx b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/lens_configuration_flyout.test.tsx index 6aad89b50ef0c..bda603bb0909d 100644 --- a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/lens_configuration_flyout.test.tsx +++ b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/lens_configuration_flyout.test.tsx @@ -36,20 +36,21 @@ const lensAttributes = { }, references: [], } as unknown as TypedLensByValueInput['attributes']; +const mockStartDependencies = + createMockStartDependencies() as unknown as LensPluginStartDependencies; +const data = mockDataPlugin(); +(data.query.timefilter.timefilter.getTime as jest.Mock).mockReturnValue({ + from: 'now-2m', + to: 'now', +}); +const startDependencies = { + ...mockStartDependencies, + data, +}; +const datasourceMap = mockDatasourceMap(); +const visualizationMap = mockVisualizationMap(); describe('LensEditConfigurationFlyout', () => { - const mockStartDependencies = - createMockStartDependencies() as unknown as LensPluginStartDependencies; - const data = mockDataPlugin(); - (data.query.timefilter.timefilter.getTime as jest.Mock).mockReturnValue({ - from: 'now-2m', - to: 'now', - }); - const startDependencies = { - ...mockStartDependencies, - data, - }; - function renderConfigFlyout( propsOverrides: Partial = {}, query?: Query | AggregateQuery @@ -60,8 +61,8 @@ describe('LensEditConfigurationFlyout', () => { updatePanelState={jest.fn()} coreStart={coreMock.createStart()} startDependencies={startDependencies} - datasourceMap={mockDatasourceMap()} - visualizationMap={mockVisualizationMap()} + datasourceMap={datasourceMap} + visualizationMap={visualizationMap} closeFlyout={jest.fn()} datasourceId={'testDatasource' as EditConfigPanelProps['datasourceId']} {...propsOverrides} @@ -195,4 +196,40 @@ describe('LensEditConfigurationFlyout', () => { expect(screen.getByTestId('InlineEditingESQLEditor')).toBeInTheDocument(); expect(screen.getByTestId('InlineEditingSuggestions')).toBeInTheDocument(); }); + it('save button is disabled if no changes have been made', async () => { + const updateByRefInputSpy = jest.fn(); + const saveByRefSpy = jest.fn(); + const newProps = { + closeFlyout: jest.fn(), + updateByRefInput: updateByRefInputSpy, + savedObjectId: 'id', + saveByRef: saveByRefSpy, + attributes: lensAttributes, + }; + // todo: replace testDatasource with formBased or textBased as it's the only ones accepted + // @ts-ignore + newProps.attributes.state.datasourceStates.testDatasource = 'state'; + renderConfigFlyout(newProps); + expect(screen.getByRole('button', { name: /apply changes/i })).toBeDisabled(); + }); + it('save button should be disabled if expression cannot be generated', async () => { + const updateByRefInputSpy = jest.fn(); + const saveByRefSpy = jest.fn(); + const newProps = { + closeFlyout: jest.fn(), + updateByRefInput: updateByRefInputSpy, + savedObjectId: 'id', + saveByRef: saveByRefSpy, + datasourceMap: { + ...datasourceMap, + testDatasource: { + ...datasourceMap.testDatasource, + toExpression: jest.fn(() => null), + }, + }, + }; + + renderConfigFlyout(newProps); + expect(screen.getByRole('button', { name: /apply changes/i })).toBeDisabled(); + }); }); diff --git a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/lens_configuration_flyout.tsx b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/lens_configuration_flyout.tsx index 39801f41c391c..e3df96840c883 100644 --- a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/lens_configuration_flyout.tsx +++ b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/lens_configuration_flyout.tsx @@ -27,6 +27,7 @@ import { import type { AggregateQuery, Query } from '@kbn/es-query'; import { TextBasedLangEditor } from '@kbn/text-based-languages/public'; import { DefaultInspectorAdapters } from '@kbn/expressions-plugin/common'; +import { buildExpression } from '../../../editor_frame_service/editor_frame/expression_helpers'; import { useLensSelector, selectFramePublicAPI, @@ -34,7 +35,7 @@ import { useLensDispatch, } from '../../../state_management'; import type { TypedLensByValueInput } from '../../../embeddable/embeddable_component'; -import { extractReferencesFromState } from '../../../utils'; +import { EXPRESSION_BUILD_ERROR_ID, extractReferencesFromState } from '../../../utils'; import { LayerConfiguration } from './layer_configuration_section'; import type { EditConfigPanelProps } from './types'; import { FlyoutWrapper } from './flyout_wrapper'; @@ -76,12 +77,13 @@ export function LensEditConfigurationFlyout({ const [isSuggestionsAccordionOpen, setIsSuggestionsAccordionOpen] = useState(false); const datasourceState = attributes.state.datasourceStates[datasourceId]; const activeDatasource = datasourceMap[datasourceId]; - const { datasourceStates, visualization, isLoading, annotationGroups } = useLensSelector( - (state) => state.lens - ); + + const { datasourceStates, visualization, isLoading, annotationGroups, searchSessionId } = + useLensSelector((state) => state.lens); // use the latest activeId, but fallback to attributes const activeVisualization = visualizationMap[visualization.activeId ?? attributes.visualizationType]; + const framePublicAPI = useLensSelector((state) => selectFramePublicAPI(state, datasourceMap)); const suggestsLimitedColumns = activeDatasource?.suggestsLimitedColumns?.(datasourceState); @@ -272,6 +274,48 @@ export function LensEditConfigurationFlyout({ ] ); + const isSaveable = useMemo(() => { + if (!attributesChanged) { + return false; + } + if (!visualization.state || !visualization.activeId) { + return false; + } + const visualizationErrors = getUserMessages(['visualization'], { + severity: 'error', + }); + // shouldn't build expression if there is any type of error other than an expression build error + // (in which case we try again every time because the config might have changed) + if (visualizationErrors.every((error) => error.uniqueId === EXPRESSION_BUILD_ERROR_ID)) { + return Boolean( + buildExpression({ + visualization: activeVisualization, + visualizationState: visualization.state, + datasourceMap, + datasourceStates, + datasourceLayers: framePublicAPI.datasourceLayers, + indexPatterns: framePublicAPI.dataViews.indexPatterns, + dateRange: framePublicAPI.dateRange, + nowInstant: startDependencies.data.nowProvider.get(), + searchSessionId, + }) + ); + } + }, [ + attributesChanged, + activeVisualization, + datasourceMap, + datasourceStates, + framePublicAPI.dataViews.indexPatterns, + framePublicAPI.dateRange, + framePublicAPI.datasourceLayers, + searchSessionId, + startDependencies.data.nowProvider, + visualization.activeId, + visualization.state, + getUserMessages, + ]); + const textBasedMode = isOfAggregateQueryType(query) ? getAggregateQueryMode(query) : undefined; if (isLoading) return null; @@ -285,8 +329,8 @@ export function LensEditConfigurationFlyout({ navigateToLensEditor={navigateToLensEditor} onApply={onApply} isScrollable={true} - attributesChanged={attributesChanged} isNewPanel={isNewPanel} + isSaveable={isSaveable} > diff --git a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/types.ts b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/types.ts index 12533bfbe6cd4..6b5a2bb501275 100644 --- a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/types.ts +++ b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/types.ts @@ -24,8 +24,8 @@ export interface FlyoutWrapperProps { isScrollable: boolean; displayFlyoutHeader?: boolean; language?: string; - attributesChanged?: boolean; isNewPanel?: boolean; + isSaveable?: boolean; onCancel?: () => void; onApply?: () => void; navigateToLensEditor?: () => void; 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 18ea4791d6847..8b7705260c1e4 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 @@ -72,7 +72,11 @@ import { selectExecutionContextSearch, } from '../../../state_management'; import type { LensInspector } from '../../../lens_inspector_service'; -import { inferTimeField, DONT_CLOSE_DIMENSION_CONTAINER_ON_CLICK_CLASS } from '../../../utils'; +import { + inferTimeField, + DONT_CLOSE_DIMENSION_CONTAINER_ON_CLICK_CLASS, + EXPRESSION_BUILD_ERROR_ID, +} from '../../../utils'; import { setChangesApplied } from '../../../state_management/lens_slice'; import { WorkspaceErrors } from './workspace_errors'; @@ -113,8 +117,6 @@ const executionContext: KibanaExecutionContext = { }, }; -const EXPRESSION_BUILD_ERROR_ID = 'expression_build_error'; - export const WorkspacePanel = React.memo(function WorkspacePanel(props: WorkspacePanelProps) { const { getSuggestionForField, ...restProps } = props; @@ -295,11 +297,13 @@ export const InnerWorkspacePanel = React.memo(function InnerWorkspacePanel({ ? visualizationMap[visualization.activeId] : null; - const workspaceErrors = useCallback(() => { - return getUserMessages(['visualization', 'visualizationInEditor'], { - severity: 'error', - }); - }, [getUserMessages]); + const workspaceErrors = useCallback( + () => + getUserMessages(['visualization', 'visualizationInEditor'], { + severity: 'error', + }), + [getUserMessages] + ); // if the expression is undefined, it means we hit an error that should be displayed to the user const unappliedExpression = useMemo(() => { diff --git a/x-pack/plugins/lens/public/utils.ts b/x-pack/plugins/lens/public/utils.ts index 86c769444c69c..d16dacada6fe1 100644 --- a/x-pack/plugins/lens/public/utils.ts +++ b/x-pack/plugins/lens/public/utils.ts @@ -429,3 +429,5 @@ export const getColorMappingDefaults = () => { } return { ...DEFAULT_COLOR_MAPPING_CONFIG }; }; + +export const EXPRESSION_BUILD_ERROR_ID = 'expression_build_error'; From af4dcb419a433f269a62a51a8fa958c5aee993ae Mon Sep 17 00:00:00 2001 From: Maryam Saeidi Date: Thu, 4 Jan 2024 12:07:00 +0100 Subject: [PATCH 102/323] [Metric threshold] Remove disabling missing group for document count aggregation (#173898) Closes #173396 ## Summary This PR removes disabling missing group settings when aggregation is document count because it also works as expected for this case. ([more info](https://github.com/elastic/kibana/issues/173396#issuecomment-1867399404)) --- .../public/alerting/metric_threshold/components/expression.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression.tsx b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression.tsx index 029cecdcb1036..814a968d9718e 100644 --- a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression.tsx +++ b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression.tsx @@ -479,7 +479,7 @@ export const Expressions: React.FC = (props) => { } - disabled={disableNoData || !hasGroupBy} + disabled={!hasGroupBy} checked={Boolean(hasGroupBy && ruleParams.alertOnGroupDisappear)} onChange={(e) => setRuleParams('alertOnGroupDisappear', e.target.checked)} /> From aa372f48844870bb4e93e9e512d06e1bdfc95b76 Mon Sep 17 00:00:00 2001 From: Panagiota Mitsopoulou Date: Thu, 4 Jan 2024 12:28:13 +0100 Subject: [PATCH 103/323] Refactor: Use uiSettings directly from services prop (#174170) Refactors according to this [comment](https://github.com/elastic/kibana/pull/172498#discussion_r1416947582) --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../apm/public/components/app/alerts_overview/index.tsx | 8 +++++++- x-pack/plugins/apm/public/plugin.ts | 3 +++ x-pack/plugins/apm/tsconfig.json | 3 ++- .../components/alert_search_bar/alert_search_bar.test.tsx | 3 +++ .../components/alert_search_bar/alert_search_bar.tsx | 4 +--- .../alert_search_bar/alert_search_bar_with_url_sync.tsx | 3 ++- .../public/components/alert_search_bar/types.ts | 3 ++- .../plugins/observability/public/pages/alerts/alerts.tsx | 3 ++- x-pack/plugins/observability/tsconfig.json | 3 ++- 9 files changed, 24 insertions(+), 9 deletions(-) diff --git a/x-pack/plugins/apm/public/components/app/alerts_overview/index.tsx b/x-pack/plugins/apm/public/components/app/alerts_overview/index.tsx index dbf2d94b20699..b5ed35059bda9 100644 --- a/x-pack/plugins/apm/public/components/app/alerts_overview/index.tsx +++ b/x-pack/plugins/apm/public/components/app/alerts_overview/index.tsx @@ -53,6 +53,7 @@ export function AlertsOverview() { timefilter: { timefilter: timeFilterService }, }, }, + uiSettings, } = services; const useToasts = () => notifications!.toasts; @@ -98,7 +99,12 @@ export function AlertsOverview() { rangeTo={rangeTo} rangeFrom={rangeFrom} status={alertStatusFilter} - services={{ timeFilterService, AlertsSearchBar, useToasts }} + services={{ + timeFilterService, + AlertsSearchBar, + useToasts, + uiSettings, + }} /> diff --git a/x-pack/plugins/apm/public/plugin.ts b/x-pack/plugins/apm/public/plugin.ts index 173e52e5955cd..065eba1b7e64f 100644 --- a/x-pack/plugins/apm/public/plugin.ts +++ b/x-pack/plugins/apm/public/plugin.ts @@ -70,6 +70,7 @@ import { UiActionsSetup, UiActionsStart } from '@kbn/ui-actions-plugin/public'; import type { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; import { UsageCollectionStart } from '@kbn/usage-collection-plugin/public'; import { DashboardStart } from '@kbn/dashboard-plugin/public'; +import type { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; import { from } from 'rxjs'; import { map } from 'rxjs/operators'; import type { ConfigSchema } from '.'; @@ -84,6 +85,7 @@ import { getLazyAPMPolicyEditExtension } from './components/fleet_integration/la import { featureCatalogueEntry } from './feature_catalogue_entry'; import { APMServiceDetailLocator } from './locator/service_detail_locator'; import { ITelemetryClient, TelemetryService } from './services/telemetry'; + export type ApmPluginSetup = ReturnType; export type ApmPluginStart = void; @@ -137,6 +139,7 @@ export interface ApmPluginStartDeps { observabilityAIAssistant: ObservabilityAIAssistantPluginStart; dashboard: DashboardStart; metricsDataAccess: MetricsDataPluginStart; + uiSettings: IUiSettingsClient; } const servicesTitle = i18n.translate('xpack.apm.navigation.servicesTitle', { diff --git a/x-pack/plugins/apm/tsconfig.json b/x-pack/plugins/apm/tsconfig.json index ba23f19f78c4a..83736c390ef83 100644 --- a/x-pack/plugins/apm/tsconfig.json +++ b/x-pack/plugins/apm/tsconfig.json @@ -107,7 +107,8 @@ "@kbn/elastic-agent-utils", "@kbn/shared-ux-link-redirect-app", "@kbn/observability-get-padded-alert-time-range-util", - "@kbn/core-lifecycle-server" + "@kbn/core-lifecycle-server", + "@kbn/core-ui-settings-browser" ], "exclude": ["target/**/*"] } diff --git a/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.test.tsx b/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.test.tsx index 5937fd4f8f7aa..248731d8cab2a 100644 --- a/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.test.tsx +++ b/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.test.tsx @@ -8,6 +8,8 @@ import React from 'react'; import { waitFor } from '@testing-library/react'; import { timefilterServiceMock } from '@kbn/data-plugin/public/query/timefilter/timefilter_service.mock'; +import { uiSettingsServiceMock } from '@kbn/core-ui-settings-browser-mocks'; + import { ObservabilityAlertSearchBarProps, Services } from './types'; import { ObservabilityAlertSearchBar } from './alert_search_bar'; import { observabilityAlertFeatureIds } from '../../../common/constants'; @@ -33,6 +35,7 @@ describe('ObservabilityAlertSearchBar', () => { rangeFrom: 'now-15m', status: 'all', services: { + uiSettings: uiSettingsServiceMock.createStartContract(), timeFilterService: timefilterServiceMock.createStartContract().timefilter, AlertsSearchBar: getAlertsSearchBarMock.mockReturnValue(
diff --git a/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.tsx b/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.tsx index 74dfbe15d77f5..d27e32970f2fa 100644 --- a/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.tsx +++ b/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.tsx @@ -17,7 +17,6 @@ import { ALERT_STATUS_QUERY, DEFAULT_QUERIES, DEFAULT_QUERY_STRING } from './con import { ObservabilityAlertSearchBarProps } from './types'; import { buildEsQuery } from '../../utils/build_es_query'; import { AlertStatus } from '../../../common/typings'; -import { useKibana } from '../../utils/kibana_react'; const getAlertStatusQuery = (status: string): Query[] => { return ALERT_STATUS_QUERY[status] @@ -39,11 +38,10 @@ export function ObservabilityAlertSearchBar({ kuery, rangeFrom, rangeTo, - services: { AlertsSearchBar, timeFilterService, useToasts }, + services: { AlertsSearchBar, timeFilterService, useToasts, uiSettings }, status, }: ObservabilityAlertSearchBarProps) { const toasts = useToasts(); - const { uiSettings } = useKibana().services; const onAlertStatusChange = useCallback( (alertStatus: AlertStatus) => { diff --git a/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar_with_url_sync.tsx b/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar_with_url_sync.tsx index 91a3453c23ea0..0ce6be6003517 100644 --- a/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar_with_url_sync.tsx +++ b/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar_with_url_sync.tsx @@ -26,13 +26,14 @@ function AlertSearchbarWithUrlSync(props: AlertSearchBarWithUrlSyncProps) { }, }, triggersActionsUi: { getAlertsSearchBar: AlertsSearchBar }, + uiSettings, } = useKibana().services; return ( ); } diff --git a/x-pack/plugins/observability/public/components/alert_search_bar/types.ts b/x-pack/plugins/observability/public/components/alert_search_bar/types.ts index 426aea00886cf..a527f5deca40c 100644 --- a/x-pack/plugins/observability/public/components/alert_search_bar/types.ts +++ b/x-pack/plugins/observability/public/components/alert_search_bar/types.ts @@ -10,8 +10,8 @@ import { ToastsStart } from '@kbn/core-notifications-browser'; import { TimefilterContract } from '@kbn/data-plugin/public'; import { AlertsSearchBarProps } from '@kbn/triggers-actions-ui-plugin/public/application/sections/alerts_search_bar'; import { BoolQuery, Query } from '@kbn/es-query'; +import type { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; import { AlertStatus } from '../../../common/typings'; - export interface AlertStatusFilterProps { status: AlertStatus; onChange: (id: AlertStatus) => void; @@ -37,6 +37,7 @@ export interface Services { timeFilterService: TimefilterContract; AlertsSearchBar: (props: AlertsSearchBarProps) => ReactElement; useToasts: () => ToastsStart; + uiSettings: IUiSettingsClient; } export interface ObservabilityAlertSearchBarProps diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts.tsx index daf02e9f6fd09..903a76328bdd4 100644 --- a/x-pack/plugins/observability/public/pages/alerts/alerts.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/alerts.tsx @@ -63,6 +63,7 @@ function InternalAlertsPage() { getAlertsStateTable: AlertsStateTable, getAlertSummaryWidget: AlertSummaryWidget, }, + uiSettings, } = kibanaServices; const { ObservabilityPageTemplate } = usePluginContext(); const alertSearchBarStateProps = useAlertSearchBarStateContainer(ALERTS_URL_STORAGE_KEY, { @@ -198,7 +199,7 @@ function InternalAlertsPage() { {...alertSearchBarStateProps} appName={ALERTS_SEARCH_BAR_ID} onEsQueryChange={setEsQuery} - services={{ timeFilterService, AlertsSearchBar, useToasts }} + services={{ timeFilterService, AlertsSearchBar, useToasts, uiSettings }} /> diff --git a/x-pack/plugins/observability/tsconfig.json b/x-pack/plugins/observability/tsconfig.json index cf3402a90c888..ba9ac59725adc 100644 --- a/x-pack/plugins/observability/tsconfig.json +++ b/x-pack/plugins/observability/tsconfig.json @@ -101,7 +101,8 @@ "@kbn/task-manager-plugin", "@kbn/core-elasticsearch-client-server-mocks", "@kbn/ingest-pipelines-plugin", - "@kbn/core-saved-objects-api-server-mocks" + "@kbn/core-saved-objects-api-server-mocks", + "@kbn/core-ui-settings-browser-mocks" ], "exclude": [ "target/**/*" From 51d708e1c0b5f001076c217e7c5e8eeaf88544ae Mon Sep 17 00:00:00 2001 From: Julia Bardi <90178898+juliaElastic@users.noreply.github.com> Date: Thu, 4 Jan 2024 12:30:52 +0100 Subject: [PATCH 104/323] [Fleet] allow agent upgrade when agent is on latest version (#174158) ## Summary Closes https://github.com/elastic/ingest-dev/issues/2726 Allow upgrade with typing in agent version when agent is on latest version according to the version list. This is an escape hatch if the version list does not contain the latest version. To verify: - enroll an agent locally or in a vm with latest published version 8.11.3 - check that Upgrade agent action is not disabled in agent list (single and bulk action) and agent details. - when opening the upgrade agent modal, the combo box should allow typing in any version - the upgrade available badge is hidden when the agent is on the latest version in the list image image image ### Checklist - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --- .../services/is_agent_upgradeable.test.ts | 102 +++++----- .../common/services/is_agent_upgradeable.ts | 63 +++--- .../components/action_menu.test.tsx | 4 +- .../components/actions_menu.tsx | 5 +- .../agent_details/agent_details_overview.tsx | 18 +- .../components/agent_list_table.tsx | 23 +-- .../components/agent_upgrade_status.test.tsx | 191 +++++++++++------- .../components/agent_upgrade_status.tsx | 30 ++- .../components/table_row_actions.test.tsx | 4 +- .../components/table_row_actions.tsx | 5 +- .../agent_upgrade_modal/index.test.tsx | 24 ++- .../components/agent_upgrade_modal/index.tsx | 64 +++--- .../server/routes/agent/upgrade_handler.ts | 4 +- .../fleet/server/services/agents/crud.test.ts | 2 +- .../fleet/server/services/agents/crud.ts | 6 +- .../services/agents/upgrade_action_runner.ts | 4 +- .../translations/translations/fr-FR.json | 1 - .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - 19 files changed, 299 insertions(+), 253 deletions(-) diff --git a/x-pack/plugins/fleet/common/services/is_agent_upgradeable.test.ts b/x-pack/plugins/fleet/common/services/is_agent_upgradeable.test.ts index dbc5b5515b6bb..22ac8e80949ea 100644 --- a/x-pack/plugins/fleet/common/services/is_agent_upgradeable.test.ts +++ b/x-pack/plugins/fleet/common/services/is_agent_upgradeable.test.ts @@ -12,6 +12,8 @@ import { isAgentUpgradeable, isAgentUpgrading, getNotUpgradeableMessage, + isAgentUpgradeAvailable, + isAgentUpgradeableToVersion, } from './is_agent_upgradeable'; const getAgent = ({ @@ -116,77 +118,51 @@ const getAgent = ({ } return agent; }; -describe('Fleet - isAgentUpgradeable', () => { +describe('Fleet - isAgentUpgradeAvailable', () => { it('returns false if agent reports not upgradeable with agent version < latest agent version', () => { - expect(isAgentUpgradeable(getAgent({ version: '7.9.0' }), '8.0.0')).toBe(false); + expect(isAgentUpgradeAvailable(getAgent({ version: '7.9.0' }), '8.0.0')).toBe(false); }); it('returns false if agent reports not upgradeable with agent version > latest agent version', () => { - expect(isAgentUpgradeable(getAgent({ version: '8.0.0' }), '7.9.0')).toBe(false); + expect(isAgentUpgradeAvailable(getAgent({ version: '8.0.0' }), '7.9.0')).toBe(false); }); it('returns false if agent reports not upgradeable with agent version === latest agent version', () => { - expect(isAgentUpgradeable(getAgent({ version: '8.0.0' }), '8.0.0')).toBe(false); + expect(isAgentUpgradeAvailable(getAgent({ version: '8.0.0' }), '8.0.0')).toBe(false); }); it('returns false if agent reports upgradeable, with agent version === latest agent version', () => { - expect(isAgentUpgradeable(getAgent({ version: '8.0.0', upgradeable: true }), '8.0.0')).toBe( - false - ); - }); - it('returns false if agent reports upgradeable, with agent version > latest agent version', () => { - expect(isAgentUpgradeable(getAgent({ version: '8.0.0', upgradeable: true }), '7.9.0')).toBe( - false - ); - }); - it('returns false if agent reports upgradeable, but agent is unenrolling', () => { expect( - isAgentUpgradeable( - getAgent({ version: '7.9.0', upgradeable: true, unenrolling: true }), - '8.0.0' - ) + isAgentUpgradeAvailable(getAgent({ version: '8.0.0', upgradeable: true }), '8.0.0') ).toBe(false); }); - it('returns false if agent reports upgradeable, but agent is unenrolled', () => { + it('returns false if agent reports upgradeable, with agent version > latest agent version', () => { expect( - isAgentUpgradeable( - getAgent({ version: '7.9.0', upgradeable: true, unenrolled: true }), - '8.0.0' - ) + isAgentUpgradeAvailable(getAgent({ version: '8.0.0', upgradeable: true }), '7.9.0') ).toBe(false); }); it('returns true if agent reports upgradeable, with agent version < latest agent version', () => { - expect(isAgentUpgradeable(getAgent({ version: '7.9.0', upgradeable: true }), '8.0.0')).toBe( - true - ); + expect( + isAgentUpgradeAvailable(getAgent({ version: '7.9.0', upgradeable: true }), '8.0.0') + ).toBe(true); }); it('returns false if agent reports upgradeable, with agent snapshot version === latest agent version', () => { expect( - isAgentUpgradeable(getAgent({ version: '7.9.0-SNAPSHOT', upgradeable: true }), '7.9.0') + isAgentUpgradeAvailable(getAgent({ version: '7.9.0-SNAPSHOT', upgradeable: true }), '7.9.0') ).toBe(false); }); - it('returns true if agent reports upgradeable, with upgrade to agent snapshot version newer than latest agent version', () => { - expect( - isAgentUpgradeable( - getAgent({ version: '8.10.2', upgradeable: true }), - '8.10.2', - '8.11.0-SNAPSHOT' - ) - ).toBe(true); - }); - it('returns false if agent reports upgradeable, with target version < current agent version ', () => { +}); +describe('Fleet - isAgentUpgradeable', () => { + it('returns false if agent reports upgradeable, but agent is unenrolling', () => { expect( - isAgentUpgradeable(getAgent({ version: '7.9.0', upgradeable: true }), '8.0.0', '7.8.0') + isAgentUpgradeable(getAgent({ version: '7.9.0', upgradeable: true, unenrolling: true })) ).toBe(false); }); - it('returns false if agent reports upgradeable, with target version == current agent version ', () => { + it('returns false if agent reports upgradeable, but agent is unenrolled', () => { expect( - isAgentUpgradeable(getAgent({ version: '7.9.0', upgradeable: true }), '8.0.0', '7.9.0') + isAgentUpgradeable(getAgent({ version: '7.9.0', upgradeable: true, unenrolled: true })) ).toBe(false); }); it('returns false if agent with no upgrade details reports upgradeable, but is already upgrading', () => { expect( - isAgentUpgradeable( - getAgent({ version: '7.9.0', upgradeable: true, upgrading: true }), - '8.0.0' - ) + isAgentUpgradeable(getAgent({ version: '7.9.0', upgradeable: true, upgrading: true })) ).toBe(false); }); it('returns false if agent reports upgradeable, but has an upgrade status other than failed', () => { @@ -200,8 +176,7 @@ describe('Fleet - isAgentUpgradeable', () => { action_id: 'XXX', state: 'UPG_REQUESTED', }, - }), - '8.0.0' + }) ) ).toBe(false); }); @@ -219,27 +194,40 @@ describe('Fleet - isAgentUpgradeable', () => { error_msg: 'Upgrade timed out', }, }, - }), - '8.0.0' + }) ) ).toBe(true); }); it('returns false if the agent reports upgradeable but was upgraded less than 10 minutes ago', () => { expect( - isAgentUpgradeable( - getAgent({ version: '7.9.0', upgradeable: true, minutesSinceUpgrade: 9 }), - '8.0.0' - ) + isAgentUpgradeable(getAgent({ version: '7.9.0', upgradeable: true, minutesSinceUpgrade: 9 })) ).toBe(false); }); it('returns true if agent reports upgradeable and was upgraded more than 10 minutes ago', () => { expect( - isAgentUpgradeable( - getAgent({ version: '7.9.0', upgradeable: true, minutesSinceUpgrade: 11 }), - '8.0.0' + isAgentUpgradeable(getAgent({ version: '7.9.0', upgradeable: true, minutesSinceUpgrade: 11 })) + ).toBe(true); + }); +}); +describe('Fleet - isAgentUpgradeableToVersion', () => { + it('returns true if agent reports upgradeable, with upgrade to agent snapshot version newer than latest agent version', () => { + expect( + isAgentUpgradeableToVersion( + getAgent({ version: '8.10.2', upgradeable: true }), + '8.11.0-SNAPSHOT' ) ).toBe(true); }); + it('returns false if agent reports upgradeable, with target version < current agent version ', () => { + expect( + isAgentUpgradeableToVersion(getAgent({ version: '7.9.0', upgradeable: true }), '7.8.0') + ).toBe(false); + }); + it('returns false if agent reports upgradeable, with target version == current agent version ', () => { + expect( + isAgentUpgradeableToVersion(getAgent({ version: '7.9.0', upgradeable: true }), '7.9.0') + ).toBe(false); + }); }); describe('Fleet - getNotUpgradeableMessage', () => { @@ -264,7 +252,7 @@ describe('Fleet - getNotUpgradeableMessage', () => { it('if agent reports upgradeable, with agent version === latest agent version', () => { expect( getNotUpgradeableMessage(getAgent({ version: '8.0.0', upgradeable: true }), '8.0.0') - ).toBe('agent is already running on the latest available version.'); + ).toBe(undefined); }); it('if agent reports upgradeable, with agent version > latest agent version', () => { @@ -300,7 +288,7 @@ describe('Fleet - getNotUpgradeableMessage', () => { it('if agent reports upgradeable, with agent snapshot version === latest agent version', () => { expect( getNotUpgradeableMessage(getAgent({ version: '7.9.0-SNAPSHOT', upgradeable: true }), '7.9.0') - ).toBe('agent is already running on the latest available version.'); + ).toBe(undefined); }); it('it does not return message if agent reports upgradeable, with upgrade to agent snapshot version newer than latest agent version', () => { diff --git a/x-pack/plugins/fleet/common/services/is_agent_upgradeable.ts b/x-pack/plugins/fleet/common/services/is_agent_upgradeable.ts index d36010aa13b98..8d2108ee83ef0 100644 --- a/x-pack/plugins/fleet/common/services/is_agent_upgradeable.ts +++ b/x-pack/plugins/fleet/common/services/is_agent_upgradeable.ts @@ -29,21 +29,20 @@ export const LATEST_VERSION_NOT_VALID_ERROR = 'latest version is not valid.'; export const AGENT_ALREADY_ON_LATEST_ERROR = `agent is already running on the latest available version.`; export const AGENT_ON_GREATER_VERSION_ERROR = `agent is running on a version greater than the latest available version.`; -export function isAgentUpgradeable( - agent: Agent, - latestAgentVersion: string, - versionToUpgrade?: string -) { - let agentVersion: string; - if (typeof agent?.local_metadata?.elastic?.agent?.version === 'string') { - agentVersion = agent.local_metadata.elastic.agent.version; - } else { - return false; - } +export function isAgentUpgradeAvailable(agent: Agent, latestAgentVersion?: string) { + return ( + latestAgentVersion && + isAgentUpgradeable(agent) && + agent?.local_metadata?.elastic?.agent?.version && + isAgentVersionLessThanLatest(agent.local_metadata.elastic.agent.version, latestAgentVersion) + ); +} + +export function isAgentUpgradeable(agent: Agent) { if (agent.unenrollment_started_at || agent.unenrolled_at) { return false; } - if (!agent.local_metadata.elastic.agent.upgradeable) { + if (!agent.local_metadata?.elastic?.agent?.upgradeable) { return false; } if (isAgentUpgrading(agent)) { @@ -52,12 +51,34 @@ export function isAgentUpgradeable( if (getRecentUpgradeInfoForAgent(agent).hasBeenUpgradedRecently) { return false; } - if (versionToUpgrade !== undefined) { - return isNotDowngrade(agentVersion, versionToUpgrade); + return true; +} + +export function isAgentUpgradeableToVersion(agent: Agent, versionToUpgrade?: string) { + const isAgentUpgradeableCheck = isAgentUpgradeable(agent); + if (!isAgentUpgradeableCheck) return false; + let agentVersion: string; + if (typeof agent?.local_metadata?.elastic?.agent?.version === 'string') { + agentVersion = agent.local_metadata.elastic.agent.version; + } else { + return false; + } + if (!versionToUpgrade) { + return false; } - return isAgentVersionLessThanLatest(agentVersion, latestAgentVersion); + return isNotDowngrade(agentVersion, versionToUpgrade); } +export const isAgentVersionLessThanLatest = (agentVersion: string, latestAgentVersion: string) => { + // make sure versions are only the number before comparison + const agentVersionNumber = semverCoerce(agentVersion); + if (!agentVersionNumber) throw new Error(`${INVALID_VERSION_ERROR}`); + const latestAgentVersionNumber = semverCoerce(latestAgentVersion); + if (!latestAgentVersionNumber) throw new Error(`${LATEST_VERSION_NOT_VALID_ERROR}`); + + return semverLt(agentVersionNumber, latestAgentVersionNumber); +}; + // Based on the previous, returns a detailed message explaining why the agent is not upgradeable export const getNotUpgradeableMessage = ( agent: Agent, @@ -105,24 +126,12 @@ export const getNotUpgradeableMessage = ( const latestAgentVersionNumber = semverCoerce(latestAgentVersion); if (!latestAgentVersionNumber) return LATEST_VERSION_NOT_VALID_ERROR; - if (semverEq(agentVersionNumber, latestAgentVersionNumber)) return AGENT_ALREADY_ON_LATEST_ERROR; - if (semverGt(agentVersionNumber, latestAgentVersionNumber)) return AGENT_ON_GREATER_VERSION_ERROR; // in all the other cases, the agent is upgradeable; don't return any message. return undefined; }; -const isAgentVersionLessThanLatest = (agentVersion: string, latestAgentVersion: string) => { - // make sure versions are only the number before comparison - const agentVersionNumber = semverCoerce(agentVersion); - if (!agentVersionNumber) throw new Error(`${INVALID_VERSION_ERROR}`); - const latestAgentVersionNumber = semverCoerce(latestAgentVersion); - if (!latestAgentVersionNumber) throw new Error(`${LATEST_VERSION_NOT_VALID_ERROR}`); - - return semverLt(agentVersionNumber, latestAgentVersionNumber); -}; - const isNotDowngrade = (agentVersion: string, versionToUpgrade: string) => { const agentVersionNumber = semverCoerce(agentVersion); if (!agentVersionNumber) throw new Error(`${INVALID_VERSION_ERROR}`); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/action_menu.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/action_menu.test.tsx index 2d39700da5caa..17004f5eef7cf 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/action_menu.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/action_menu.test.tsx @@ -238,7 +238,7 @@ describe('AgentDetailsActionMenu', () => { expect(res).toBeEnabled(); }); - it('should render a disabled action button if agent version is latest', async () => { + it('should render an enabled action button if agent version is latest', async () => { const res = renderAndGetUpgradeButton({ agent: { active: true, @@ -249,7 +249,7 @@ describe('AgentDetailsActionMenu', () => { }); expect(res).not.toBe(null); - expect(res).not.toBeEnabled(); + expect(res).toBeEnabled(); }); }); }); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/actions_menu.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/actions_menu.tsx index d2426dbac8ca5..a9d58c0c9d11e 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/actions_menu.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/actions_menu.tsx @@ -13,7 +13,7 @@ import { isAgentRequestDiagnosticsSupported } from '../../../../../../../common/ import { isStuckInUpdating } from '../../../../../../../common/services/agent_status'; import type { Agent, AgentPolicy } from '../../../../types'; -import { useAgentVersion, useAuthz } from '../../../../hooks'; +import { useAuthz } from '../../../../hooks'; import { ContextMenuActions } from '../../../../components'; import { AgentUnenrollAgentModal, @@ -34,7 +34,6 @@ export const AgentDetailsActionMenu: React.FunctionComponent<{ onCancelReassign?: () => void; }> = memo(({ agent, assignFlyoutOpenByDefault = false, onCancelReassign, agentPolicy }) => { const hasFleetAllPrivileges = useAuthz().fleet.all; - const latestAgentVersion = useAgentVersion(); const refreshAgent = useAgentRefresh(); const [isReassignFlyoutOpen, setIsReassignFlyoutOpen] = useState(assignFlyoutOpenByDefault); const [isUnenrollModalOpen, setIsUnenrollModalOpen] = useState(false); @@ -102,7 +101,7 @@ export const AgentDetailsActionMenu: React.FunctionComponent<{ , { setIsUpgradeModalOpen(true); }} diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_overview.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_overview.tsx index 45d5ead9909ee..44c4138b16650 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_overview.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_overview.tsx @@ -23,11 +23,7 @@ import { FormattedMessage, FormattedRelative } from '@kbn/i18n-react'; import type { Agent, AgentPolicy } from '../../../../../types'; import { useAgentVersion } from '../../../../../hooks'; -import { - ExperimentalFeaturesService, - isAgentUpgradeable, - getNotUpgradeableMessage, -} from '../../../../../services'; +import { ExperimentalFeaturesService, isAgentUpgradeable } from '../../../../../services'; import { AgentPolicySummaryLine } from '../../../../../components'; import { AgentHealth } from '../../../components'; import { Tags } from '../../../components/tags'; @@ -181,16 +177,10 @@ export const AgentDetailsOverviewSection: React.FunctionComponent<{ diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_list_table.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_list_table.tsx index d555c163c0fc0..94414965183f0 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_list_table.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_list_table.tsx @@ -31,8 +31,6 @@ import { Tags } from '../../components/tags'; import type { AgentMetrics } from '../../../../../../../common/types'; import { formatAgentCPU, formatAgentMemory } from '../../services/agent_metrics'; -import { getNotUpgradeableMessage } from '../../../../../../../common/services/is_agent_upgradeable'; - import { AgentUpgradeStatus } from './agent_upgrade_status'; import { EmptyPrompt } from './empty_prompt'; @@ -295,17 +293,9 @@ export const AgentListTable: React.FC = (props: Props) => { @@ -337,12 +327,7 @@ export const AgentListTable: React.FC = (props: Props) => { items={ totalAgents ? showUpgradeable - ? agents.filter( - (agent) => - isAgentSelectable(agent) && - latestAgentVersion && - isAgentUpgradeable(agent, latestAgentVersion) - ) + ? agents.filter((agent) => isAgentSelectable(agent) && isAgentUpgradeable(agent)) : agents : [] } diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.test.tsx index 1155176bf7915..336955289e2d6 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.test.tsx @@ -131,10 +131,12 @@ describe('AgentUpgradeStatus', () => { describe('with agent upgrade details', () => { it('should render UPG_REQUESTED state correctly', async () => { const results = render({ - agentUpgradeDetails: { - target_version: 'XXX', - action_id: 'xxx', - state: 'UPG_REQUESTED', + agent: { + upgrade_details: { + target_version: 'XXX', + action_id: 'xxx', + state: 'UPG_REQUESTED', + }, }, }); @@ -144,12 +146,14 @@ describe('AgentUpgradeStatus', () => { it('should render UPG_SCHEDULED state correctly', async () => { const results = render({ - agentUpgradeDetails: { - target_version: 'XXX', - action_id: 'xxx', - state: 'UPG_SCHEDULED', - metadata: { - scheduled_at: getDateString(200), + agent: { + upgrade_details: { + target_version: 'XXX', + action_id: 'xxx', + state: 'UPG_SCHEDULED', + metadata: { + scheduled_at: getDateString(200), + }, }, }, }); @@ -163,12 +167,14 @@ describe('AgentUpgradeStatus', () => { it('should render UPG_DOWNLOADING state correctly', async () => { const results = render({ - agentUpgradeDetails: { - target_version: 'XXX', - action_id: 'xxx', - state: 'UPG_DOWNLOADING', - metadata: { - download_percent: 16.4, + agent: { + upgrade_details: { + target_version: 'XXX', + action_id: 'xxx', + state: 'UPG_DOWNLOADING', + metadata: { + download_percent: 16.4, + }, }, }, }); @@ -179,14 +185,16 @@ describe('AgentUpgradeStatus', () => { it('should render UPG_DOWNLOADING with a warning if agent has a retry_message and retry_until', async () => { const results = render({ - agentUpgradeDetails: { - target_version: 'XXX', - action_id: 'xxx', - state: 'UPG_DOWNLOADING', - metadata: { - download_percent: 16.4, - retry_error_msg: 'unable to download', - retry_until: `${moment().add(10, 'minutes').toISOString()}`, + agent: { + upgrade_details: { + target_version: 'XXX', + action_id: 'xxx', + state: 'UPG_DOWNLOADING', + metadata: { + download_percent: 16.4, + retry_error_msg: 'unable to download', + retry_until: `${moment().add(10, 'minutes').toISOString()}`, + }, }, }, }); @@ -202,14 +210,16 @@ describe('AgentUpgradeStatus', () => { it('should not render retry_until if the remaining time is negative', async () => { const results = render({ - agentUpgradeDetails: { - target_version: 'XXX', - action_id: 'xxx', - state: 'UPG_DOWNLOADING', - metadata: { - download_percent: 16.4, - retry_error_msg: 'unable to download', - retry_until: `${moment().subtract(10, 'minutes').toISOString()}`, + agent: { + upgrade_details: { + target_version: 'XXX', + action_id: 'xxx', + state: 'UPG_DOWNLOADING', + metadata: { + download_percent: 16.4, + retry_error_msg: 'unable to download', + retry_until: `${moment().subtract(10, 'minutes').toISOString()}`, + }, }, }, }); @@ -225,13 +235,15 @@ describe('AgentUpgradeStatus', () => { it('should render UPG_DOWNLOADING with a warning if agent has a retry_message', async () => { const results = render({ - agentUpgradeDetails: { - target_version: 'XXX', - action_id: 'xxx', - state: 'UPG_DOWNLOADING', - metadata: { - download_percent: 16.4, - retry_error_msg: 'unable to download', + agent: { + upgrade_details: { + target_version: 'XXX', + action_id: 'xxx', + state: 'UPG_DOWNLOADING', + metadata: { + download_percent: 16.4, + retry_error_msg: 'unable to download', + }, }, }, }); @@ -242,10 +254,12 @@ describe('AgentUpgradeStatus', () => { it('should render UPG_EXTRACTING state correctly', async () => { const results = render({ - agentUpgradeDetails: { - target_version: 'XXX', - action_id: 'xxx', - state: 'UPG_EXTRACTING', + agent: { + upgrade_details: { + target_version: 'XXX', + action_id: 'xxx', + state: 'UPG_EXTRACTING', + }, }, }); @@ -255,10 +269,12 @@ describe('AgentUpgradeStatus', () => { it('should render UPG_REPLACING state correctly', async () => { const results = render({ - agentUpgradeDetails: { - target_version: 'XXX', - action_id: 'xxx', - state: 'UPG_REPLACING', + agent: { + upgrade_details: { + target_version: 'XXX', + action_id: 'xxx', + state: 'UPG_REPLACING', + }, }, }); @@ -268,10 +284,12 @@ describe('AgentUpgradeStatus', () => { it('should render UPG_RESTARTING state correctly', async () => { const results = render({ - agentUpgradeDetails: { - target_version: 'XXX', - action_id: 'xxx', - state: 'UPG_RESTARTING', + agent: { + upgrade_details: { + target_version: 'XXX', + action_id: 'xxx', + state: 'UPG_RESTARTING', + }, }, }); @@ -281,10 +299,12 @@ describe('AgentUpgradeStatus', () => { it('should render UPG_WATCHING state correctly', async () => { const results = render({ - agentUpgradeDetails: { - target_version: 'XXX', - action_id: 'xxx', - state: 'UPG_WATCHING', + agent: { + upgrade_details: { + target_version: 'XXX', + action_id: 'xxx', + state: 'UPG_WATCHING', + }, }, }); @@ -294,10 +314,12 @@ describe('AgentUpgradeStatus', () => { it('should render UPG_ROLLBACK state correctly', async () => { const results = render({ - agentUpgradeDetails: { - target_version: 'XXX', - action_id: 'xxx', - state: 'UPG_ROLLBACK', + agent: { + upgrade_details: { + target_version: 'XXX', + action_id: 'xxx', + state: 'UPG_ROLLBACK', + }, }, }); @@ -307,13 +329,15 @@ describe('AgentUpgradeStatus', () => { it('should render UPG_FAILED state correctly', async () => { const results = render({ - agentUpgradeDetails: { - target_version: 'XXX', - action_id: 'xxx', - state: 'UPG_FAILED', - metadata: { - failed_state: 'UPG_DOWNLOADING', - error_msg: 'Something went wrong', + agent: { + upgrade_details: { + target_version: 'XXX', + action_id: 'xxx', + state: 'UPG_FAILED', + metadata: { + failed_state: 'UPG_DOWNLOADING', + error_msg: 'Something went wrong', + }, }, }, }); @@ -327,6 +351,8 @@ describe('AgentUpgradeStatus', () => { it('should render a badge with no tooltip if the agent is upgradable', () => { const results = render({ isAgentUpgradable: true, + agent: { local_metadata: { elastic: { agent: { version: '8.11.0', upgradeable: true } } } }, + latestAgentVersion: '8.12.0', }); expectNoUpgradeStatusBadges(results); @@ -334,10 +360,31 @@ describe('AgentUpgradeStatus', () => { expect(results.queryAllByText('Info')).toEqual([]); }); + it('should not render a badge if the agent is on latest version', () => { + const results = render({ + isAgentUpgradable: true, + agent: { local_metadata: { elastic: { agent: { version: '8.12.0', upgradeable: true } } } }, + latestAgentVersion: '8.12.0', + }); + + expectNoUpgradeStatusBadges(results); + expect(results.queryByText('Upgrade available')).not.toBeInTheDocument(); + }); + + it('should not render a badge if the agent is version is newer than latest version', () => { + const results = render({ + isAgentUpgradable: true, + agent: { local_metadata: { elastic: { agent: { version: '8.12.0', upgradeable: true } } } }, + latestAgentVersion: '8.11.0', + }); + + expectNoUpgradeStatusBadges(results); + expect(results.queryByText('Upgrade available')).not.toBeInTheDocument(); + }); + it('should render an icon with tooltip if the agent is upgrading', async () => { const results = render({ - agentUpgradeStartedAt: '2023-10-03T14:34:12Z', - agentUpgradedAt: null, + agent: { upgrade_started_at: '2023-10-03T14:34:12Z', upgraded_at: null }, }); expectNoUpgradeStatusBadges(results); @@ -351,8 +398,12 @@ describe('AgentUpgradeStatus', () => { it('should not render anything if the agent is neither upgrading nor upgradable', () => { const results = render({ - agentUpgradeStartedAt: null, - agentUpgradedAt: '2023-10-03T14:34:12Z', + agent: { + upgrade_started_at: null, + upgraded_at: '2023-10-03T14:34:12Z', + local_metadata: { elastic: { agent: { version: '8.12.0', upgradeable: true } } }, + }, + latestAgentVersion: '8.12.0', }); expectNoUpgradeStatusBadges(results); expect( diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.tsx index cf3ad42292533..dceb1de73527b 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_upgrade_status.tsx @@ -10,7 +10,12 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { EuiBadge, EuiFlexGroup, EuiFlexItem, EuiIconTip } from '@elastic/eui'; import moment from 'moment'; +import type { Agent } from '../../../../types'; import type { AgentUpgradeDetails } from '../../../../../../../common/types'; +import { + getNotUpgradeableMessage, + isAgentUpgradeAvailable, +} from '../../../../../../../common/services'; /** * Returns a user-friendly string for the estimated remaining time until the upgrade is scheduled. @@ -267,25 +272,18 @@ function getStatusComponents(agentUpgradeDetails?: AgentUpgradeDetails) { export const AgentUpgradeStatus: React.FC<{ isAgentUpgradable: boolean; - agentUpgradeStartedAt?: string | null; - agentUpgradedAt?: string | null; - agentUpgradeDetails?: AgentUpgradeDetails; - notUpgradeableMessage?: string | null; -}> = ({ - isAgentUpgradable, - agentUpgradeStartedAt, - agentUpgradedAt, - agentUpgradeDetails, - notUpgradeableMessage, -}) => { + agent: Agent; + latestAgentVersion?: string; +}> = ({ isAgentUpgradable, agent, latestAgentVersion }) => { const isAgentUpgrading = useMemo( - () => agentUpgradeStartedAt && !agentUpgradedAt, - [agentUpgradeStartedAt, agentUpgradedAt] + () => agent.upgrade_started_at && !agent.upgraded_at, + [agent.upgrade_started_at, agent.upgraded_at] ); - const status = useMemo(() => getStatusComponents(agentUpgradeDetails), [agentUpgradeDetails]); + const status = useMemo(() => getStatusComponents(agent.upgrade_details), [agent.upgrade_details]); const minVersion = '8.12'; + const notUpgradeableMessage = getNotUpgradeableMessage(agent, latestAgentVersion); - if (isAgentUpgradable) { + if (isAgentUpgradable && isAgentUpgradeAvailable(agent, latestAgentVersion)) { return ( {status.Badge} diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/table_row_actions.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/table_row_actions.test.tsx index 4e8d25f313ea5..fd3f130851d9f 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/table_row_actions.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/table_row_actions.test.tsx @@ -216,7 +216,7 @@ describe('TableRowActions', () => { expect(res).toBeEnabled(); }); - it('should render a disabled action button if agent version is latest', async () => { + it('should render an enabled action button if agent version is latest', async () => { const res = renderAndGetUpgradeButton({ agent: { active: true, @@ -229,7 +229,7 @@ describe('TableRowActions', () => { }); expect(res).not.toBe(null); - expect(res).not.toBeEnabled(); + expect(res).toBeEnabled(); }); }); }); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/table_row_actions.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/table_row_actions.tsx index ba2efb1d86f81..8e27cd281d946 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/table_row_actions.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/table_row_actions.tsx @@ -14,7 +14,7 @@ import { isAgentRequestDiagnosticsSupported } from '../../../../../../../common/ import { isStuckInUpdating } from '../../../../../../../common/services/agent_status'; import type { Agent, AgentPolicy } from '../../../../types'; -import { useAuthz, useLink, useAgentVersion } from '../../../../hooks'; +import { useAuthz, useLink } from '../../../../hooks'; import { ContextMenuActions } from '../../../../components'; import { isAgentUpgradeable } from '../../../../services'; import { ExperimentalFeaturesService } from '../../../../services'; @@ -42,7 +42,6 @@ export const TableRowActions: React.FunctionComponent<{ const hasFleetAllPrivileges = useAuthz().fleet.all; const isUnenrolling = agent.status === 'unenrolling'; - const latestAgentVersion = useAgentVersion(); const [isMenuOpen, setIsMenuOpen] = useState(false); const { diagnosticFileUploadEnabled, agentTamperProtectionEnabled } = ExperimentalFeaturesService.get(); @@ -107,7 +106,7 @@ export const TableRowActions: React.FunctionComponent<{ { onUpgradeClick(); }} diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_upgrade_modal/index.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_upgrade_modal/index.test.tsx index 17e415691a826..3073420f4dc58 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_upgrade_modal/index.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_upgrade_modal/index.test.tsx @@ -90,8 +90,8 @@ describe('AgentUpgradeAgentModal', () => { agentCount: 30, }); - const el = utils.getByTestId('agentUpgradeModal.VersionCombobox'); await waitFor(() => { + const el = utils.getByTestId('agentUpgradeModal.VersionCombobox'); expect(el.classList.contains('euiComboBox-isDisabled')).toBe(false); }); }); @@ -102,14 +102,30 @@ describe('AgentUpgradeAgentModal', () => { agentCount: 1, }); - const container = utils.getByTestId('agentUpgradeModal.VersionCombobox'); - const input = within(container).getByRole('combobox'); - await waitFor(() => { + const container = utils.getByTestId('agentUpgradeModal.VersionCombobox'); + const input = within(container).getByRole('combobox'); expect(input?.value).toEqual('8.10.2'); }); }); + it('should display the custom version text input if no versions', async () => { + const { utils } = renderAgentUpgradeAgentModal({ + agents: [ + { + id: 'agent1', + local_metadata: { host: 'abc', elastic: { agent: { version: '8.12.0' } } }, + }, + ] as any, + agentCount: 1, + }); + + await waitFor(() => { + const input = utils.getByTestId('agentUpgradeModal.VersionInput'); + expect(input?.textContent).toEqual(''); + }); + }); + it('should display available version options', async () => { mockSendGetAgentsAvailableVersions.mockClear(); mockSendGetAgentsAvailableVersions.mockResolvedValue({ diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_upgrade_modal/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_upgrade_modal/index.tsx index 28bb86fdb5382..aeea51987f43c 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_upgrade_modal/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_upgrade_modal/index.tsx @@ -19,6 +19,7 @@ import { EuiFlexItem, EuiCallOut, EuiDatePicker, + EuiFieldText, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -49,8 +50,8 @@ import { import { sendGetAgentsAvailableVersions } from '../../../../hooks'; import { - isAgentUpgradeable, getNotUpgradeableMessage, + isAgentUpgradeableToVersion, } from '../../../../../../../common/services/is_agent_upgradeable'; import { @@ -206,6 +207,8 @@ export const AgentUpgradeAgentModal: React.FunctionComponent { @@ -243,7 +246,7 @@ export const AgentUpgradeAgentModal: React.FunctionComponent ) : isSingleAgent ? ( - !isAgentUpgradeable(agents[0], latestAgentVersion || '', selectedVersion[0].value) ? ( + !isAgentUpgradeableToVersion(agents[0], selectedVersion[0].value) ? ( - >) => { - if (!selected.length) { - return; + {noVersions ? ( + { + const newValue = e.target.value; + setSelectedVersionStr(newValue); + setSelectedVersion([{ label: newValue, value: newValue }]); + }} + /> + ) : ( + >) => { + if (!selected.length) { + return; + } + setSelectedVersion(selected); + }} + onCreateOption={ + config?.internal?.onlyAllowAgentUpgradeToKnownVersions ? undefined : onCreateOption } - setSelectedVersion(selected); - }} - onCreateOption={ - config?.internal?.onlyAllowAgentUpgradeToKnownVersions ? undefined : onCreateOption - } - customOptionText="Use custom agent version {searchValue} (not recommended)" - /> + customOptionText="Use custom agent version {searchValue} (not recommended)" + /> + )} {!isSingleAgent && Array.isArray(agents) && diff --git a/x-pack/plugins/fleet/server/routes/agent/upgrade_handler.ts b/x-pack/plugins/fleet/server/routes/agent/upgrade_handler.ts index 3b1cd89ff1364..471264fbe1fd0 100644 --- a/x-pack/plugins/fleet/server/routes/agent/upgrade_handler.ts +++ b/x-pack/plugins/fleet/server/routes/agent/upgrade_handler.ts @@ -22,10 +22,10 @@ import { appContextService } from '../../services'; import { defaultFleetErrorHandler, AgentRequestInvalidError } from '../../errors'; import { getRecentUpgradeInfoForAgent, - isAgentUpgradeable, AGENT_UPGRADE_COOLDOWN_IN_MIN, isAgentUpgrading, getNotUpgradeableMessage, + isAgentUpgradeableToVersion, } from '../../../common/services'; import { getMaxVersion } from '../../../common/services/get_min_max_version'; import { getAgentById } from '../../services/agents'; @@ -111,7 +111,7 @@ export const postAgentUpgradeHandler: RequestHandler< }); } - if (!force && !isAgentUpgradeable(agent, latestAgentVersion, version)) { + if (!force && !isAgentUpgradeableToVersion(agent, version)) { return response.customError({ statusCode: 400, body: { diff --git a/x-pack/plugins/fleet/server/services/agents/crud.test.ts b/x-pack/plugins/fleet/server/services/agents/crud.test.ts index d8d65a695d3eb..93dde0737accc 100644 --- a/x-pack/plugins/fleet/server/services/agents/crud.test.ts +++ b/x-pack/plugins/fleet/server/services/agents/crud.test.ts @@ -25,7 +25,7 @@ import { jest.mock('../audit_logging'); jest.mock('../../../common/services/is_agent_upgradeable', () => ({ - isAgentUpgradeable: jest.fn().mockImplementation((agent: Agent) => agent.id.includes('up')), + isAgentUpgradeAvailable: jest.fn().mockImplementation((agent: Agent) => agent.id.includes('up')), })); jest.mock('./versions', () => { return { diff --git a/x-pack/plugins/fleet/server/services/agents/crud.ts b/x-pack/plugins/fleet/server/services/agents/crud.ts index b8eb0f7d0ca14..d8e6e58f059ad 100644 --- a/x-pack/plugins/fleet/server/services/agents/crud.ts +++ b/x-pack/plugins/fleet/server/services/agents/crud.ts @@ -16,7 +16,7 @@ import type { AgentSOAttributes, Agent, ListWithKuery } from '../../types'; import { appContextService, agentPolicyService } from '..'; import type { AgentStatus, FleetServerAgent } from '../../../common/types'; import { SO_SEARCH_LIMIT } from '../../../common/constants'; -import { isAgentUpgradeable } from '../../../common/services'; +import { isAgentUpgradeAvailable } from '../../../common/services'; import { AGENTS_INDEX } from '../../constants'; import { FleetError, @@ -340,12 +340,12 @@ export async function getAgentsByKuery( const response = await queryAgents(0, SO_SEARCH_LIMIT); agents = response.hits.hits .map(searchHitToAgent) - .filter((agent) => isAgentUpgradeable(agent, latestAgentVersion)); + .filter((agent) => isAgentUpgradeAvailable(agent, latestAgentVersion)); total = agents.length; const start = (page - 1) * perPage; agents = agents.slice(start, start + perPage); } else { - agents = agents.filter((agent) => isAgentUpgradeable(agent, latestAgentVersion)); + agents = agents.filter((agent) => isAgentUpgradeAvailable(agent, latestAgentVersion)); } } diff --git a/x-pack/plugins/fleet/server/services/agents/upgrade_action_runner.ts b/x-pack/plugins/fleet/server/services/agents/upgrade_action_runner.ts index 61e3ad42c8aae..c294c972d3519 100644 --- a/x-pack/plugins/fleet/server/services/agents/upgrade_action_runner.ts +++ b/x-pack/plugins/fleet/server/services/agents/upgrade_action_runner.ts @@ -12,8 +12,8 @@ import moment from 'moment'; import { getRecentUpgradeInfoForAgent, - isAgentUpgradeable, getNotUpgradeableMessage, + isAgentUpgradeableToVersion, } from '../../../common/services'; import type { Agent } from '../../types'; @@ -88,7 +88,7 @@ export async function upgradeBatch( // - upgradeable b/c of version check const isNotAllowed = getRecentUpgradeInfoForAgent(agent).hasBeenUpgradedRecently || - (!options.force && !isAgentUpgradeable(agent, latestAgentVersion, options.version)); + (!options.force && !isAgentUpgradeableToVersion(agent, options.version)); if (isNotAllowed) { throw new FleetError( `Agent ${agent.id} is not upgradeable: ${getNotUpgradeableMessage( diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 1996568bbbb47..9942bbf4508e3 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -18076,7 +18076,6 @@ "xpack.fleet.upgradeAgents.confirmSingleButtonLabel": "Mettre à niveau l'agent", "xpack.fleet.upgradeAgents.fatalErrorNotificationTitle": "Erreur lors de la mise à niveau de {count, plural, one {l'agent} other {{count} agents} =true {tous les agents sélectionnés}}", "xpack.fleet.upgradeAgents.noMaintenanceWindowOption": "Immédiatement", - "xpack.fleet.upgradeAgents.noVersionsText": "Aucun agent sélectionné ne peut bénéficier d’une mise à niveau. Sélectionnez un ou plusieurs agents éligibles.", "xpack.fleet.upgradeAgents.restartConfirmMultipleButtonLabel": "Relancer la mise à niveau {count, plural, one {l'agent} other {{count} agents} =true {tous les agents sélectionnés}}", "xpack.fleet.upgradeAgents.restartUpgradeMultipleTitle": "Relancer la mise à niveau {updating} sur {count, plural, one {l’agent} other {{count} agents} =true {tous les agents}} bloqué lors de la mise à niveau", "xpack.fleet.upgradeAgents.restartUpgradeSingleTitle": "Relancer la mise à niveau", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 376f095421c63..d569cab16ee93 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -18089,7 +18089,6 @@ "xpack.fleet.upgradeAgents.confirmSingleButtonLabel": "エージェントをアップグレード", "xpack.fleet.upgradeAgents.fatalErrorNotificationTitle": "{count, plural, other {{count}個のエージェント} =true {すべての選択されたエージェント}}のアップグレードエラー", "xpack.fleet.upgradeAgents.noMaintenanceWindowOption": "直ちに実行", - "xpack.fleet.upgradeAgents.noVersionsText": "アップグレード対象の選択したエージェントはありません。1つ以上の対象のエージェントを選択してください。", "xpack.fleet.upgradeAgents.restartConfirmMultipleButtonLabel": "{count, plural, other {{count}個のエージェント} =true {すべての選択されたエージェント}}を再起動", "xpack.fleet.upgradeAgents.restartUpgradeMultipleTitle": "更新が停止している{count, plural, one {エージェント} other {{count}個のエージェント} =true {すべてのエージェント}}のうち{updating}でアップグレードを再開", "xpack.fleet.upgradeAgents.restartUpgradeSingleTitle": "アップグレードを再開", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 485ca11b4fbfc..06fe50fdae469 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -18156,7 +18156,6 @@ "xpack.fleet.upgradeAgents.confirmSingleButtonLabel": "升级代理", "xpack.fleet.upgradeAgents.fatalErrorNotificationTitle": "升级{count, plural, one {代理} other { {count} 个代理} =true {所有选定代理}}时出错", "xpack.fleet.upgradeAgents.noMaintenanceWindowOption": "立即", - "xpack.fleet.upgradeAgents.noVersionsText": "没有任何选定的代理符合升级条件。请选择一个或多个符合条件的代理。", "xpack.fleet.upgradeAgents.restartConfirmMultipleButtonLabel": "重新开始升级{count, plural, one {代理} other { {count} 个代理} =true {所有选定代理}}", "xpack.fleet.upgradeAgents.restartUpgradeMultipleTitle": "在{count, plural, one {代理} other {{count} 个代理} =true {所有代理}}中的 {updating} 个的更新陷入停滞时重新开始升级", "xpack.fleet.upgradeAgents.restartUpgradeSingleTitle": "重新开始升级", From f46fdfc3ce9a3dd6b247c38a04792e59ab17c2a8 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Thu, 4 Jan 2024 13:50:36 +0100 Subject: [PATCH 105/323] [Fleet] Fix form state for input integration (#174248) --- .../services/prepare_input_pkg_policy_dataset.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/services/prepare_input_pkg_policy_dataset.ts b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/services/prepare_input_pkg_policy_dataset.ts index 413368772101a..5218583e7212f 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/services/prepare_input_pkg_policy_dataset.ts +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/services/prepare_input_pkg_policy_dataset.ts @@ -5,6 +5,8 @@ * 2.0. */ +import { cloneDeep } from 'lodash'; + import { DATASET_VAR_NAME } from '../../../../../../../common/constants'; import type { NewPackagePolicy } from '../../../../types'; @@ -14,7 +16,7 @@ export function prepareInputPackagePolicyDataset(newPolicy: NewPackagePolicy): { forceCreateNeeded: boolean; } { let forceCreateNeeded = false; - const { inputs } = newPolicy; + const { inputs } = cloneDeep(newPolicy); if (!inputs || !inputs.length) { return { policy: newPolicy, forceCreateNeeded: false }; From d791a3066e136a03354e4cb82662e254b3c06951 Mon Sep 17 00:00:00 2001 From: Katerina Date: Thu, 4 Jan 2024 15:12:30 +0200 Subject: [PATCH 106/323] [APM] Use ad hoc data view (#173699) ## Summary closes https://github.com/elastic/kibana/issues/172567 Replace and use ad-hoc data views instead of static ones. 1. Metrics dashboard 2. Discover link 3. Mobile geo map Metrics tab https://github.com/elastic/kibana/assets/3369346/ca40c0d7-498c-44a7-80f1-8c225218a7f6 Discover link https://github.com/elastic/kibana/assets/3369346/376d8f2f-6e6a-482b-a829-9963b7b6eeaf ## Note it is worth mentioning that when the links open in a new tab discover app uses the static data view. https://github.com/elastic/kibana/assets/3369346/68984ebc-41ef-4db6-b554-e87b73d201e6 --- .../apm_rule_unified_search_bar.tsx | 4 +- .../context_popover/field_stats_popover.tsx | 4 +- .../app/diagnostics/apm_documents_tab.tsx | 52 +++++------ .../public/components/app/metrics/index.tsx | 6 +- .../app/metrics/static_dashboard/helper.ts | 87 +++++++++++++------ .../app/metrics/static_dashboard/index.tsx | 26 +++--- .../service_overview/geo_map/embedded_map.tsx | 15 ++-- .../mobile/service_overview/geo_map/index.tsx | 4 + .../app/mobile/service_overview/index.tsx | 3 + .../app/service_dashboards/index.tsx | 4 +- .../trace_explorer/trace_search_box/index.tsx | 4 +- .../components/shared/kuery_bar/index.tsx | 4 +- .../links/discover_links/discover_link.tsx | 12 +-- .../discover_links.integration.test.tsx | 29 ++++++- .../shared/search_bar/search_bar.test.tsx | 4 +- .../transaction_action_menu.test.tsx.snap | 4 +- .../transaction_action_menu/sections.ts | 6 +- .../transaction_action_menu.test.tsx | 72 +++++++++++---- .../transaction_action_menu.tsx | 6 +- .../shared/unified_search_bar/index.tsx | 4 +- .../unified_search_bar.test.tsx | 4 +- ...ata_view.ts => use_adhoc_apm_data_view.ts} | 5 +- .../apm/public/hooks/use_data_view_id.tsx | 29 ------- 23 files changed, 229 insertions(+), 159 deletions(-) rename x-pack/plugins/apm/public/hooks/{use_apm_data_view.ts => use_adhoc_apm_data_view.ts} (94%) delete mode 100644 x-pack/plugins/apm/public/hooks/use_data_view_id.tsx diff --git a/x-pack/plugins/apm/public/components/alerting/ui_components/apm_rule_unified_search_bar.tsx b/x-pack/plugins/apm/public/components/alerting/ui_components/apm_rule_unified_search_bar.tsx index 549f394070ce5..fb877ff0ad57a 100644 --- a/x-pack/plugins/apm/public/components/alerting/ui_components/apm_rule_unified_search_bar.tsx +++ b/x-pack/plugins/apm/public/components/alerting/ui_components/apm_rule_unified_search_bar.tsx @@ -9,7 +9,7 @@ import { i18n } from '@kbn/i18n'; import { Query } from '@kbn/es-query'; import { useKibana } from '@kbn/kibana-react-plugin/public'; import { ApmPluginStartDeps } from '../../../plugin'; -import { useApmDataView } from '../../../hooks/use_apm_data_view'; +import { useAdHocApmDataView } from '../../../hooks/use_adhoc_apm_data_view'; import { TransactionDurationRuleParams } from '../rule_types/transaction_duration_rule_type'; import { ErrorRateRuleParams } from '../rule_types/transaction_error_rate_rule_type'; import { ErrorCountRuleParams } from '../rule_types/error_count_rule_type'; @@ -36,7 +36,7 @@ export function ApmRuleUnifiedSearchBar({ }, } = services; - const { dataView } = useApmDataView(); + const { dataView } = useAdHocApmDataView(); const searchbarPlaceholder = 'Search for APM data… (e.g. service.name: service-1)'; diff --git a/x-pack/plugins/apm/public/components/app/correlations/context_popover/field_stats_popover.tsx b/x-pack/plugins/apm/public/components/app/correlations/context_popover/field_stats_popover.tsx index b870f1f6ff8dd..8b50a6e9e1ff5 100644 --- a/x-pack/plugins/apm/public/components/app/correlations/context_popover/field_stats_popover.tsx +++ b/x-pack/plugins/apm/public/components/app/correlations/context_popover/field_stats_popover.tsx @@ -44,7 +44,7 @@ import { useApmParams } from '../../../../hooks/use_apm_params'; import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; import { useFetchParams } from '../use_fetch_params'; import type { ApmPluginStartDeps } from '../../../../plugin'; -import { useApmDataView } from '../../../../hooks/use_apm_data_view'; +import { useAdHocApmDataView } from '../../../../hooks/use_adhoc_apm_data_view'; import { useTheme } from '../../../../hooks/use_theme'; import { FETCH_STATUS, useFetcher } from '../../../../hooks/use_fetcher'; @@ -214,7 +214,7 @@ export function FieldStatsPopover({ data, core: { uiSettings }, } = useApmPluginContext(); - const { dataView } = useApmDataView(); + const { dataView } = useAdHocApmDataView(); const { services: { fieldFormats, charts }, } = useKibana(); diff --git a/x-pack/plugins/apm/public/components/app/diagnostics/apm_documents_tab.tsx b/x-pack/plugins/apm/public/components/app/diagnostics/apm_documents_tab.tsx index 03fcd2610f23b..52d237af22b7e 100644 --- a/x-pack/plugins/apm/public/components/app/diagnostics/apm_documents_tab.tsx +++ b/x-pack/plugins/apm/public/components/app/diagnostics/apm_documents_tab.tsx @@ -19,8 +19,8 @@ import { orderBy } from 'lodash'; import React, { useMemo, useState } from 'react'; import { asBigNumber, asInteger } from '../../../../common/utils/formatters'; import type { ApmEvent } from '../../../../server/routes/diagnostics/bundle/get_apm_events'; +import { useAdHocApmDataView } from '../../../hooks/use_adhoc_apm_data_view'; import { useApmParams } from '../../../hooks/use_apm_params'; -import { useDataViewId } from '../../../hooks/use_data_view_id'; import { ApmPluginStartDeps } from '../../../plugin'; import { SearchBar } from '../../shared/search_bar/search_bar'; import { useDiagnosticsContext } from './context/use_diagnostics'; @@ -28,7 +28,7 @@ import { useDiagnosticsContext } from './context/use_diagnostics'; export function DiagnosticsApmDocuments() { const { diagnosticsBundle, isImported } = useDiagnosticsContext(); const { discover } = useKibana().services; - const dataViewId = useDataViewId(); + const { dataView } = useAdHocApmDataView(); const [sortField, setSortField] = useState('name'); const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('asc'); @@ -94,30 +94,32 @@ export function DiagnosticsApmDocuments() { }, { name: 'Actions', - actions: [ - { - name: 'View', - description: 'View in Discover', - type: 'icon', - icon: 'discoverApp', - onClick: async (item) => { - await discover?.locator?.navigate({ - query: { - language: 'kuery', - query: item.kuery, + actions: dataView + ? [ + { + name: 'View', + description: 'View in Discover', + type: 'icon', + icon: 'discoverApp', + onClick: async (item) => { + await discover?.locator?.navigate({ + query: { + language: 'kuery', + query: item.kuery, + }, + dataViewId: dataView?.id ?? '', + timeRange: + rangeTo && rangeFrom + ? { + to: rangeTo, + from: rangeFrom, + } + : undefined, + }); }, - dataViewId, - timeRange: - rangeTo && rangeFrom - ? { - to: rangeTo, - from: rangeFrom, - } - : undefined, - }); - }, - }, - ], + }, + ] + : [], }, ]; diff --git a/x-pack/plugins/apm/public/components/app/metrics/index.tsx b/x-pack/plugins/apm/public/components/app/metrics/index.tsx index 0c70b6fd48d7f..1f86b5a8ceb63 100644 --- a/x-pack/plugins/apm/public/components/app/metrics/index.tsx +++ b/x-pack/plugins/apm/public/components/app/metrics/index.tsx @@ -17,11 +17,12 @@ import { ServiceMetrics } from './service_metrics'; import { JvmMetricsOverview } from './jvm_metrics_overview'; import { JsonMetricsDashboard } from './static_dashboard'; import { hasDashboardFile } from './static_dashboard/helper'; +import { useAdHocApmDataView } from '../../../hooks/use_adhoc_apm_data_view'; export function Metrics() { const { agentName, runtimeName, serverlessType } = useApmServiceContext(); const isAWSLambda = isAWSLambdaAgentName(serverlessType); - + const { dataView } = useAdHocApmDataView(); if (isAWSLambda) { return ; } @@ -32,12 +33,13 @@ export function Metrics() { serverlessType, }); - if (hasStaticDashboard) { + if (hasStaticDashboard && dataView) { return ( ); } diff --git a/x-pack/plugins/apm/public/components/app/metrics/static_dashboard/helper.ts b/x-pack/plugins/apm/public/components/app/metrics/static_dashboard/helper.ts index 780e4387b0e10..44db3443cfaf2 100644 --- a/x-pack/plugins/apm/public/components/app/metrics/static_dashboard/helper.ts +++ b/x-pack/plugins/apm/public/components/app/metrics/static_dashboard/helper.ts @@ -5,60 +5,93 @@ * 2.0. */ +import { DataView } from '@kbn/data-views-plugin/common'; import type { DashboardPanelMap } from '@kbn/dashboard-plugin/common'; import { AGENT_NAME_DASHBOARD_FILE_MAPPING, loadDashboardFile, } from './dashboards/dashboard_catalog'; -export interface MetricsDashboardProps { +interface DashboardFileProps { agentName?: string; runtimeName?: string; serverlessType?: string; } -export function hasDashboardFile(props: MetricsDashboardProps) { - return !!getDashboardFile(props); +export interface MetricsDashboardProps extends DashboardFileProps { + dataView: DataView; } -function getDashboardFile({ agentName }: MetricsDashboardProps) { +export function hasDashboardFile(props: DashboardFileProps) { + return !!getDashboardFileName(props); +} + +function getDashboardFileName({ agentName }: DashboardFileProps) { const dashboardFile = agentName && AGENT_NAME_DASHBOARD_FILE_MAPPING[agentName]; return dashboardFile; } -export async function getDashboardPanelMap( +const getAdhocDataView = (dataView: DataView) => { + return { + [dataView.id!]: { + ...dataView, + }, + }; +}; + +export async function convertSavedDashboardToPanels( props: MetricsDashboardProps, - dataViewId: string + dataView: DataView ): Promise { - const dashboardFile = getDashboardFile(props); - const panelsRawObj = !!dashboardFile - ? await loadDashboardFile(dashboardFile) + const dashboardFilename = getDashboardFileName(props); + const dashboardJSON = !!dashboardFilename + ? await loadDashboardFile(dashboardFilename) : undefined; - if (!dashboardFile || !panelsRawObj) { + if (!dashboardFilename || !dashboardJSON) { return undefined; } - const panelsStr: string = ( - panelsRawObj.attributes.panelsJSON as string - ).replaceAll('APM_STATIC_DATA_VIEW_ID', dataViewId); + const panelsRawObjects = JSON.parse( + dashboardJSON.attributes.panelsJSON + ) as any[]; - const panelsRawObjects = JSON.parse(panelsStr) as any[]; + const panels = panelsRawObjects.reduce((acc, panel) => { + const { gridData, embeddableConfig, panelIndex, title } = panel; + const { attributes } = embeddableConfig; + const { state } = attributes; + const { + datasourceStates: { + formBased: { layers }, + }, + } = state; - return panelsRawObjects.reduce( - (acc, panel) => ({ - ...acc, - [panel.gridData.i]: { - type: panel.type, - gridData: panel.gridData, - explicitInput: { - id: panel.panelIndex, - ...panel.embeddableConfig, - title: panel.title, + acc[gridData.i] = { + type: panel.type, + gridData, + explicitInput: { + id: panelIndex, + ...embeddableConfig, + title, + attributes: { + ...attributes, + references: [], + state: { + ...state, + adHocDataViews: getAdhocDataView(dataView), + internalReferences: Object.keys(layers).map((layerId) => ({ + id: dataView.id, + name: `indexpattern-datasource-layer-${layerId}`, + type: 'index-pattern', + })), + }, }, }, - }), - {} - ) as DashboardPanelMap; + }; + + return acc; + }, {}) as DashboardPanelMap; + + return panels; } diff --git a/x-pack/plugins/apm/public/components/app/metrics/static_dashboard/index.tsx b/x-pack/plugins/apm/public/components/app/metrics/static_dashboard/index.tsx index 1498ad8ac4dc7..ce22b13311496 100644 --- a/x-pack/plugins/apm/public/components/app/metrics/static_dashboard/index.tsx +++ b/x-pack/plugins/apm/public/components/app/metrics/static_dashboard/index.tsx @@ -19,21 +19,18 @@ import { i18n } from '@kbn/i18n'; import { controlGroupInputBuilder } from '@kbn/controls-plugin/public'; import { getDefaultControlGroupInput } from '@kbn/controls-plugin/common'; import { NotificationsStart } from '@kbn/core/public'; -import { useDataViewId } from '../../../../hooks/use_data_view_id'; import { ENVIRONMENT_ALL, ENVIRONMENT_NOT_DEFINED, } from '../../../../../common/environment_filter_values'; import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; -import { useApmDataView } from '../../../../hooks/use_apm_data_view'; import { useApmServiceContext } from '../../../../context/apm_service/use_apm_service_context'; import { useApmParams } from '../../../../hooks/use_apm_params'; -import { getDashboardPanelMap, MetricsDashboardProps } from './helper'; +import { convertSavedDashboardToPanels, MetricsDashboardProps } from './helper'; export function JsonMetricsDashboard(dashboardProps: MetricsDashboardProps) { const [dashboard, setDashboard] = useState(); - const dataViewId = useDataViewId(); - + const { dataView } = dashboardProps; const { query: { environment, kuery, rangeFrom, rangeTo }, } = useApmParams('/services/{serviceName}/metrics'); @@ -42,8 +39,6 @@ export function JsonMetricsDashboard(dashboardProps: MetricsDashboardProps) { core: { notifications }, } = useApmPluginContext(); - const { dataView } = useApmDataView(); - const { serviceName } = useApmServiceContext(); useEffect(() => { @@ -55,21 +50,17 @@ export function JsonMetricsDashboard(dashboardProps: MetricsDashboardProps) { }, [kuery, dashboard, rangeFrom, rangeTo]); useEffect(() => { - if (!dashboard || !dataView) return; + if (!dashboard) return; dashboard.updateInput({ filters: dataView ? getFilters(serviceName, environment, dataView) : [], }); }, [dataView, serviceName, environment, dashboard]); - if (!dataViewId) { - return null; - } - return ( - getCreationOptions(dashboardProps, notifications, dataViewId) + getCreationOptions(dashboardProps, notifications, dataView) } ref={setDashboard} /> @@ -79,20 +70,23 @@ export function JsonMetricsDashboard(dashboardProps: MetricsDashboardProps) { async function getCreationOptions( dashboardProps: MetricsDashboardProps, notifications: NotificationsStart, - dataViewId: string + dataView: DataView ): Promise { try { const builder = controlGroupInputBuilder; const controlGroupInput = getDefaultControlGroupInput(); await builder.addDataControlFromField(controlGroupInput, { - dataViewId, + dataViewId: dataView.id ?? '', title: 'Node name', fieldName: 'service.node.name', width: 'medium', grow: true, }); - const panels = await getDashboardPanelMap(dashboardProps, dataViewId); + const panels = await convertSavedDashboardToPanels( + dashboardProps, + dataView + ); if (!panels) { throw new Error('Failed parsing dashboard panels.'); diff --git a/x-pack/plugins/apm/public/components/app/mobile/service_overview/geo_map/embedded_map.tsx b/x-pack/plugins/apm/public/components/app/mobile/service_overview/geo_map/embedded_map.tsx index ad4f38e7f85f5..80aa35b297bb2 100644 --- a/x-pack/plugins/apm/public/components/app/mobile/service_overview/geo_map/embedded_map.tsx +++ b/x-pack/plugins/apm/public/components/app/mobile/service_overview/geo_map/embedded_map.tsx @@ -6,6 +6,7 @@ */ import React, { useEffect, useState, useRef } from 'react'; +import { DataView } from '@kbn/data-views-plugin/common'; import { v4 as uuidv4 } from 'uuid'; import { MapEmbeddable, @@ -23,7 +24,6 @@ import { css } from '@emotion/react'; import { i18n } from '@kbn/i18n'; import { EuiText } from '@elastic/eui'; import type { Filter } from '@kbn/es-query'; -import { useDataViewId } from '../../../../../hooks/use_data_view_id'; import { ApmPluginStartDeps } from '../../../../../plugin'; import { getLayerList } from './map_layers/get_layer_list'; import { MapTypes } from '../../../../../../common/mobile/constants'; @@ -33,15 +33,16 @@ function EmbeddedMapComponent({ end, kuery = '', filters, + dataView, }: { selectedMap: MapTypes; start: string; end: string; kuery?: string; filters: Filter[]; + dataView?: DataView; }) { const [error, setError] = useState(); - const dataViewId = useDataViewId(); const [embeddable, setEmbeddable] = useState< MapEmbeddable | ErrorEmbeddable | undefined @@ -129,8 +130,12 @@ function EmbeddedMapComponent({ useEffect(() => { const setLayerList = async () => { - if (embeddable && !isErrorEmbeddable(embeddable) && dataViewId) { - const layerList = await getLayerList({ selectedMap, maps, dataViewId }); + if (embeddable && !isErrorEmbeddable(embeddable)) { + const layerList = await getLayerList({ + selectedMap, + maps, + dataViewId: dataView?.id ?? '', + }); await Promise.all([ embeddable.setLayerList(layerList), embeddable.reload(), @@ -139,7 +144,7 @@ function EmbeddedMapComponent({ }; setLayerList(); - }, [embeddable, selectedMap, maps, dataViewId]); + }, [embeddable, selectedMap, maps, dataView]); useEffect(() => { if (embeddable) { diff --git a/x-pack/plugins/apm/public/components/app/mobile/service_overview/geo_map/index.tsx b/x-pack/plugins/apm/public/components/app/mobile/service_overview/geo_map/index.tsx index 750ec795a236c..ed49a521b9d02 100644 --- a/x-pack/plugins/apm/public/components/app/mobile/service_overview/geo_map/index.tsx +++ b/x-pack/plugins/apm/public/components/app/mobile/service_overview/geo_map/index.tsx @@ -6,6 +6,7 @@ */ import React, { useState } from 'react'; +import { DataView } from '@kbn/data-views-plugin/common'; import { EuiSpacer } from '@elastic/eui'; import type { Filter } from '@kbn/es-query'; import { EmbeddedMap } from './embedded_map'; @@ -17,11 +18,13 @@ export function GeoMap({ end, kuery, filters, + dataView, }: { start: string; end: string; kuery?: string; filters: Filter[]; + dataView?: DataView; }) { const [selectedMap, selectMap] = useState(MapTypes.Http); @@ -40,6 +43,7 @@ export function GeoMap({ end={end} kuery={kuery} filters={filters} + dataView={dataView} />
diff --git a/x-pack/plugins/apm/public/components/app/mobile/service_overview/index.tsx b/x-pack/plugins/apm/public/components/app/mobile/service_overview/index.tsx index 28cecf554142a..55104eefaa071 100644 --- a/x-pack/plugins/apm/public/components/app/mobile/service_overview/index.tsx +++ b/x-pack/plugins/apm/public/components/app/mobile/service_overview/index.tsx @@ -34,6 +34,7 @@ import { useFiltersForEmbeddableCharts } from '../../../../hooks/use_filters_for import { getKueryWithMobileFilters } from '../../../../../common/utils/get_kuery_with_mobile_filters'; import { MobileStats } from './stats/stats'; import { MobileLocationStats } from './stats/location_stats'; +import { useAdHocApmDataView } from '../../../../hooks/use_adhoc_apm_data_view'; /** * The height a chart should be if it's next to a table with 5 rows and a title. * Add the height of the pagination row. @@ -43,6 +44,7 @@ export const chartHeight = 288; export function MobileServiceOverview() { const { serviceName } = useApmServiceContext(); const router = useApmRouter(); + const { dataView } = useAdHocApmDataView(); const { query, @@ -122,6 +124,7 @@ export function MobileServiceOverview() { end={end} kuery={kueryWithMobileFilters} filters={embeddableFilters} + dataView={dataView} /> diff --git a/x-pack/plugins/apm/public/components/app/service_dashboards/index.tsx b/x-pack/plugins/apm/public/components/app/service_dashboards/index.tsx index b4972eafbe3f0..fe44d62c2388d 100644 --- a/x-pack/plugins/apm/public/components/app/service_dashboards/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_dashboards/index.tsx @@ -34,7 +34,7 @@ import { ContextMenu } from './context_menu'; import { UnlinkDashboard } from './actions/unlink_dashboard'; import { EditDashboard } from './actions/edit_dashboard'; import { DashboardSelector } from './dashboard_selector'; -import { useApmDataView } from '../../../hooks/use_apm_data_view'; +import { useAdHocApmDataView } from '../../../hooks/use_adhoc_apm_data_view'; import { getFilters } from '../metrics/static_dashboard'; import { useDashboardFetcher } from '../../../hooks/use_dashboards_fetcher'; import { useTimeRange } from '../../../hooks/use_time_range'; @@ -58,7 +58,7 @@ export function ServiceDashboards() { useState(); const { data: allAvailableDashboards } = useDashboardFetcher(); const { start, end } = useTimeRange({ rangeFrom, rangeTo }); - const { dataView } = useApmDataView(); + const { dataView } = useAdHocApmDataView(); const { share } = useApmPluginContext(); const { data, status, refetch } = useFetcher( diff --git a/x-pack/plugins/apm/public/components/app/trace_explorer/trace_search_box/index.tsx b/x-pack/plugins/apm/public/components/app/trace_explorer/trace_search_box/index.tsx index 0995f8555ae29..9f26d27e316c8 100644 --- a/x-pack/plugins/apm/public/components/app/trace_explorer/trace_search_box/index.tsx +++ b/x-pack/plugins/apm/public/components/app/trace_explorer/trace_search_box/index.tsx @@ -17,7 +17,7 @@ import { TraceSearchQuery, TraceSearchType, } from '../../../../../common/trace_explorer'; -import { useApmDataView } from '../../../../hooks/use_apm_data_view'; +import { useAdHocApmDataView } from '../../../../hooks/use_adhoc_apm_data_view'; import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; import { EQLCodeEditor } from '../../../shared/monaco_code_editor'; @@ -57,7 +57,7 @@ export function TraceSearchBox({ }, } = useApmPluginContext(); - const { dataView } = useApmDataView(); + const { dataView } = useAdHocApmDataView(); return ( diff --git a/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx b/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx index 5c5c59f85a0aa..c1f37525ebea6 100644 --- a/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx @@ -16,7 +16,7 @@ import type { DataView } from '@kbn/data-views-plugin/public'; import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; import { useLegacyUrlParams } from '../../../context/url_params_context/use_url_params'; import { useApmParams } from '../../../hooks/use_apm_params'; -import { useApmDataView } from '../../../hooks/use_apm_data_view'; +import { useAdHocApmDataView } from '../../../hooks/use_adhoc_apm_data_view'; import { fromQuery, toQuery } from '../links/url_helpers'; import { getBoolFilter } from '../get_bool_filter'; import { Typeahead } from './typeahead'; @@ -71,7 +71,7 @@ export function KueryBar(props: { }; const example = examples[processorEvent || 'defaults']; - const { dataView } = useApmDataView(); + const { dataView } = useAdHocApmDataView(); const placeholder = props.placeholder ?? diff --git a/x-pack/plugins/apm/public/components/shared/links/discover_links/discover_link.tsx b/x-pack/plugins/apm/public/components/shared/links/discover_links/discover_link.tsx index 987fe5b23de52..4ae212c44ee13 100644 --- a/x-pack/plugins/apm/public/components/shared/links/discover_links/discover_link.tsx +++ b/x-pack/plugins/apm/public/components/shared/links/discover_links/discover_link.tsx @@ -5,16 +5,16 @@ * 2.0. */ -import { EuiLink } from '@elastic/eui'; +import { EuiLink, EuiLoadingSpinner } from '@elastic/eui'; import { Location } from 'history'; import { IBasePath } from '@kbn/core/public'; import React from 'react'; import { useLocation } from 'react-router-dom'; import rison from '@kbn/rison'; import url from 'url'; -import { useDataViewId } from '../../../../hooks/use_data_view_id'; import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; import { getTimepickerRisonData } from '../rison_helpers'; +import { useAdHocApmDataView } from '../../../../hooks/use_adhoc_apm_data_view'; interface Props { query: { @@ -64,17 +64,17 @@ export const getDiscoverHref = ({ export function DiscoverLink({ query = {}, ...rest }: Props) { const { core } = useApmPluginContext(); const location = useLocation(); - const dataViewId = useDataViewId(); + const { dataView } = useAdHocApmDataView(); - if (!dataViewId) { - return null; + if (!dataView) { + return ; } const href = getDiscoverHref({ basePath: core.http.basePath, query, location, - dataViewId, + dataViewId: dataView?.id ?? '', }); return ; diff --git a/x-pack/plugins/apm/public/components/shared/links/discover_links/discover_links.integration.test.tsx b/x-pack/plugins/apm/public/components/shared/links/discover_links/discover_links.integration.test.tsx index 4d79e5e8f2796..092278fdd9cbc 100644 --- a/x-pack/plugins/apm/public/components/shared/links/discover_links/discover_links.integration.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/links/discover_links/discover_links.integration.test.tsx @@ -10,12 +10,33 @@ import React from 'react'; import { APMError } from '../../../../../typings/es_schemas/ui/apm_error'; import { Span } from '../../../../../typings/es_schemas/ui/span'; import { Transaction } from '../../../../../typings/es_schemas/ui/transaction'; +import * as useAdHocApmDataView from '../../../../hooks/use_adhoc_apm_data_view'; import { getRenderedHref } from '../../../../utils/test_helpers'; import { DiscoverErrorLink } from './discover_error_link'; import { DiscoverSpanLink } from './discover_span_link'; import { DiscoverTransactionLink } from './discover_transaction_link'; describe('DiscoverLinks', () => { + let useAdHocApmDataViewSpy: jest.SpyInstance; + + beforeAll(() => { + useAdHocApmDataViewSpy = jest.spyOn( + useAdHocApmDataView, + 'useAdHocApmDataView' + ); + + useAdHocApmDataViewSpy.mockImplementation(() => { + return { + dataView: { + id: 'foo-1', + }, + }; + }); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); it('produces the correct URL for a transaction', async () => { const transaction = { transaction: { @@ -35,7 +56,7 @@ describe('DiscoverLinks', () => { ); expect(href).toMatchInlineSnapshot( - `"/basepath/app/discover#/?_g=(refreshInterval:(pause:!t,value:0),time:(from:now/w,to:now))&_a=(index:apm_static_data_view_id_mockSpaceId,interval:auto,query:(language:kuery,query:'processor.event:\\"transaction\\" AND transaction.id:\\"8b60bd32ecc6e150\\" AND trace.id:\\"8b60bd32ecc6e1506735a8b6cfcf175c\\"'))"` + `"/basepath/app/discover#/?_g=(refreshInterval:(pause:!t,value:0),time:(from:now/w,to:now))&_a=(index:foo-1,interval:auto,query:(language:kuery,query:'processor.event:\\"transaction\\" AND transaction.id:\\"8b60bd32ecc6e150\\" AND trace.id:\\"8b60bd32ecc6e1506735a8b6cfcf175c\\"'))"` ); }); @@ -55,7 +76,7 @@ describe('DiscoverLinks', () => { ); expect(href).toMatchInlineSnapshot( - `"/basepath/app/discover#/?_g=(refreshInterval:(pause:!t,value:0),time:(from:now/w,to:now))&_a=(index:apm_static_data_view_id_mockSpaceId,interval:auto,query:(language:kuery,query:'span.id:\\"test-span-id\\"'))"` + `"/basepath/app/discover#/?_g=(refreshInterval:(pause:!t,value:0),time:(from:now/w,to:now))&_a=(index:foo-1,interval:auto,query:(language:kuery,query:'span.id:\\"test-span-id\\"'))"` ); }); @@ -77,7 +98,7 @@ describe('DiscoverLinks', () => { ); expect(href).toMatchInlineSnapshot( - `"/basepath/app/discover#/?_g=(refreshInterval:(pause:!t,value:0),time:(from:now/w,to:now))&_a=(index:apm_static_data_view_id_mockSpaceId,interval:auto,query:(language:kuery,query:'service.name:\\"service-name\\" AND error.grouping_key:\\"grouping-key\\"'),sort:('@timestamp':desc))"` + `"/basepath/app/discover#/?_g=(refreshInterval:(pause:!t,value:0),time:(from:now/w,to:now))&_a=(index:foo-1,interval:auto,query:(language:kuery,query:'service.name:\\"service-name\\" AND error.grouping_key:\\"grouping-key\\"'),sort:('@timestamp':desc))"` ); }); @@ -100,7 +121,7 @@ describe('DiscoverLinks', () => { ); expect(href).toMatchInlineSnapshot( - `"/basepath/app/discover#/?_g=(refreshInterval:(pause:!t,value:0),time:(from:now/w,to:now))&_a=(index:apm_static_data_view_id_mockSpaceId,interval:auto,query:(language:kuery,query:'service.name:\\"service-name\\" AND error.grouping_key:\\"grouping-key\\" AND some:kuery-string'),sort:('@timestamp':desc))"` + `"/basepath/app/discover#/?_g=(refreshInterval:(pause:!t,value:0),time:(from:now/w,to:now))&_a=(index:foo-1,interval:auto,query:(language:kuery,query:'service.name:\\"service-name\\" AND error.grouping_key:\\"grouping-key\\" AND some:kuery-string'),sort:('@timestamp':desc))"` ); }); }); diff --git a/x-pack/plugins/apm/public/components/shared/search_bar/search_bar.test.tsx b/x-pack/plugins/apm/public/components/shared/search_bar/search_bar.test.tsx index 5713390de48f7..c3ed213e8ebab 100644 --- a/x-pack/plugins/apm/public/components/shared/search_bar/search_bar.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/search_bar/search_bar.test.tsx @@ -14,7 +14,7 @@ import { ApmServiceContextProvider } from '../../../context/apm_service/apm_serv import { UrlParamsProvider } from '../../../context/url_params_context/url_params_context'; import type { ApmUrlParams } from '../../../context/url_params_context/types'; import * as useFetcherHook from '../../../hooks/use_fetcher'; -import * as useApmDataViewHook from '../../../hooks/use_apm_data_view'; +import * as useApmDataViewHook from '../../../hooks/use_adhoc_apm_data_view'; import * as useServiceTransactionTypesHook from '../../../context/apm_service/use_service_transaction_types_fetcher'; import { renderWithTheme } from '../../../utils/test_helpers'; import { fromQuery } from '../links/url_helpers'; @@ -71,7 +71,7 @@ function setup({ // mock transaction types jest - .spyOn(useApmDataViewHook, 'useApmDataView') + .spyOn(useApmDataViewHook, 'useAdHocApmDataView') .mockReturnValue({ dataView: undefined }); jest.spyOn(useFetcherHook, 'useFetcher').mockReturnValue({} as any); diff --git a/x-pack/plugins/apm/public/components/shared/transaction_action_menu/__snapshots__/transaction_action_menu.test.tsx.snap b/x-pack/plugins/apm/public/components/shared/transaction_action_menu/__snapshots__/transaction_action_menu.test.tsx.snap index 02ed85e387ecb..023caad499485 100644 --- a/x-pack/plugins/apm/public/components/shared/transaction_action_menu/__snapshots__/transaction_action_menu.test.tsx.snap +++ b/x-pack/plugins/apm/public/components/shared/transaction_action_menu/__snapshots__/transaction_action_menu.test.tsx.snap @@ -1,9 +1,9 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`TransactionActionMenu component matches the snapshot 1`] = ` +exports[`TransactionActionMenu matches the snapshot 1`] = `
+ + + + + + + ); +}; + +export const RiskSummary = React.memo(RiskSummaryComponent); RiskSummary.displayName = 'RiskSummary'; diff --git a/x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/details/index.tsx b/x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/details/index.tsx index f6ea1ff14a264..490891732abd4 100644 --- a/x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/details/index.tsx +++ b/x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/details/index.tsx @@ -42,7 +42,7 @@ export const useHostDetails = ({ id = ID, skip = false, startDate, -}: UseHostDetails): [boolean, HostDetailsArgs] => { +}: UseHostDetails): [boolean, HostDetailsArgs, inputsModel.Refetch] => { const { loading, result: response, @@ -91,5 +91,5 @@ export const useHostDetails = ({ } }, [hostDetailsRequest, search, skip]); - return [loading, hostDetailsResponse]; + return [loading, hostDetailsResponse, refetch]; }; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_details_left/index.test.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/host_details_left/index.test.tsx new file mode 100644 index 0000000000000..82cf0f8ff9f56 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_details_left/index.test.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 { RISK_INPUTS_TAB_TEST_ID } from '../../../entity_analytics/components/entity_details_flyout'; +import { render } from '@testing-library/react'; +import React from 'react'; +import { HostDetailsPanel } from '.'; +import { TestProviders } from '../../../common/mock'; + +describe('HostDetailsPanel', () => { + it('render risk inputs panel', () => { + const { getByTestId } = render( + , + { wrapper: TestProviders } + ); + expect(getByTestId(RISK_INPUTS_TAB_TEST_ID)).toBeInTheDocument(); + }); + + it("doesn't render risk inputs panel when no alerts ids are provided", () => { + const { queryByTestId } = render( + , + { wrapper: TestProviders } + ); + expect(queryByTestId(RISK_INPUTS_TAB_TEST_ID)).not.toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_details_left/index.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/host_details_left/index.tsx new file mode 100644 index 0000000000000..3214dec23bdd6 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_details_left/index.tsx @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useMemo } from 'react'; +import type { FlyoutPanelProps } from '@kbn/expandable-flyout'; +import { getRiskInputTab } from '../../../entity_analytics/components/entity_details_flyout'; +import { LeftPanelContent } from '../shared/components/left_panel/left_panel_content'; +import { + EntityDetailsLeftPanelTab, + LeftPanelHeader, +} from '../shared/components/left_panel/left_panel_header'; + +interface RiskInputsParam { + alertIds: string[]; +} + +export interface HostDetailsPanelProps extends Record { + riskInputs: RiskInputsParam; +} +export interface HostDetailsExpandableFlyoutProps extends FlyoutPanelProps { + key: 'host_details'; + params: HostDetailsPanelProps; +} +export const HostDetailsPanelKey: HostDetailsExpandableFlyoutProps['key'] = 'host_details'; + +export const HostDetailsPanel = ({ riskInputs }: HostDetailsPanelProps) => { + // Temporary implementation while Host details left panel don't have Asset tabs + const [tabs, selectedTabId, setSelectedTabId] = useMemo(() => { + return [ + riskInputs.alertIds.length > 0 ? [getRiskInputTab(riskInputs.alertIds)] : [], + EntityDetailsLeftPanelTab.RISK_INPUTS, + () => {}, + ]; + }, [riskInputs.alertIds]); + + return ( + <> + + + + ); +}; + +HostDetailsPanel.displayName = 'HostDetailsPanel'; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.stories.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.stories.tsx new file mode 100644 index 0000000000000..9bea5cb2a4ac2 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.stories.tsx @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { storiesOf } from '@storybook/react'; +import { EuiFlyout } from '@elastic/eui'; +import type { ExpandableFlyoutContextValue } from '@kbn/expandable-flyout/src/context'; +import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; +import { StorybookProviders } from '../../../common/mock/storybook_providers'; +import { mockRiskScoreState } from '../../../timelines/components/side_panel/new_user_detail/__mocks__'; +import { HostPanelContent } from './content'; +import { mockObservedHostData } from '../mocks'; + +const flyoutContextValue = { + openLeftPanel: () => window.alert('openLeftPanel called'), + panels: {}, +} as unknown as ExpandableFlyoutContextValue; + +const riskScoreData = { ...mockRiskScoreState, data: [] }; + +storiesOf('Components/HostPanelContent', module) + .addDecorator((storyFn) => ( + + + {}}> + {storyFn()} + + + + )) + .add('default', () => ( + {}} + /> + )) + .add('no observed data', () => ( + {}} + /> + )) + .add('loading', () => ( + {}} + /> + )); diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx new file mode 100644 index 0000000000000..eb7d5f3fda26d --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiHorizontalRule } from '@elastic/eui'; + +import React from 'react'; +import { RiskSummary } from '../../../entity_analytics/components/risk_summary_flyout/risk_summary'; +import type { RiskScoreState } from '../../../entity_analytics/api/hooks/use_risk_score'; +import type { RiskScoreEntity, HostItem } from '../../../../common/search_strategy'; +import { FlyoutBody } from '../../shared/components/flyout_body'; +import { ObservedEntity } from '../shared/components/observed_entity'; +import { HOST_PANEL_OBSERVED_HOST_QUERY_ID, HOST_PANEL_RISK_SCORE_QUERY_ID } from '.'; +import type { ObservedEntityData } from '../shared/components/observed_entity/types'; +import { useObservedHostFields } from './hooks/use_observed_host_fields'; +import type { EntityDetailsLeftPanelTab } from '../shared/components/left_panel/left_panel_header'; + +interface HostPanelContentProps { + observedHost: ObservedEntityData; + riskScoreState: RiskScoreState; + contextID: string; + scopeId: string; + isDraggable: boolean; + openDetailsPanel: (tab: EntityDetailsLeftPanelTab) => void; +} + +export const HostPanelContent = ({ + observedHost, + riskScoreState, + contextID, + scopeId, + isDraggable, + openDetailsPanel, +}: HostPanelContentProps) => { + const observedFields = useObservedHostFields(observedHost); + + return ( + + {riskScoreState.isModuleEnabled && riskScoreState.data?.length !== 0 && ( + <> + { + + } + + + )} + + + ); +}; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/basic_host_fields.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/basic_host_fields.tsx new file mode 100644 index 0000000000000..1229a08e7c956 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/basic_host_fields.tsx @@ -0,0 +1,80 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { getEmptyTagValue } from '../../../../common/components/empty_value'; +import type { HostItem } from '../../../../../common/search_strategy'; +import { FormattedRelativePreferenceDate } from '../../../../common/components/formatted_date'; +import { NetworkDetailsLink } from '../../../../common/components/links'; +import * as i18n from './translations'; +import type { ObservedEntityData } from '../../shared/components/observed_entity/types'; +import type { EntityTableRows } from '../../shared/components/entity_table/types'; + +export const basicHostFields: EntityTableRows> = [ + { + label: i18n.HOST_ID, + getValues: (hostData: ObservedEntityData) => hostData.details.host?.id, + field: 'host.id', + }, + { + label: i18n.FIRST_SEEN, + render: (hostData: ObservedEntityData) => + hostData.firstSeen.date ? ( + + ) : ( + getEmptyTagValue() + ), + }, + { + label: i18n.LAST_SEEN, + render: (hostData: ObservedEntityData) => + hostData.lastSeen.date ? ( + + ) : ( + getEmptyTagValue() + ), + }, + { + label: i18n.IP_ADDRESSES, + field: 'host.ip', + getValues: (hostData: ObservedEntityData) => hostData.details.host?.ip, + renderField: (ip: string) => { + return ; + }, + }, + { + label: i18n.MAC_ADDRESSES, + getValues: (hostData: ObservedEntityData) => hostData.details.host?.mac, + field: 'host.mac', + }, + { + label: i18n.PLATFORM, + getValues: (hostData: ObservedEntityData) => hostData.details.host?.os?.platform, + field: 'host.os.platform', + }, + { + label: i18n.OS, + getValues: (hostData: ObservedEntityData) => hostData.details.host?.os?.name, + field: 'host.os.name', + }, + { + label: i18n.FAMILY, + getValues: (hostData: ObservedEntityData) => hostData.details.host?.os?.family, + field: 'host.os.family', + }, + { + label: i18n.VERSION, + getValues: (hostData: ObservedEntityData) => hostData.details.host?.os?.version, + field: 'host.os.version', + }, + { + label: i18n.ARCHITECTURE, + getValues: (hostData: ObservedEntityData) => hostData.details.host?.architecture, + field: 'host.architecture', + }, +]; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/cloud_fields.ts b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/cloud_fields.ts new file mode 100644 index 0000000000000..c4ea144a7db06 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/cloud_fields.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { HostItem } from '../../../../../common/search_strategy'; +import type { EntityTableRows } from '../../shared/components/entity_table/types'; +import type { ObservedEntityData } from '../../shared/components/observed_entity/types'; +import * as i18n from './translations'; + +export const cloudFields: EntityTableRows> = [ + { + label: i18n.CLOUD_PROVIDER, + getValues: (hostData: ObservedEntityData) => hostData.details.cloud?.provider, + field: 'cloud.provider', + }, + { + label: i18n.REGION, + getValues: (hostData: ObservedEntityData) => hostData.details.cloud?.region, + field: 'cloud.region', + }, + { + label: i18n.INSTANCE_ID, + getValues: (hostData: ObservedEntityData) => hostData.details.cloud?.instance?.id, + field: 'cloud.instance.id', + }, + { + label: i18n.MACHINE_TYPE, + getValues: (hostData: ObservedEntityData) => hostData.details.cloud?.machine?.type, + field: 'cloud.machine.type', + }, +]; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/endpoint_policy_fields.test.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/endpoint_policy_fields.test.tsx new file mode 100644 index 0000000000000..a8ba12de451e3 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/endpoint_policy_fields.test.tsx @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { TestProviders } from '../../../../common/mock'; +import { render } from '@testing-library/react'; +import React from 'react'; +import { mockObservedHostData } from '../../mocks'; +import { policyFields } from './endpoint_policy_fields'; + +const TestWrapper = ({ el }: { el: JSX.Element | undefined }) => <>{el}; + +jest.mock( + '../../../../management/hooks/response_actions/use_get_endpoint_pending_actions_summary', + () => { + const original = jest.requireActual( + '../../../../management/hooks/response_actions/use_get_endpoint_pending_actions_summary' + ); + return { + ...original, + useGetEndpointPendingActionsSummary: () => ({ + pendingActions: [], + isLoading: false, + isError: false, + isTimeout: false, + fetch: jest.fn(), + }), + }; + } +); + +describe('Endpoint Policy Fields', () => { + it('renders policy name', () => { + const policyName = policyFields[0]; + + const { container } = render(); + + expect(container).toHaveTextContent('policy-name'); + }); + + it('renders policy status', () => { + const policyStatus = policyFields[1]; + + const { container } = render(); + + expect(container).toHaveTextContent('failure'); + }); + + it('renders agent status', () => { + const agentStatus = policyFields[3]; + + const { container } = render(, { + wrapper: TestProviders, + }); + + expect(container).toHaveTextContent('Healthy'); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/endpoint_policy_fields.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/endpoint_policy_fields.tsx new file mode 100644 index 0000000000000..fd9b8c744a7b2 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/endpoint_policy_fields.tsx @@ -0,0 +1,69 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiHealth } from '@elastic/eui'; + +import type { EntityTableRows } from '../../shared/components/entity_table/types'; +import type { ObservedEntityData } from '../../shared/components/observed_entity/types'; +import { EndpointAgentStatus } from '../../../../common/components/endpoint/endpoint_agent_status'; +import { getEmptyTagValue } from '../../../../common/components/empty_value'; +import type { HostItem } from '../../../../../common/search_strategy'; +import { HostPolicyResponseActionStatus } from '../../../../../common/search_strategy'; +import * as i18n from './translations'; + +export const policyFields: EntityTableRows> = [ + { + label: i18n.ENDPOINT_POLICY, + render: (hostData: ObservedEntityData) => { + const appliedPolicy = hostData.details.endpoint?.hostInfo?.metadata.Endpoint.policy.applied; + return appliedPolicy?.name ? <>{appliedPolicy.name} : getEmptyTagValue(); + }, + isVisible: (hostData: ObservedEntityData) => hostData.details.endpoint != null, + }, + { + label: i18n.POLICY_STATUS, + render: (hostData: ObservedEntityData) => { + const appliedPolicy = hostData.details.endpoint?.hostInfo?.metadata.Endpoint.policy.applied; + const policyColor = + appliedPolicy?.status === HostPolicyResponseActionStatus.failure + ? 'danger' + : appliedPolicy?.status; + + return appliedPolicy?.status ? ( + + {appliedPolicy?.status} + + ) : ( + getEmptyTagValue() + ); + }, + isVisible: (hostData: ObservedEntityData) => hostData.details.endpoint != null, + }, + { + label: i18n.SENSORVERSION, + getValues: (hostData: ObservedEntityData) => + hostData.details.endpoint?.hostInfo?.metadata.agent.version + ? [hostData.details.endpoint?.hostInfo?.metadata.agent.version] + : undefined, + field: 'agent.version', + isVisible: (hostData: ObservedEntityData) => hostData.details.endpoint != null, + }, + { + label: i18n.FLEET_AGENT_STATUS, + render: (hostData: ObservedEntityData) => + hostData.details.endpoint?.hostInfo ? ( + + ) : ( + getEmptyTagValue() + ), + isVisible: (hostData: ObservedEntityData) => hostData.details.endpoint != null, + }, +]; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/translations.ts b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/translations.ts new file mode 100644 index 0000000000000..dac45a3a6202c --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/fields/translations.ts @@ -0,0 +1,131 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const HOST_ID = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.host.hostIdTitle', + { + defaultMessage: 'Host ID', + } +); + +export const FIRST_SEEN = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.host.firstSeenTitle', + { + defaultMessage: 'First seen', + } +); + +export const LAST_SEEN = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.host.lastSeenTitle', + { + defaultMessage: 'Last seen', + } +); + +export const IP_ADDRESSES = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.host.ipAddressesTitle', + { + defaultMessage: 'IP addresses', + } +); + +export const MAC_ADDRESSES = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.host.macAddressesTitle', + { + defaultMessage: 'MAC addresses', + } +); + +export const PLATFORM = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.host.platformTitle', + { + defaultMessage: 'Platform', + } +); + +export const OS = i18n.translate('xpack.securitySolution.flyout.entityDetails.host.osTitle', { + defaultMessage: 'Operating system', +}); + +export const FAMILY = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.host.familyTitle', + { + defaultMessage: 'Family', + } +); + +export const VERSION = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.host.versionLabel', + { + defaultMessage: 'Version', + } +); + +export const ARCHITECTURE = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.host.architectureLabel', + { + defaultMessage: 'Architecture', + } +); + +export const CLOUD_PROVIDER = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.host.cloudProviderTitle', + { + defaultMessage: 'Cloud provider', + } +); + +export const REGION = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.host.regionTitle', + { + defaultMessage: 'Region', + } +); + +export const INSTANCE_ID = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.host.instanceIdTitle', + { + defaultMessage: 'Instance ID', + } +); + +export const MACHINE_TYPE = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.host.machineTypeTitle', + { + defaultMessage: 'Machine type', + } +); + +export const ENDPOINT_POLICY = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.host.endpoint.endpointPolicy', + { + defaultMessage: 'Endpoint integration policy', + } +); + +export const POLICY_STATUS = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.host.endpoint.policyStatus', + { + defaultMessage: 'Policy Status', + } +); + +export const SENSORVERSION = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.host.endpoint.sensorversion', + { + defaultMessage: 'Endpoint version', + } +); + +export const FLEET_AGENT_STATUS = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.host.endpoint.fleetAgentStatus', + { + defaultMessage: 'Agent status', + } +); diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/header.test.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/header.test.tsx new file mode 100644 index 0000000000000..418ec64cb6709 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/header.test.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 { render } from '@testing-library/react'; +import React from 'react'; +import { TestProviders } from '../../../common/mock'; +import { HostPanelHeader } from './header'; +import { mockObservedHostData } from '../mocks'; + +const mockProps = { + hostName: 'test', + observedHost: mockObservedHostData, +}; + +jest.mock('../../../common/components/visualization_actions/visualization_embeddable'); + +describe('HostPanelHeader', () => { + it('renders', () => { + const { getByTestId } = render( + + + + ); + + expect(getByTestId('host-panel-header')).toBeInTheDocument(); + }); + + it('renders observed date', () => { + const futureDay = '2989-03-07T20:00:00.000Z'; + const { getByTestId } = render( + + + + ); + + expect(getByTestId('host-panel-header-lastSeen').textContent).toContain('Mar 7, 2989'); + }); + + it('renders observed badge when lastSeen is defined', () => { + const { getByTestId } = render( + + + + ); + + expect(getByTestId('host-panel-header-observed-badge')).toBeInTheDocument(); + }); + + it('does not render observed badge when lastSeen date is undefined', () => { + const { queryByTestId } = render( + + + + ); + + expect(queryByTestId('host-panel-header-observed-badge')).not.toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/header.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/header.tsx new file mode 100644 index 0000000000000..e8785a92acb6d --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/header.tsx @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiSpacer, EuiBadge, EuiText, EuiFlexItem, EuiFlexGroup } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; +import React, { useMemo } from 'react'; +import { SecurityPageName } from '@kbn/security-solution-navigation'; +import type { HostItem } from '../../../../common/search_strategy'; +import { getHostDetailsUrl } from '../../../common/components/link_to'; +import { SecuritySolutionLinkAnchor } from '../../../common/components/links'; +import { PreferenceFormattedDate } from '../../../common/components/formatted_date'; +import { FlyoutHeader } from '../../shared/components/flyout_header'; +import { FlyoutTitle } from '../../shared/components/flyout_title'; +import type { ObservedEntityData } from '../shared/components/observed_entity/types'; + +interface HostPanelHeaderProps { + hostName: string; + observedHost: ObservedEntityData; +} + +export const HostPanelHeader = ({ hostName, observedHost }: HostPanelHeaderProps) => { + const lastSeenDate = useMemo( + () => observedHost.lastSeen.date && new Date(observedHost.lastSeen.date), + [observedHost.lastSeen.date] + ); + + return ( + + + + + {lastSeenDate && } + + + + + + + + + + + + {observedHost.lastSeen.date && ( + + + + )} + + + + + + ); +}; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host.ts b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host.ts new file mode 100644 index 0000000000000..980407b034649 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host.ts @@ -0,0 +1,71 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMemo } from 'react'; +import { useHostDetails } from '../../../../explore/hosts/containers/hosts/details'; +import { useFirstLastSeen } from '../../../../common/containers/use_first_last_seen'; +import { useGlobalTime } from '../../../../common/containers/use_global_time'; +import { useSourcererDataView } from '../../../../common/containers/sourcerer'; +import type { HostItem } from '../../../../../common/search_strategy'; +import { Direction, NOT_EVENT_KIND_ASSET_FILTER } from '../../../../../common/search_strategy'; +import { HOST_PANEL_OBSERVED_HOST_QUERY_ID, HOST_PANEL_RISK_SCORE_QUERY_ID } from '..'; +import { useQueryInspector } from '../../../../common/components/page/manage_query'; +import type { ObservedEntityData } from '../../shared/components/observed_entity/types'; + +export const useObservedHost = ( + hostName: string +): Omit, 'anomalies'> => { + const { to, from, isInitializing, setQuery, deleteQuery } = useGlobalTime(); + const { selectedPatterns } = useSourcererDataView(); + + const [isLoading, { hostDetails, inspect: inspectObservedHost }, refetch] = useHostDetails({ + endDate: to, + hostName, + indexNames: selectedPatterns, + id: HOST_PANEL_RISK_SCORE_QUERY_ID, + skip: isInitializing, + startDate: from, + }); + + useQueryInspector({ + deleteQuery, + inspect: inspectObservedHost, + loading: isLoading, + queryId: HOST_PANEL_OBSERVED_HOST_QUERY_ID, + refetch, + setQuery, + }); + + const [loadingFirstSeen, { firstSeen }] = useFirstLastSeen({ + field: 'host.name', + value: hostName, + defaultIndex: selectedPatterns, + order: Direction.asc, + filterQuery: NOT_EVENT_KIND_ASSET_FILTER, + }); + + const [loadingLastSeen, { lastSeen }] = useFirstLastSeen({ + field: 'host.name', + value: hostName, + defaultIndex: selectedPatterns, + order: Direction.desc, + filterQuery: NOT_EVENT_KIND_ASSET_FILTER, + }); + + return useMemo( + () => ({ + details: hostDetails, + isLoading: isLoading || loadingLastSeen || loadingFirstSeen, + firstSeen: { + date: firstSeen, + isLoading: loadingFirstSeen, + }, + lastSeen: { date: lastSeen, isLoading: loadingLastSeen }, + }), + [firstSeen, hostDetails, isLoading, lastSeen, loadingFirstSeen, loadingLastSeen] + ); +}; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host_fields.test.ts b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host_fields.test.ts new file mode 100644 index 0000000000000..ea37bf40bfeef --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host_fields.test.ts @@ -0,0 +1,143 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { renderHook } from '@testing-library/react-hooks'; +import { useObservedHostFields } from './use_observed_host_fields'; +import { TestProviders } from '@kbn/timelines-plugin/public/mock'; +import { mockObservedHostData } from '../../mocks'; + +describe('useManagedUserItems', () => { + it('returns managed user items for Entra user', () => { + const { result } = renderHook(() => useObservedHostFields(mockObservedHostData), { + wrapper: TestProviders, + }); + + expect(result.current).toMatchInlineSnapshot(` + Array [ + Object { + "field": "host.id", + "getValues": [Function], + "label": "Host ID", + }, + Object { + "label": "First seen", + "render": [Function], + }, + Object { + "label": "Last seen", + "render": [Function], + }, + Object { + "field": "host.ip", + "getValues": [Function], + "label": "IP addresses", + "renderField": [Function], + }, + Object { + "field": "host.mac", + "getValues": [Function], + "label": "MAC addresses", + }, + Object { + "field": "host.os.platform", + "getValues": [Function], + "label": "Platform", + }, + Object { + "field": "host.os.name", + "getValues": [Function], + "label": "Operating system", + }, + Object { + "field": "host.os.family", + "getValues": [Function], + "label": "Family", + }, + Object { + "field": "host.os.version", + "getValues": [Function], + "label": "Version", + }, + Object { + "field": "host.architecture", + "getValues": [Function], + "label": "Architecture", + }, + Object { + "isVisible": [Function], + "label": "Max anomaly score by job", + "render": [Function], + }, + Object { + "field": "cloud.provider", + "getValues": [Function], + "label": "Cloud provider", + }, + Object { + "field": "cloud.region", + "getValues": [Function], + "label": "Region", + }, + Object { + "field": "cloud.instance.id", + "getValues": [Function], + "label": "Instance ID", + }, + Object { + "field": "cloud.machine.type", + "getValues": [Function], + "label": "Machine type", + }, + Object { + "isVisible": [Function], + "label": "Endpoint integration policy", + "render": [Function], + }, + Object { + "isVisible": [Function], + "label": "Policy Status", + "render": [Function], + }, + Object { + "field": "agent.version", + "getValues": [Function], + "isVisible": [Function], + "label": "Endpoint version", + }, + Object { + "isVisible": [Function], + "label": "Agent status", + "render": [Function], + }, + ] + `); + + expect( + result.current.map(({ getValues }) => getValues && getValues(mockObservedHostData)) + ).toEqual([ + ['host-id'], + undefined, // First seen doesn't implement getValues + undefined, // Last seen doesn't implement getValues + ['host-ip'], + ['host-mac'], + ['host-platform'], + ['os-name'], + ['host-family'], + ['host-version'], + ['host-architecture'], + undefined, // Max anomaly score by job doesn't implement getValues + ['cloud-provider'], + ['cloud-region'], + ['cloud-instance-id'], + ['cloud-machine-type'], + undefined, // Endpoint integration policy doesn't implement getValues + undefined, // Policy Status doesn't implement getValues + ['endpoint-agent-version'], + undefined, // Agent status doesn't implement getValues + ]); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host_fields.ts b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host_fields.ts new file mode 100644 index 0000000000000..255bb54c2c58a --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/hooks/use_observed_host_fields.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMemo } from 'react'; +import { useMlCapabilities } from '../../../../common/components/ml/hooks/use_ml_capabilities'; +import type { HostItem } from '../../../../../common/search_strategy'; +import { getAnomaliesFields } from '../../shared/common'; +import type { EntityTableRows } from '../../shared/components/entity_table/types'; +import type { ObservedEntityData } from '../../shared/components/observed_entity/types'; +import { policyFields } from '../fields/endpoint_policy_fields'; +import { basicHostFields } from '../fields/basic_host_fields'; +import { cloudFields } from '../fields/cloud_fields'; + +export const useObservedHostFields = ( + hostData: ObservedEntityData +): EntityTableRows> => { + const mlCapabilities = useMlCapabilities(); + + return useMemo(() => { + if (hostData == null) { + return []; + } + + return [ + ...basicHostFields, + ...getAnomaliesFields(mlCapabilities), + ...cloudFields, + ...policyFields, + ]; + }, [hostData, mlCapabilities]); +}; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/index.test.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/index.test.tsx new file mode 100644 index 0000000000000..467a1be82a44c --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/index.test.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 { render } from '@testing-library/react'; +import React from 'react'; +import { TestProviders } from '../../../common/mock'; +import { mockHostRiskScoreState, mockObservedHostData } from '../mocks'; + +import type { HostPanelProps } from '.'; +import { HostPanel } from '.'; + +const mockProps: HostPanelProps = { + hostName: 'test', + contextID: 'test-host -panel', + scopeId: 'test-scope-id', + isDraggable: false, +}; + +jest.mock('../../../common/components/visualization_actions/visualization_embeddable'); + +const mockedHostRiskScore = jest.fn().mockReturnValue(mockHostRiskScoreState); +jest.mock('../../../entity_analytics/api/hooks/use_risk_score', () => ({ + useRiskScore: () => mockedHostRiskScore(), +})); + +const mockedUseObservedHost = jest.fn().mockReturnValue(mockObservedHostData); + +jest.mock('./hooks/use_observed_host', () => ({ + useObservedHost: () => mockedUseObservedHost(), +})); + +describe('HostPanel', () => { + beforeEach(() => { + mockedHostRiskScore.mockReturnValue(mockHostRiskScoreState); + mockedUseObservedHost.mockReturnValue(mockObservedHostData); + }); + + it('renders', () => { + const { getByTestId, queryByTestId } = render( + + + + ); + + expect(getByTestId('host-panel-header')).toBeInTheDocument(); + expect(queryByTestId('securitySolutionFlyoutLoading')).not.toBeInTheDocument(); + expect(getByTestId('securitySolutionFlyoutNavigationExpandDetailButton')).toBeInTheDocument(); + }); + + it('renders loading state when risk score is loading', () => { + mockedHostRiskScore.mockReturnValue({ + ...mockHostRiskScoreState, + data: undefined, + loading: true, + }); + + const { getByTestId } = render( + + + + ); + + expect(getByTestId('securitySolutionFlyoutLoading')).toBeInTheDocument(); + }); + + it('renders loading state when observed host is loading', () => { + mockedUseObservedHost.mockReturnValue({ + ...mockObservedHostData, + isLoading: true, + }); + + const { getByTestId } = render( + + + + ); + + expect(getByTestId('securitySolutionFlyoutLoading')).toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/index.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/index.tsx new file mode 100644 index 0000000000000..783a9ce598381 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/index.tsx @@ -0,0 +1,141 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback, useMemo } from 'react'; +import type { FlyoutPanelProps } from '@kbn/expandable-flyout'; +import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; + +import { hostToCriteria } from '../../../common/components/ml/criteria/host_to_criteria'; +import { useRiskScore } from '../../../entity_analytics/api/hooks/use_risk_score'; +import { useQueryInspector } from '../../../common/components/page/manage_query'; +import { useGlobalTime } from '../../../common/containers/use_global_time'; +import type { HostItem } from '../../../../common/search_strategy'; +import { buildHostNamesFilter } from '../../../../common/search_strategy'; +import { RiskScoreEntity } from '../../../../common/entity_analytics/risk_engine'; +import { FlyoutLoading } from '../../shared/components/flyout_loading'; +import { FlyoutNavigation } from '../../shared/components/flyout_navigation'; +import { HostPanelContent } from './content'; +import { HostPanelHeader } from './header'; +import { AnomalyTableProvider } from '../../../common/components/ml/anomaly/anomaly_table_provider'; +import type { ObservedEntityData } from '../shared/components/observed_entity/types'; +import { useObservedHost } from './hooks/use_observed_host'; +import { HostDetailsPanelKey } from '../host_details_left'; +import type { EntityDetailsLeftPanelTab } from '../shared/components/left_panel/left_panel_header'; + +export interface HostPanelProps extends Record { + contextID: string; + scopeId: string; + hostName: string; + isDraggable?: boolean; +} + +export interface HostPanelExpandableFlyoutProps extends FlyoutPanelProps { + key: 'host-panel'; + params: HostPanelProps; +} + +export const HostPanelKey: HostPanelExpandableFlyoutProps['key'] = 'host-panel'; +export const HOST_PANEL_RISK_SCORE_QUERY_ID = 'HostPanelRiskScoreQuery'; +export const HOST_PANEL_OBSERVED_HOST_QUERY_ID = 'HostPanelObservedHostQuery'; + +const FIRST_RECORD_PAGINATION = { + cursorStart: 0, + querySize: 1, +}; + +export const HostPanel = ({ contextID, scopeId, hostName, isDraggable }: HostPanelProps) => { + const { openLeftPanel } = useExpandableFlyoutContext(); + const { to, from, isInitializing, setQuery, deleteQuery } = useGlobalTime(); + const hostNameFilterQuery = useMemo( + () => (hostName ? buildHostNamesFilter([hostName]) : undefined), + [hostName] + ); + + const riskScoreState = useRiskScore({ + riskEntity: RiskScoreEntity.host, + filterQuery: hostNameFilterQuery, + onlyLatest: false, + pagination: FIRST_RECORD_PAGINATION, + }); + + const { data: hostRisk, inspect: inspectRiskScore, refetch, loading } = riskScoreState; + const hostRiskData = hostRisk && hostRisk.length > 0 ? hostRisk[0] : undefined; + + useQueryInspector({ + deleteQuery, + inspect: inspectRiskScore, + loading, + queryId: HOST_PANEL_RISK_SCORE_QUERY_ID, + refetch, + setQuery, + }); + + const openTabPanel = useCallback( + (tab?: EntityDetailsLeftPanelTab) => { + openLeftPanel({ + id: HostDetailsPanelKey, + params: { + riskInputs: { + alertIds: hostRiskData?.host.risk.inputs?.map(({ id }) => id) ?? [], + host: { + name: hostName, + }, + }, + path: tab ? { tab } : undefined, + }, + }); + }, + [openLeftPanel, hostRiskData?.host.risk.inputs, hostName] + ); + + const openDefaultPanel = useCallback(() => openTabPanel(), [openTabPanel]); + const observedHost = useObservedHost(hostName); + + if (riskScoreState.loading || observedHost.isLoading) { + return ; + } + + return ( + + {({ isLoadingAnomaliesData, anomaliesData, jobNameById }) => { + const observedHostWithAnomalies: ObservedEntityData = { + ...observedHost, + anomalies: { + isLoading: isLoadingAnomaliesData, + anomalies: anomaliesData, + jobNameById, + }, + }; + + return ( + <> + + + + + ); + }} + + ); +}; + +HostPanel.displayName = 'HostPanel'; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/mocks/index.ts b/x-pack/plugins/security_solution/public/flyout/entity_details/mocks/index.ts new file mode 100644 index 0000000000000..01dafb9d6b47a --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/mocks/index.ts @@ -0,0 +1,168 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 { HostMetadataInterface } from '../../../../common/endpoint/types'; +import { EndpointStatus, HostStatus } from '../../../../common/endpoint/types'; +import type { RiskScoreState } from '../../../entity_analytics/api/hooks/use_risk_score'; +import type { + HostItem, + HostRiskScore, + RiskScoreEntity, + UserRiskScore, +} from '../../../../common/search_strategy'; +import { HostPolicyResponseActionStatus, RiskSeverity } from '../../../../common/search_strategy'; +import { RiskCategories } from '../../../../common/entity_analytics/risk_engine'; +import type { ObservedEntityData } from '../shared/components/observed_entity/types'; + +const userRiskScore: UserRiskScore = { + '@timestamp': '1989-11-08T23:00:00.000Z', + user: { + name: 'test', + risk: { + rule_risks: [], + calculated_score_norm: 70, + multipliers: [], + calculated_level: RiskSeverity.high, + inputs: [ + { + id: '_id', + index: '_index', + category: RiskCategories.category_1, + description: 'Alert from Rule: My rule', + risk_score: 30, + timestamp: '2021-08-19T18:55:59.000Z', + }, + ], + }, + }, + alertsCount: 0, + oldestAlertTimestamp: '1989-11-08T23:00:00.000Z', +}; + +const hostRiskScore: HostRiskScore = { + '@timestamp': '1989-11-08T23:00:00.000Z', + host: { + name: 'test', + risk: { + rule_risks: [], + calculated_score_norm: 70, + multipliers: [], + calculated_level: RiskSeverity.high, + inputs: [ + { + id: '_id', + index: '_index', + category: RiskCategories.category_1, + description: 'Alert from Rule: My rule', + risk_score: 30, + timestamp: '2021-08-19T18:55:59.000Z', + }, + ], + }, + }, + alertsCount: 0, + oldestAlertTimestamp: '1989-11-08T23:00:00.000Z', +}; + +export const mockUserRiskScoreState: RiskScoreState = { + data: [userRiskScore], + inspect: { + dsl: [], + response: [], + }, + isInspected: false, + refetch: () => {}, + totalCount: 0, + isModuleEnabled: true, + isAuthorized: true, + isDeprecated: false, + loading: false, +}; + +export const mockHostRiskScoreState: RiskScoreState = { + data: [hostRiskScore], + inspect: { + dsl: [], + response: [], + }, + isInspected: false, + refetch: () => {}, + totalCount: 0, + isModuleEnabled: true, + isAuthorized: true, + isDeprecated: false, + loading: false, +}; + +const hostMetadata: HostMetadataInterface = { + '@timestamp': 1036358673463478, + + agent: { + id: 'endpoint-agent-id', + version: 'endpoint-agent-version', + type: 'endpoint-agent-type', + }, + Endpoint: { + status: EndpointStatus.enrolled, + policy: { + applied: { + name: 'policy-name', + id: 'C2A9093E-E289-4C0A-AA44-8C32A414FA7A', + endpoint_policy_version: 3, + version: 5, + status: HostPolicyResponseActionStatus.failure, + }, + }, + }, +} as HostMetadataInterface; + +export const mockObservedHost: HostItem = { + host: { + id: ['host-id'], + mac: ['host-mac'], + architecture: ['host-architecture'], + os: { + platform: ['host-platform'], + name: ['os-name'], + version: ['host-version'], + family: ['host-family'], + }, + ip: ['host-ip'], + name: ['host-name'], + }, + cloud: { + instance: { + id: ['cloud-instance-id'], + }, + provider: ['cloud-provider'], + region: ['cloud-region'], + machine: { + type: ['cloud-machine-type'], + }, + }, + endpoint: { + hostInfo: { + metadata: hostMetadata, + host_status: HostStatus.HEALTHY, + last_checkin: 'host-last-checkin', + }, + }, +}; + +export const mockObservedHostData: ObservedEntityData = { + details: mockObservedHost, + isLoading: false, + firstSeen: { + isLoading: false, + date: '2023-02-23T20:03:17.489Z', + }, + lastSeen: { + isLoading: false, + date: '2023-02-23T20:03:17.489Z', + }, + anomalies: { isLoading: false, anomalies: null, jobNameById: {} }, +}; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/common.test.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/common.test.tsx new file mode 100644 index 0000000000000..70b37fd8ba722 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/common.test.tsx @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getAnomaliesFields } from './common'; +import { emptyMlCapabilities } from '../../../../common/machine_learning/empty_ml_capabilities'; + +const emptyMlCapabilitiesProvider = { + ...emptyMlCapabilities, + capabilitiesFetched: false, +}; + +describe('getAnomaliesFields', () => { + it('returns max anomaly score', () => { + const field = getAnomaliesFields(emptyMlCapabilitiesProvider); + + expect(field[0].label).toBe('Max anomaly score by job'); + }); + + it('hides anomalies field when user has no permissions', () => { + const field = getAnomaliesFields(emptyMlCapabilitiesProvider); + + expect(field[0].isVisible()).toBeFalsy(); + }); + + it('shows anomalies field when user has permissions', () => { + const mlCapabilitiesProvider = { + ...emptyMlCapabilities, + capabilitiesFetched: false, + capabilities: { + ...emptyMlCapabilities.capabilities, + canGetJobs: true, + canGetDatafeeds: true, + canGetCalendars: true, + }, + }; + + const field = getAnomaliesFields(mlCapabilitiesProvider); + + expect(field[0].isVisible()).toBeTruthy(); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/common.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/common.tsx new file mode 100644 index 0000000000000..95d4758c2c449 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/common.tsx @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; + +import { i18n } from '@kbn/i18n'; +import type { ObservedEntityData } from './components/observed_entity/types'; +import type { MlCapabilitiesProvider } from '../../../common/components/ml/permissions/ml_capabilities_provider'; +import { hasMlUserPermissions } from '../../../../common/machine_learning/has_ml_user_permissions'; +import { getEmptyTagValue } from '../../../common/components/empty_value'; +import type { HostItem } from '../../../../common/search_strategy'; +import { AnomaliesField } from './components/anomalies_field'; + +export const getAnomaliesFields = (mlCapabilities: MlCapabilitiesProvider) => [ + { + label: i18n.translate('xpack.securitySolution.timeline.sidePanel.maxAnomalyScoreByJobTitle', { + defaultMessage: 'Max anomaly score by job', + }), + render: (hostData: ObservedEntityData) => + hostData.anomalies ? : getEmptyTagValue(), + isVisible: () => hasMlUserPermissions(mlCapabilities), + }, +]; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/anomalies_field.test.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/anomalies_field.test.tsx new file mode 100644 index 0000000000000..c8a2cdbb71dae --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/anomalies_field.test.tsx @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { mockAnomalies } from '../../../../common/components/ml/mock'; +import { render } from '@testing-library/react'; +import React from 'react'; +import { AnomaliesField } from './anomalies_field'; +import { TestProviders } from '../../../../common/mock'; + +jest.mock('../../../../common/components/cell_actions', () => { + const actual = jest.requireActual('../../../../common/components/cell_actions'); + return { + ...actual, + SecurityCellActions: () => <>, + }; +}); + +describe('getAnomaliesFields', () => { + it('returns max anomaly score', () => { + const { getByTestId } = render( + , + { + wrapper: TestProviders, + } + ); + + expect(getByTestId('anomaly-scores')).toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/anomalies_field.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/anomalies_field.tsx new file mode 100644 index 0000000000000..ea5e7b17202f0 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/anomalies_field.tsx @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback } from 'react'; +import { useDispatch } from 'react-redux'; +import type { EntityAnomalies } from './observed_entity/types'; +import { AnomalyScores } from '../../../../common/components/ml/score/anomaly_scores'; +import { useGlobalTime } from '../../../../common/containers/use_global_time'; +import { scoreIntervalToDateTime } from '../../../../common/components/ml/score/score_interval_to_datetime'; +import { InputsModelId } from '../../../../common/store/inputs/constants'; +import { setAbsoluteRangeDatePicker } from '../../../../common/store/inputs/actions'; + +export const AnomaliesField = ({ anomalies }: { anomalies: EntityAnomalies }) => { + const { to, from } = useGlobalTime(); + const dispatch = useDispatch(); + + const narrowDateRange = useCallback( + (score, interval) => { + const fromTo = scoreIntervalToDateTime(score, interval); + dispatch( + setAbsoluteRangeDatePicker({ + id: InputsModelId.global, + from: fromTo.from, + to: fromTo.to, + }) + ); + }, + [dispatch] + ); + + return ( + + ); +}; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/columns.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/columns.tsx new file mode 100644 index 0000000000000..e97ab9b4accae --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/columns.tsx @@ -0,0 +1,75 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { css } from '@emotion/react'; +import React from 'react'; +import { euiLightVars } from '@kbn/ui-theme'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { DefaultFieldRenderer } from '../../../../../timelines/components/field_renderers/field_renderers'; +import { getEmptyTagValue } from '../../../../../common/components/empty_value'; +import { getSourcererScopeId } from '../../../../../helpers'; +import type { BasicEntityData, EntityTableColumns } from './types'; + +export const getEntityTableColumns = ( + contextID: string, + scopeId: string, + isDraggable: boolean, + data: T +): EntityTableColumns => [ + { + name: ( + + ), + field: 'label', + render: (label: string, { field }) => ( + + {label ?? field} + + ), + }, + { + name: ( + + ), + field: 'field', + render: (field: string | undefined, { getValues, render, renderField }) => { + const values = getValues && getValues(data); + + if (field) { + return ( + + ); + } + + if (render) { + return render(data); + } + + return getEmptyTagValue(); + }, + }, +]; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/index.test.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/index.test.tsx new file mode 100644 index 0000000000000..d6243abb39e9f --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/index.test.tsx @@ -0,0 +1,94 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { render } from '@testing-library/react'; +import React from 'react'; +import { EntityTable } from '.'; +import { TestProviders } from '../../../../../common/mock'; +import type { BasicEntityData, EntityTableRow } from './types'; + +const renderedFieldValue = 'testValue1'; + +const testField: EntityTableRow = { + label: 'testLabel', + field: 'testField', + getValues: (data: unknown) => [renderedFieldValue], + renderField: (field: string) => <>{field}, +}; + +const mockProps = { + contextID: 'testContextID', + scopeId: 'testScopeId', + isDraggable: false, + data: { isLoading: false }, + entityFields: [testField], +}; + +describe('EntityTable', () => { + it('renders correctly', () => { + const { queryByTestId, queryAllByTestId } = render(, { + wrapper: TestProviders, + }); + + expect(queryByTestId('entity-table')).toBeInTheDocument(); + expect(queryAllByTestId('entity-table-label')).toHaveLength(1); + }); + + it("it doesn't render fields when isVisible returns false", () => { + const props = { + ...mockProps, + entityFields: [ + { + ...testField, + isVisible: () => false, + }, + ], + }; + + const { queryAllByTestId } = render(, { + wrapper: TestProviders, + }); + + expect(queryAllByTestId('entity-table-label')).toHaveLength(0); + }); + + it('it renders the field label', () => { + const { queryByTestId } = render(, { + wrapper: TestProviders, + }); + + expect(queryByTestId('entity-table-label')).toHaveTextContent('testLabel'); + }); + + it('it renders the field value', () => { + const { queryByTestId } = render(, { + wrapper: TestProviders, + }); + + expect(queryByTestId('DefaultFieldRendererComponent')).toHaveTextContent(renderedFieldValue); + }); + + it('it call render function when field is undefined', () => { + const props = { + ...mockProps, + entityFields: [ + { + label: 'testLabel', + render: (data: unknown) => ( + {'test-custom-render'} + ), + }, + ], + }; + + const { queryByTestId } = render(, { + wrapper: TestProviders, + }); + + expect(queryByTestId('test-custom-render')).toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/index.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/index.tsx new file mode 100644 index 0000000000000..84075071e7a9f --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/index.tsx @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useMemo } from 'react'; +import { BasicTable } from '../../../../../common/components/ml/tables/basic_table'; +import { getEntityTableColumns } from './columns'; +import type { BasicEntityData, EntityTableRows } from './types'; + +interface EntityTableProps { + contextID: string; + scopeId: string; + isDraggable: boolean; + data: T; + entityFields: EntityTableRows; +} + +export const EntityTable = ({ + contextID, + scopeId, + isDraggable, + data, + entityFields, +}: EntityTableProps) => { + const items = useMemo( + () => entityFields.filter(({ isVisible }) => (isVisible ? isVisible(data) : true)), + [data, entityFields] + ); + + const entityTableColumns = useMemo( + () => getEntityTableColumns(contextID, scopeId, isDraggable, data), + [contextID, scopeId, isDraggable, data] + ); + return ( + + ); +}; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/types.ts b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/types.ts new file mode 100644 index 0000000000000..690a99ec92ce3 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/entity_table/types.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { EuiBasicTableColumn } from '@elastic/eui'; +import type { XOR } from '../../../../../../common/utility_types'; + +export type EntityTableRow = XOR< + { + label: string; + /** + * The field name. It is used for displaying CellActions. + */ + field: string; + /** + * It extracts an array of strings from the data. Each element is a valid field value. + * It is used for displaying MoreContainer. + */ + getValues: (data: T) => string[] | null | undefined; + /** + * It allows the customization of the rendered field. + * The element is still rendered inside `DefaultFieldRenderer` getting `CellActions` and `MoreContainer` capabilities. + */ + renderField?: (value: string) => JSX.Element; + /** + * It hides the row when `isVisible` returns false. + */ + isVisible?: (data: T) => boolean; + }, + { + label: string; + /** + * It takes complete control over the rendering. + * `getValues` and `renderField` are not called when this property is used. + */ + render: (data: T) => JSX.Element; + /** + * It hides the row when `isVisible` returns false. + */ + isVisible?: (data: T) => boolean; + } +>; + +export type EntityTableColumns = Array< + EuiBasicTableColumn> +>; +export type EntityTableRows = Array>; + +export interface BasicEntityData { + isLoading: boolean; +} diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/content.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/left_panel/left_panel_content.tsx similarity index 70% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/content.tsx rename to x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/left_panel/left_panel_content.tsx index 991592bd1ea0c..5a66a5b305611 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/content.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/left_panel/left_panel_content.tsx @@ -9,19 +9,19 @@ import { useEuiBackgroundColor } from '@elastic/eui'; import type { VFC } from 'react'; import React, { useMemo } from 'react'; import { css } from '@emotion/react'; -import type { LeftPanelTabsType, UserDetailsLeftPanelTab } from './tabs'; -import { FlyoutBody } from '../../shared/components/flyout_body'; +import { FlyoutBody } from '../../../../shared/components/flyout_body'; +import type { EntityDetailsLeftPanelTab, LeftPanelTabsType } from './left_panel_header'; export interface PanelContentProps { - selectedTabId: UserDetailsLeftPanelTab; + selectedTabId: EntityDetailsLeftPanelTab; tabs: LeftPanelTabsType; } /** - * User details expandable flyout left section. + * Content for a entity left panel. * Appears after the user clicks on the expand details button in the right section. */ -export const PanelContent: VFC = ({ selectedTabId, tabs }) => { +export const LeftPanelContent: VFC = ({ selectedTabId, tabs }) => { const selectedTabContent = useMemo(() => { return tabs.find((tab) => tab.id === selectedTabId)?.content; }, [selectedTabId, tabs]); @@ -37,4 +37,4 @@ export const PanelContent: VFC = ({ selectedTabId, tabs }) => ); }; -PanelContent.displayName = 'PanelContent'; +LeftPanelContent.displayName = 'LeftPanelContent'; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/header.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/left_panel/left_panel_header.tsx similarity index 67% rename from x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/header.tsx rename to x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/left_panel/left_panel_header.tsx index 2f807ca1d0a7d..ea62ce25f3ca4 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/header.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/left_panel/left_panel_header.tsx @@ -6,21 +6,33 @@ */ import { EuiTab, EuiTabs, useEuiBackgroundColor } from '@elastic/eui'; -import type { VFC } from 'react'; +import type { ReactElement, VFC } from 'react'; import React, { memo } from 'react'; import { css } from '@emotion/react'; -import type { LeftPanelTabsType, UserDetailsLeftPanelTab } from './tabs'; -import { FlyoutHeader } from '../../shared/components/flyout_header'; +import { FlyoutHeader } from '../../../../shared/components/flyout_header'; + +export type LeftPanelTabsType = Array<{ + id: EntityDetailsLeftPanelTab; + 'data-test-subj': string; + name: ReactElement; + content: React.ReactElement; +}>; + +export enum EntityDetailsLeftPanelTab { + RISK_INPUTS = 'risk_inputs', + OKTA = 'okta_document', + ENTRA = 'entra_document', +} export interface PanelHeaderProps { /** * Id of the tab selected in the parent component to display its content */ - selectedTabId: UserDetailsLeftPanelTab; + selectedTabId: EntityDetailsLeftPanelTab; /** * Callback to set the selected tab id in the parent component */ - setSelectedTabId: (selected: UserDetailsLeftPanelTab) => void; + setSelectedTabId: (selected: EntityDetailsLeftPanelTab) => void; /** * List of tabs to display in the header */ @@ -31,9 +43,9 @@ export interface PanelHeaderProps { * Header at the top of the left section. * Displays the investigation and insights tabs (visualize is hidden for 8.9). */ -export const PanelHeader: VFC = memo( +export const LeftPanelHeader: VFC = memo( ({ selectedTabId, setSelectedTabId, tabs }) => { - const onSelectedTabChanged = (id: UserDetailsLeftPanelTab) => setSelectedTabId(id); + const onSelectedTabChanged = (id: EntityDetailsLeftPanelTab) => setSelectedTabId(id); const renderTabs = tabs.map((tab, index) => ( onSelectedTabChanged(tab.id)} @@ -61,4 +73,4 @@ export const PanelHeader: VFC = memo( } ); -PanelHeader.displayName = 'PanelHeader'; +LeftPanelHeader.displayName = 'LeftPanelHeader'; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/index.test.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/index.test.tsx new file mode 100644 index 0000000000000..f3cdfefa6c74f --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/index.test.tsx @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { render } from '@testing-library/react'; +import React from 'react'; +import { ObservedEntity } from '.'; +import { TestProviders } from '../../../../../common/mock'; +import { mockObservedHostData } from '../../../mocks'; + +describe('ObservedHost', () => { + const mockProps = { + observedData: mockObservedHostData, + contextID: '', + scopeId: '', + isDraggable: false, + queryId: 'TEST_QUERY_ID', + observedFields: [], + }; + + it('renders', () => { + const { getByTestId } = render( + + + + ); + + expect(getByTestId('observedEntity-accordion')).toBeInTheDocument(); + }); + + it('renders the formatted date', () => { + const { getByTestId } = render( + + + + ); + + expect(getByTestId('observedEntity-accordion')).toHaveTextContent('Updated Feb 23, 2023'); + }); +}); diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/observed_user.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/index.tsx similarity index 51% rename from x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/observed_user.tsx rename to x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/index.tsx index 411e516b570f3..792ad322e631b 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/observed_user.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/index.tsx @@ -5,39 +5,34 @@ * 2.0. */ -import { EuiAccordion, EuiSpacer, EuiTitle, useEuiTheme, useEuiFontSize } from '@elastic/eui'; +import { EuiAccordion, EuiSpacer, EuiTitle, useEuiFontSize, useEuiTheme } from '@elastic/eui'; -import React, { useMemo } from 'react'; +import React from 'react'; import { css } from '@emotion/react'; import { FormattedMessage } from '@kbn/i18n-react'; -import * as i18n from './translations'; -import type { ObservedUserData } from './types'; -import { BasicTable } from '../../../../common/components/ml/tables/basic_table'; -import { FormattedRelativePreferenceDate } from '../../../../common/components/formatted_date'; -import { getObservedUserTableColumns } from './columns'; -import { ONE_WEEK_IN_HOURS } from './constants'; -import { InspectButton, InspectButtonContainer } from '../../../../common/components/inspect'; -import { OBSERVED_USER_QUERY_ID } from '../../../../explore/users/containers/users/observed_details'; -import { useObservedUserItems } from './hooks/use_observed_user_items'; +import { EntityTable } from '../entity_table'; +import { FormattedRelativePreferenceDate } from '../../../../../common/components/formatted_date'; +import { InspectButton, InspectButtonContainer } from '../../../../../common/components/inspect'; +import type { EntityTableRows } from '../entity_table/types'; +import { ONE_WEEK_IN_HOURS } from '../../constants'; +import type { ObservedEntityData } from './types'; -export const ObservedUser = ({ - observedUser, +export const ObservedEntity = ({ + observedData, contextID, scopeId, isDraggable, + observedFields, + queryId, }: { - observedUser: ObservedUserData; + observedData: ObservedEntityData; contextID: string; scopeId: string; isDraggable: boolean; + observedFields: EntityTableRows>; + queryId: string; }) => { const { euiTheme } = useEuiTheme(); - const observedItems = useObservedUserItems(observedUser); - - const observedUserTableColumns = useMemo( - () => getObservedUserTableColumns(contextID, scopeId, isDraggable), - [contextID, scopeId, isDraggable] - ); const xsFontSize = useEuiFontSize('xxs').fontSize; return ( @@ -45,18 +40,23 @@ export const ObservedUser = ({ -

{i18n.OBSERVED_DATA_TITLE}

+

+ +

} extraAction={ @@ -67,23 +67,28 @@ export const ObservedUser = ({ `} > + } /> - {observedUser.lastSeen.date && ( + {observedData.lastSeen.date && ( @@ -101,17 +106,12 @@ export const ObservedUser = ({ `} > - -
diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/types.ts b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/types.ts new file mode 100644 index 0000000000000..f9d9db179d3f6 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/observed_entity/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 { BasicEntityData } from '../entity_table/types'; +import type { AnomalyTableProviderChildrenProps } from '../../../../../common/components/ml/anomaly/anomaly_table_provider'; + +export interface FirstLastSeenData { + date: string | null | undefined; + isLoading: boolean; +} + +export interface EntityAnomalies { + isLoading: AnomalyTableProviderChildrenProps['isLoadingAnomaliesData']; + anomalies: AnomalyTableProviderChildrenProps['anomaliesData']; + jobNameById: AnomalyTableProviderChildrenProps['jobNameById']; +} + +export interface ObservedEntityData extends BasicEntityData { + firstSeen: FirstLastSeenData; + lastSeen: FirstLastSeenData; + anomalies: EntityAnomalies; + details: T; +} diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/constants.ts b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/constants.ts new file mode 100644 index 0000000000000..bad35d3657891 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/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 ONE_WEEK_IN_HOURS = 24 * 7; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/index.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/index.tsx index ae96a76c68d4e..c2591eab2c914 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/index.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/index.tsx @@ -9,11 +9,14 @@ import React, { useMemo } from 'react'; import type { FlyoutPanelProps, PanelPath } from '@kbn/expandable-flyout'; import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; import { useManagedUser } from '../../../timelines/components/side_panel/new_user_detail/hooks/use_managed_user'; -import { PanelHeader } from './header'; -import { PanelContent } from './content'; -import type { LeftPanelTabsType, UserDetailsLeftPanelTab } from './tabs'; import { useTabs } from './tabs'; import { FlyoutLoading } from '../../shared/components/flyout_loading'; +import type { + EntityDetailsLeftPanelTab, + LeftPanelTabsType, +} from '../shared/components/left_panel/left_panel_header'; +import { LeftPanelHeader } from '../shared/components/left_panel/left_panel_header'; +import { LeftPanelContent } from '../shared/components/left_panel/left_panel_content'; interface RiskInputsParam { alertIds: string[]; @@ -44,8 +47,12 @@ export const UserDetailsPanel = ({ riskInputs, user, path }: UserDetailsPanelPro return ( <> - - + + ); }; @@ -65,7 +72,7 @@ const useSelectedTab = ( return tabs.find((tab) => tab.id === path.tab)?.id ?? defaultTab; }, [path, tabs]); - const setSelectedTabId = (tabId: UserDetailsLeftPanelTab) => { + const setSelectedTabId = (tabId: EntityDetailsLeftPanelTab) => { openLeftPanel({ id: UserDetailsPanelKey, path: { diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs.tsx index 61f408a5c0ade..3867afb4470e2 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/user_details_left/tabs.tsx @@ -5,7 +5,6 @@ * 2.0. */ -import type { ReactElement } from 'react'; import React, { useMemo } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -19,19 +18,8 @@ import type { import { ENTRA_TAB_TEST_ID, OKTA_TAB_TEST_ID } from './test_ids'; import { AssetDocumentTab } from './tabs/asset_document'; import { RightPanelProvider } from '../../document_details/right/context'; - -export type LeftPanelTabsType = Array<{ - id: UserDetailsLeftPanelTab; - 'data-test-subj': string; - name: ReactElement; - content: React.ReactElement; -}>; - -export enum UserDetailsLeftPanelTab { - RISK_INPUTS = 'risk_inputs', - OKTA = 'okta_document', - ENTRA = 'entra_document', -} +import type { LeftPanelTabsType } from '../shared/components/left_panel/left_panel_header'; +import { EntityDetailsLeftPanelTab } from '../shared/components/left_panel/left_panel_header'; export const useTabs = (managedUser: ManagedUserHits, alertIds: string[]): LeftPanelTabsType => useMemo(() => { @@ -55,7 +43,7 @@ export const useTabs = (managedUser: ManagedUserHits, alertIds: string[]): LeftP }, [alertIds, managedUser]); const getOktaTab = (oktaManagedUser: ManagedUserHit) => ({ - id: UserDetailsLeftPanelTab.OKTA, + id: EntityDetailsLeftPanelTab.OKTA, 'data-test-subj': OKTA_TAB_TEST_ID, name: ( ({ const getEntraTab = (entraManagedUser: ManagedUserHit) => { return { - id: UserDetailsLeftPanelTab.ENTRA, + id: EntityDetailsLeftPanelTab.ENTRA, 'data-test-subj': ENTRA_TAB_TEST_ID, name: ( window.alert('openLeftPanel called'), diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/content.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/content.tsx index 9b99c42aeac7a..f1f7916d3907c 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/content.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/content.tsx @@ -8,27 +8,27 @@ import { EuiHorizontalRule } from '@elastic/eui'; import React from 'react'; +import { OBSERVED_USER_QUERY_ID } from '../../../explore/users/containers/users/observed_details'; import { RiskSummary } from '../../../entity_analytics/components/risk_summary_flyout/risk_summary'; import type { RiskScoreState } from '../../../entity_analytics/api/hooks/use_risk_score'; import { ManagedUser } from '../../../timelines/components/side_panel/new_user_detail/managed_user'; -import type { - ManagedUserData, - ObservedUserData, -} from '../../../timelines/components/side_panel/new_user_detail/types'; -import { ObservedUser } from '../../../timelines/components/side_panel/new_user_detail/observed_user'; -import type { RiskScoreEntity } from '../../../../common/search_strategy'; +import type { ManagedUserData } from '../../../timelines/components/side_panel/new_user_detail/types'; +import type { RiskScoreEntity, UserItem } from '../../../../common/search_strategy'; import { USER_PANEL_RISK_SCORE_QUERY_ID } from '.'; import { FlyoutBody } from '../../shared/components/flyout_body'; -import type { UserDetailsLeftPanelTab } from '../user_details_left/tabs'; +import { ObservedEntity } from '../shared/components/observed_entity'; +import type { ObservedEntityData } from '../shared/components/observed_entity/types'; +import { useObservedUserItems } from './hooks/use_observed_user_items'; +import type { EntityDetailsLeftPanelTab } from '../shared/components/left_panel/left_panel_header'; interface UserPanelContentProps { - observedUser: ObservedUserData; + observedUser: ObservedEntityData; managedUser: ManagedUserData; riskScoreState: RiskScoreState; contextID: string; scopeId: string; isDraggable: boolean; - openDetailsPanel: (tab: UserDetailsLeftPanelTab) => void; + openDetailsPanel: (tab: EntityDetailsLeftPanelTab) => void; } export const UserPanelContent = ({ @@ -40,6 +40,8 @@ export const UserPanelContent = ({ isDraggable, openDetailsPanel, }: UserPanelContentProps) => { + const observedFields = useObservedUserItems(observedUser); + return ( {riskScoreState.isModuleEnabled && riskScoreState.data?.length !== 0 && ( @@ -52,11 +54,13 @@ export const UserPanelContent = ({ )} - ; managedUser: ManagedUserData; } diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/translations.ts b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/translations.ts new file mode 100644 index 0000000000000..9c7637d75f543 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/translations.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const USER_ID = i18n.translate('xpack.securitySolution.flyout.entityDetails.user.idLabel', { + defaultMessage: 'User ID', +}); + +export const MAX_ANOMALY_SCORE_BY_JOB = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.user.maxAnomalyScoreByJobLabel', + { + defaultMessage: 'Max anomaly score by job', + } +); + +export const FIRST_SEEN = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.user.firstSeenLabel', + { + defaultMessage: 'First seen', + } +); + +export const LAST_SEEN = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.user.lastSeenLabel', + { + defaultMessage: 'Last seen', + } +); + +export const OPERATING_SYSTEM_TITLE = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.user.hostOsNameLabel', + { + defaultMessage: 'Operating system', + } +); + +export const FAMILY = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.user.familyLabel', + { + defaultMessage: 'Family', + } +); + +export const IP_ADDRESSES = i18n.translate( + 'xpack.securitySolution.flyout.entityDetails.user.ipAddressesLabel', + { + defaultMessage: 'IP addresses', + } +); diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/hooks/use_observed_user.ts b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user.ts similarity index 65% rename from x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/hooks/use_observed_user.ts rename to x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user.ts index d3d2c4fde90a1..6d1ae0ab11e00 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/hooks/use_observed_user.ts +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user.ts @@ -6,28 +6,18 @@ */ import { useMemo } from 'react'; -import { useObservedUserDetails } from '../../../../../explore/users/containers/users/observed_details'; -import type { UserItem } from '../../../../../../common/search_strategy'; -import { Direction, NOT_EVENT_KIND_ASSET_FILTER } from '../../../../../../common/search_strategy'; -import { useSourcererDataView } from '../../../../../common/containers/sourcerer'; -import { useGlobalTime } from '../../../../../common/containers/use_global_time'; -import { useFirstLastSeen } from '../../../../../common/containers/use_first_last_seen'; -import { useQueryInspector } from '../../../../../common/components/page/manage_query'; +import { useQueryInspector } from '../../../../common/components/page/manage_query'; +import type { ObservedEntityData } from '../../shared/components/observed_entity/types'; +import { useObservedUserDetails } from '../../../../explore/users/containers/users/observed_details'; +import type { UserItem } from '../../../../../common/search_strategy'; +import { Direction, NOT_EVENT_KIND_ASSET_FILTER } from '../../../../../common/search_strategy'; +import { useSourcererDataView } from '../../../../common/containers/sourcerer'; +import { useGlobalTime } from '../../../../common/containers/use_global_time'; +import { useFirstLastSeen } from '../../../../common/containers/use_first_last_seen'; -export interface ObserverUser { - details: UserItem; - isLoading: boolean; - firstSeen: { - date: string | null | undefined; - isLoading: boolean; - }; - lastSeen: { - date: string | null | undefined; - isLoading: boolean; - }; -} - -export const useObservedUser = (userName: string): ObserverUser => { +export const useObservedUser = ( + userName: string +): Omit, 'anomalies'> => { const { selectedPatterns } = useSourcererDataView(); const { to, from, isInitializing, deleteQuery, setQuery } = useGlobalTime(); @@ -68,7 +58,7 @@ export const useObservedUser = (userName: string): ObserverUser => { return useMemo( () => ({ details: observedUserDetails, - isLoading: loadingObservedUser, + isLoading: loadingObservedUser || loadingLastSeen || loadingFirstSeen, firstSeen: { date: firstSeen, isLoading: loadingFirstSeen, diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/hooks/use_observed_user_items.test.ts b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user_items.test.ts similarity index 53% rename from x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/hooks/use_observed_user_items.test.ts rename to x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user_items.test.ts index 40fd3c6089039..1c7b5557dd90a 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/hooks/use_observed_user_items.test.ts +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user_items.test.ts @@ -5,13 +5,13 @@ * 2.0. */ +import { TestProviders } from '@kbn/timelines-plugin/public/mock'; import { renderHook } from '@testing-library/react-hooks'; -import { TestProviders } from '../../../../../common/mock'; -import { mockObservedUser } from '../__mocks__'; +import { mockObservedUser } from '../mocks'; import { useObservedUserItems } from './use_observed_user_items'; describe('useManagedUserItems', () => { - it('returns managed user items for Entra user', () => { + it('returns observed user fields', () => { const { result } = renderHook(() => useObservedUserItems(mockObservedUser), { wrapper: TestProviders, }); @@ -20,43 +20,58 @@ describe('useManagedUserItems', () => { { field: 'user.id', label: 'User ID', - values: ['1234', '321'], + getValues: expect.any(Function), }, { field: 'user.domain', label: 'Domain', - values: ['test domain', 'another test domain'], - }, - { - field: 'anomalies', - label: 'Max anomaly score by job', - values: mockObservedUser.anomalies, + getValues: expect.any(Function), }, { field: '@timestamp', label: 'First seen', - values: ['2023-02-23T20:03:17.489Z'], + getValues: expect.any(Function), }, { field: '@timestamp', label: 'Last seen', - values: ['2023-02-23T20:03:17.489Z'], + getValues: expect.any(Function), }, { field: 'host.os.name', label: 'Operating system', - values: ['testOs'], + getValues: expect.any(Function), }, { field: 'host.os.family', label: 'Family', - values: ['testFamily'], + + getValues: expect.any(Function), }, { field: 'host.ip', label: 'IP addresses', - values: ['10.0.0.1', '127.0.0.1'], + + getValues: expect.any(Function), + }, + { + label: 'Max anomaly score by job', + isVisible: expect.any(Function), + render: expect.any(Function), }, ]); + + expect(result.current.map(({ getValues }) => getValues && getValues(mockObservedUser))).toEqual( + [ + ['1234', '321'], // id + ['test domain', 'another test domain'], // domain + ['2023-02-23T20:03:17.489Z'], // First seen + ['2023-02-23T20:03:17.489Z'], // Last seen + ['testOs'], // OS name + ['testFamily'], // os family + ['10.0.0.1', '127.0.0.1'], // IP addresses + undefined, // Max anomaly score by job doesn't implement getValues + ] + ); }); }); diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user_items.ts b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user_items.ts new file mode 100644 index 0000000000000..7275b2ca55570 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/hooks/use_observed_user_items.ts @@ -0,0 +1,71 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMemo } from 'react'; +import type { UserItem } from '../../../../../common/search_strategy'; +import { useMlCapabilities } from '../../../../common/components/ml/hooks/use_ml_capabilities'; +import { getAnomaliesFields } from '../../shared/common'; +import * as i18n from './translations'; +import type { ObservedEntityData } from '../../shared/components/observed_entity/types'; +import type { EntityTableRows } from '../../shared/components/entity_table/types'; + +const basicUserFields: EntityTableRows> = [ + { + label: i18n.USER_ID, + getValues: (userData: ObservedEntityData) => userData.details.user?.id, + field: 'user.id', + }, + { + label: 'Domain', + getValues: (userData: ObservedEntityData) => userData.details.user?.domain, + field: 'user.domain', + }, + { + label: i18n.FIRST_SEEN, + getValues: (userData: ObservedEntityData) => + userData.firstSeen.date ? [userData.firstSeen.date] : undefined, + field: '@timestamp', + }, + { + label: i18n.LAST_SEEN, + getValues: (userData: ObservedEntityData) => + userData.lastSeen.date ? [userData.lastSeen.date] : undefined, + field: '@timestamp', + }, + { + label: i18n.OPERATING_SYSTEM_TITLE, + getValues: (userData: ObservedEntityData) => userData.details.host?.os?.name, + field: 'host.os.name', + }, + { + label: i18n.FAMILY, + getValues: (userData: ObservedEntityData) => userData.details.host?.os?.family, + field: 'host.os.family', + }, + { + label: i18n.IP_ADDRESSES, + getValues: (userData: ObservedEntityData) => userData.details.host?.ip, + field: 'host.ip', + }, +]; + +export const useObservedUserItems = ( + userData: ObservedEntityData +): EntityTableRows> => { + const mlCapabilities = useMlCapabilities(); + + const fields: EntityTableRows> = useMemo( + () => [...basicUserFields, ...getAnomaliesFields(mlCapabilities)], + [mlCapabilities] + ); + + if (!userData.details) { + return []; + } + + return fields; +}; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/index.test.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/index.test.tsx index 1c74e4ed23ea5..9961b3ea086e2 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/index.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/index.test.tsx @@ -10,12 +10,12 @@ import React from 'react'; import { TestProviders } from '../../../common/mock'; import type { UserPanelProps } from '.'; import { UserPanel } from '.'; -import { mockRiskScoreState } from './mocks'; import { mockManagedUserData, - mockObservedUser, + mockRiskScoreState, } from '../../../timelines/components/side_panel/new_user_detail/__mocks__'; +import { mockObservedUser } from './mocks'; const mockProps: UserPanelProps = { userName: 'test', @@ -41,12 +41,9 @@ jest.mock( }) ); -jest.mock( - '../../../timelines/components/side_panel/new_user_detail/hooks/use_observed_user', - () => ({ - useObservedUser: () => mockedUseObservedUser(), - }) -); +jest.mock('./hooks/use_observed_user', () => ({ + useObservedUser: () => mockedUseObservedUser(), +})); describe('UserPanel', () => { beforeEach(() => { diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/index.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/index.tsx index 76168bc01c842..abe3ee4793016 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/index.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/index.tsx @@ -11,7 +11,6 @@ import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; import { useRiskScore } from '../../../entity_analytics/api/hooks/use_risk_score'; import { ManagedUserDatasetKey } from '../../../../common/search_strategy/security_solution/users/managed_details'; import { useManagedUser } from '../../../timelines/components/side_panel/new_user_detail/hooks/use_managed_user'; -import { useObservedUser } from '../../../timelines/components/side_panel/new_user_detail/hooks/use_observed_user'; import { useQueryInspector } from '../../../common/components/page/manage_query'; import { UsersType } from '../../../explore/users/store/model'; import { getCriteriaFromUsersType } from '../../../common/components/ml/criteria/get_criteria_from_users_type'; @@ -24,7 +23,8 @@ import { FlyoutNavigation } from '../../shared/components/flyout_navigation'; import { UserPanelContent } from './content'; import { UserPanelHeader } from './header'; import { UserDetailsPanelKey } from '../user_details_left'; -import type { UserDetailsLeftPanelTab } from '../user_details_left/tabs'; +import { useObservedUser } from './hooks/use_observed_user'; +import type { EntityDetailsLeftPanelTab } from '../shared/components/left_panel/left_panel_header'; export interface UserPanelProps extends Record { contextID: string; @@ -79,7 +79,7 @@ export const UserPanel = ({ contextID, scopeId, userName, isDraggable }: UserPan const { openLeftPanel } = useExpandableFlyoutContext(); const openPanelTab = useCallback( - (tab?: UserDetailsLeftPanelTab) => { + (tab?: EntityDetailsLeftPanelTab) => { openLeftPanel({ id: UserDetailsPanelKey, params: { diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/mocks/index.ts b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/mocks/index.ts index 88ab3c10241cb..b58c94c5772ff 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/mocks/index.ts +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/mocks/index.ts @@ -5,47 +5,43 @@ * 2.0. */ -import type { RiskScoreState } from '../../../../entity_analytics/api/hooks/use_risk_score'; -import type { RiskScoreEntity, UserRiskScore } from '../../../../../common/search_strategy'; -import { RiskSeverity } from '../../../../../common/search_strategy'; -import { RiskCategories } from '../../../../../common/entity_analytics/risk_engine'; +import { mockAnomalies } from '../../../../common/components/ml/mock'; +import type { UserItem } from '../../../../../common/search_strategy'; +import type { ObservedEntityData } from '../../shared/components/observed_entity/types'; -const userRiskScore: UserRiskScore = { - '@timestamp': '626569200000', +const anomaly = mockAnomalies.anomalies[0]; + +const observedUserDetails = { user: { - name: 'test', - risk: { - rule_risks: [], - calculated_score_norm: 70, - multipliers: [], - calculated_level: RiskSeverity.high, - inputs: [ - { - id: '_id', - index: '_index', - category: RiskCategories.category_1, - description: 'Alert from Rule: My rule', - risk_score: 30, - timestamp: '2021-08-19T18:55:59.000Z', - }, - ], + id: ['1234', '321'], + domain: ['test domain', 'another test domain'], + }, + host: { + ip: ['10.0.0.1', '127.0.0.1'], + os: { + name: ['testOs'], + family: ['testFamily'], }, }, - alertsCount: 0, - oldestAlertTimestamp: '626569200000', }; -export const mockRiskScoreState: RiskScoreState = { - data: [userRiskScore], - inspect: { - dsl: [], - response: [], +export const mockObservedUser: ObservedEntityData = { + details: observedUserDetails, + isLoading: false, + firstSeen: { + isLoading: false, + date: '2023-02-23T20:03:17.489Z', + }, + lastSeen: { + isLoading: false, + date: '2023-02-23T20:03:17.489Z', + }, + anomalies: { + isLoading: false, + anomalies: { + anomalies: [anomaly], + interval: '', + }, + jobNameById: { [anomaly.jobId]: 'job_name' }, }, - isInspected: false, - refetch: () => {}, - totalCount: 0, - isModuleEnabled: true, - isAuthorized: true, - isDeprecated: false, - loading: false, }; diff --git a/x-pack/plugins/security_solution/public/flyout/index.tsx b/x-pack/plugins/security_solution/public/flyout/index.tsx index ef7e182324c63..c72417bd2004b 100644 --- a/x-pack/plugins/security_solution/public/flyout/index.tsx +++ b/x-pack/plugins/security_solution/public/flyout/index.tsx @@ -26,6 +26,11 @@ import type { UserPanelExpandableFlyoutProps } from './entity_details/user_right import { UserPanel, UserPanelKey } from './entity_details/user_right'; import type { UserDetailsPanelProps } from './entity_details/user_details_left'; import { UserDetailsPanel, UserDetailsPanelKey } from './entity_details/user_details_left'; +import type { HostPanelExpandableFlyoutProps } from './entity_details/host_right'; +import { HostPanel, HostPanelKey } from './entity_details/host_right'; +import type { HostDetailsExpandableFlyoutProps } from './entity_details/host_details_left'; +import { HostDetailsPanel, HostDetailsPanelKey } from './entity_details/host_details_left'; + /** * List of all panels that will be used within the document details expandable flyout. * This needs to be passed to the expandable flyout registeredPanels property. @@ -73,6 +78,16 @@ const expandableFlyoutDocumentsPanels: ExpandableFlyoutProps['registeredPanels'] ), }, + { + key: HostPanelKey, + component: (props) => , + }, + { + key: HostDetailsPanelKey, + component: (props) => ( + + ), + }, ]; export const SecuritySolutionFlyout = memo(() => ( diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/__mocks__/index.ts b/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/__mocks__/index.ts index 65c6bd974b83a..43abce1104467 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/__mocks__/index.ts +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/__mocks__/index.ts @@ -11,8 +11,7 @@ import type { } from '../../../../../../common/search_strategy/security_solution/users/managed_details'; import { ManagedUserDatasetKey } from '../../../../../../common/search_strategy/security_solution/users/managed_details'; import { RiskSeverity } from '../../../../../../common/search_strategy'; -import { mockAnomalies } from '../../../../../common/components/ml/mock'; -import type { ManagedUserData, ObservedUserData } from '../types'; +import type { ManagedUserData } from '../types'; const userRiskScore = { '@timestamp': '123456', @@ -44,43 +43,6 @@ export const mockRiskScoreState = { loading: false, }; -const anomaly = mockAnomalies.anomalies[0]; - -export const observedUserDetails = { - user: { - id: ['1234', '321'], - domain: ['test domain', 'another test domain'], - }, - host: { - ip: ['10.0.0.1', '127.0.0.1'], - os: { - name: ['testOs'], - family: ['testFamily'], - }, - }, -}; - -export const mockObservedUser: ObservedUserData = { - details: observedUserDetails, - isLoading: false, - firstSeen: { - isLoading: false, - date: '2023-02-23T20:03:17.489Z', - }, - lastSeen: { - isLoading: false, - date: '2023-02-23T20:03:17.489Z', - }, - anomalies: { - isLoading: false, - anomalies: { - anomalies: [anomaly], - interval: '', - }, - jobNameById: { [anomaly.jobId]: 'job_name' }, - }, -}; - export const mockOktaUserFields: ManagedUserFields = { '@timestamp': ['2023-11-16T13:42:23.074Z'], 'event.dataset': [ManagedUserDatasetKey.OKTA], diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/columns.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/columns.tsx index 8c4f31ea12141..da4e82976d515 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/columns.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/columns.tsx @@ -6,31 +6,16 @@ */ import { css } from '@emotion/react'; -import React, { useCallback } from 'react'; -import { head } from 'lodash/fp'; +import React from 'react'; import { euiLightVars } from '@kbn/ui-theme'; import type { EuiBasicTableColumn } from '@elastic/eui'; -import { useDispatch } from 'react-redux'; import { SourcererScopeName } from '../../../../common/store/sourcerer/model'; import { DefaultFieldRenderer } from '../../field_renderers/field_renderers'; -import type { - ManagedUsersTableColumns, - ManagedUserTable, - ObservedUsersTableColumns, - ObservedUserTable, - UserAnomalies, -} from './types'; +import type { ManagedUsersTableColumns, ManagedUserTable } from './types'; import * as i18n from './translations'; import { defaultToEmptyTag } from '../../../../common/components/empty_value'; -import { FormattedRelativePreferenceDate } from '../../../../common/components/formatted_date'; -import { AnomalyScores } from '../../../../common/components/ml/score/anomaly_scores'; -import { useGlobalTime } from '../../../../common/containers/use_global_time'; -import { scoreIntervalToDateTime } from '../../../../common/components/ml/score/score_interval_to_datetime'; -import { InputsModelId } from '../../../../common/store/inputs/constants'; -import { setAbsoluteRangeDatePicker } from '../../../../common/store/inputs/actions'; -import { getSourcererScopeId } from '../../../../helpers'; -const fieldColumn: EuiBasicTableColumn = { +const fieldColumn: EuiBasicTableColumn = { name: i18n.FIELD_COLUMN_TITLE, field: 'label', render: (label: string, { field }) => ( @@ -68,71 +53,3 @@ export const getManagedUserTableColumns = ( }, }, ]; - -function isAnomalies( - field: string | undefined, - values: UserAnomalies | unknown -): values is UserAnomalies { - return field === 'anomalies'; -} - -export const getObservedUserTableColumns = ( - contextID: string, - scopeId: string, - isDraggable: boolean -): ObservedUsersTableColumns => [ - fieldColumn, - { - name: i18n.VALUES_COLUMN_TITLE, - field: 'values', - render: (values: ObservedUserTable['values'], { field }) => { - if (isAnomalies(field, values) && values) { - return ; - } - - if (field === '@timestamp') { - return ; - } - - return ( - - ); - }, - }, -]; - -const AnomaliesField = ({ anomalies }: { anomalies: UserAnomalies }) => { - const { to, from } = useGlobalTime(); - const dispatch = useDispatch(); - - const narrowDateRange = useCallback( - (score, interval) => { - const fromTo = scoreIntervalToDateTime(score, interval); - dispatch( - setAbsoluteRangeDatePicker({ - id: InputsModelId.global, - from: fromTo.from, - to: fromTo.to, - }) - ); - }, - [dispatch] - ); - - return ( - - ); -}; diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/hooks/use_observed_user_items.ts b/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/hooks/use_observed_user_items.ts deleted file mode 100644 index d6390b210d586..0000000000000 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/hooks/use_observed_user_items.ts +++ /dev/null @@ -1,48 +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 { useMemo } from 'react'; -import * as i18n from '../translations'; -import type { ObservedUserData, ObservedUserTable } from '../types'; - -export const useObservedUserItems = (userData: ObservedUserData): ObservedUserTable[] => - useMemo( - () => - !userData.details - ? [] - : [ - { label: i18n.USER_ID, values: userData.details.user?.id, field: 'user.id' }, - { label: 'Domain', values: userData.details.user?.domain, field: 'user.domain' }, - { - label: i18n.MAX_ANOMALY_SCORE_BY_JOB, - field: 'anomalies', - values: userData.anomalies, - }, - { - label: i18n.FIRST_SEEN, - values: userData.firstSeen.date ? [userData.firstSeen.date] : undefined, - field: '@timestamp', - }, - { - label: i18n.LAST_SEEN, - values: userData.lastSeen.date ? [userData.lastSeen.date] : undefined, - field: '@timestamp', - }, - { - label: i18n.OPERATING_SYSTEM_TITLE, - values: userData.details.host?.os?.name, - field: 'host.os.name', - }, - { - label: i18n.FAMILY, - values: userData.details.host?.os?.family, - field: 'host.os.family', - }, - { label: i18n.IP_ADDRESSES, values: userData.details.host?.ip, field: 'host.ip' }, - ], - [userData.details, userData.anomalies, userData.firstSeen, userData.lastSeen] - ); diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/managed_user.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/managed_user.tsx index 590f120b19687..635cf6a2868fd 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/managed_user.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/managed_user.tsx @@ -18,7 +18,7 @@ import { import React, { useMemo } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; import { css } from '@emotion/css'; -import type { UserDetailsLeftPanelTab } from '../../../../flyout/entity_details/user_details_left/tabs'; +import type { EntityDetailsLeftPanelTab } from '../../../../flyout/entity_details/shared/components/left_panel/left_panel_header'; import { UserAssetTableType } from '../../../../explore/users/store/model'; import type { ManagedUserFields } from '../../../../../common/search_strategy/security_solution/users/managed_details'; import { ManagedUserDatasetKey } from '../../../../../common/search_strategy/security_solution/users/managed_details'; @@ -47,7 +47,7 @@ export const ManagedUser = ({ managedUser: ManagedUserData; contextID: string; isDraggable: boolean; - openDetailsPanel: (tab: UserDetailsLeftPanelTab) => void; + openDetailsPanel: (tab: EntityDetailsLeftPanelTab) => void; }) => { const entraManagedUser = managedUser.data?.[ManagedUserDatasetKey.ENTRA]; const oktaManagedUser = managedUser.data?.[ManagedUserDatasetKey.OKTA]; diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/managed_user_accordion.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/managed_user_accordion.tsx index a03775f61cf26..ad8b089adc168 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/managed_user_accordion.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/managed_user_accordion.tsx @@ -11,7 +11,7 @@ import React from 'react'; import { css } from '@emotion/react'; import { FormattedMessage } from '@kbn/i18n-react'; import { get } from 'lodash/fp'; -import { UserDetailsLeftPanelTab } from '../../../../flyout/entity_details/user_details_left/tabs'; +import { EntityDetailsLeftPanelTab } from '../../../../flyout/entity_details/shared/components/left_panel/left_panel_header'; import { ExpandablePanel } from '../../../../flyout/shared/components/expandable_panel'; import type { ManagedUserFields } from '../../../../../common/search_strategy/security_solution/users/managed_details'; @@ -23,7 +23,7 @@ interface ManagedUserAccordionProps { title: string; managedUser: ManagedUserFields; tableType: UserAssetTableType; - openDetailsPanel: (tab: UserDetailsLeftPanelTab) => void; + openDetailsPanel: (tab: EntityDetailsLeftPanelTab) => void; } export const ManagedUserAccordion: React.FC = ({ @@ -66,8 +66,8 @@ export const ManagedUserAccordion: React.FC = ({ callback: () => openDetailsPanel( tableType === UserAssetTableType.assetOkta - ? UserDetailsLeftPanelTab.OKTA - : UserDetailsLeftPanelTab.ENTRA + ? EntityDetailsLeftPanelTab.OKTA + : EntityDetailsLeftPanelTab.ENTRA ), tooltip: ( { - const mockProps = { - observedUser: mockObservedUser, - contextID: '', - scopeId: '', - isDraggable: false, - }; - - it('renders', () => { - const { getByTestId } = render( - - - - ); - - expect(getByTestId('observedUser-data')).toBeInTheDocument(); - }); - - it('renders the formatted date', () => { - const { getByTestId } = render( - - - - ); - - expect(getByTestId('observedUser-data')).toHaveTextContent('Updated Feb 23, 2023'); - }); - - it('renders anomaly score', () => { - const { getByTestId } = render( - - - - ); - - expect(getByTestId('anomaly-score')).toHaveTextContent('17'); - }); -}); diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/risk_score_field.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/risk_score_field.test.tsx deleted file mode 100644 index 48d927c97030c..0000000000000 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/risk_score_field.test.tsx +++ /dev/null @@ -1,46 +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 { render } from '@testing-library/react'; -import React from 'react'; -import { TestProviders } from '../../../../common/mock'; -import { RiskScoreField } from './risk_score_field'; -import { mockRiskScoreState } from './__mocks__'; -import { getEmptyValue } from '../../../../common/components/empty_value'; - -describe('RiskScoreField', () => { - it('renders', () => { - const { getByTestId } = render( - - - - ); - - expect(getByTestId('user-details-risk-score')).toBeInTheDocument(); - expect(getByTestId('user-details-risk-score')).toHaveTextContent('70'); - }); - - it('does not render content when the license is invalid', () => { - const { queryByTestId } = render( - - - - ); - - expect(queryByTestId('user-details-risk-score')).not.toBeInTheDocument(); - }); - - it('renders empty tag when risk score is undefined', () => { - const { getByTestId } = render( - - - - ); - - expect(getByTestId('user-details-risk-score')).toHaveTextContent(getEmptyValue()); - }); -}); diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/risk_score_field.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/risk_score_field.tsx deleted file mode 100644 index fab77b92582f6..0000000000000 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/risk_score_field.tsx +++ /dev/null @@ -1,79 +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 { EuiFlexItem, EuiFlexGroup, useEuiFontSize, useEuiTheme } from '@elastic/eui'; - -import React from 'react'; -import { css } from '@emotion/react'; - -import styled from 'styled-components'; -import * as i18n from './translations'; - -import { RiskScoreEntity } from '../../../../../common/search_strategy'; -import { getEmptyTagValue } from '../../../../common/components/empty_value'; -import { RiskScoreLevel } from '../../../../entity_analytics/components/severity/common'; -import type { RiskScoreState } from '../../../../entity_analytics/api/hooks/use_risk_score'; -import { RiskScoreDocTooltip } from '../../../../overview/components/common'; - -export const TooltipContainer = styled.div` - padding: ${({ theme }) => theme.eui.euiSizeS}; -`; - -export const RiskScoreField = ({ - riskScoreState, -}: { - riskScoreState: RiskScoreState; -}) => { - const { euiTheme } = useEuiTheme(); - const { fontSize: xsFontSize } = useEuiFontSize('xs'); - const { data: userRisk, isAuthorized: isRiskScoreAuthorized } = riskScoreState; - const userRiskData = userRisk && userRisk.length > 0 ? userRisk[0] : undefined; - - if (!isRiskScoreAuthorized) { - return null; - } - - return ( - - - - {i18n.RISK_SCORE} - {': '} - - - {userRiskData ? ( - - - {Math.round(userRiskData.user.risk.calculated_score_norm)} - - - - - - - - - ) : ( - getEmptyTagValue() - )} - - ); -}; diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/translations.ts b/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/translations.ts index ce5e34ce3249b..ebeb5d26cf362 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/translations.ts +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/translations.ts @@ -81,49 +81,6 @@ export const FIELD_COLUMN_TITLE = i18n.translate( } ); -export const USER_ID = i18n.translate('xpack.securitySolution.timeline.userDetails.userIdLabel', { - defaultMessage: 'User ID', -}); - -export const MAX_ANOMALY_SCORE_BY_JOB = i18n.translate( - 'xpack.securitySolution.timeline.userDetails.maxAnomalyScoreByJobLabel', - { - defaultMessage: 'Max anomaly score by job', - } -); - -export const FIRST_SEEN = i18n.translate( - 'xpack.securitySolution.timeline.userDetails.firstSeenLabel', - { - defaultMessage: 'First seen', - } -); - -export const LAST_SEEN = i18n.translate( - 'xpack.securitySolution.timeline.userDetails.lastSeenLabel', - { - defaultMessage: 'Last seen', - } -); - -export const OPERATING_SYSTEM_TITLE = i18n.translate( - 'xpack.securitySolution.timeline.userDetails.hostOsNameLabel', - { - defaultMessage: 'Operating system', - } -); - -export const FAMILY = i18n.translate('xpack.securitySolution.timeline.userDetails.familyLabel', { - defaultMessage: 'Family', -}); - -export const IP_ADDRESSES = i18n.translate( - 'xpack.securitySolution.timeline.userDetails.ipAddressesLabel', - { - defaultMessage: 'IP addresses', - } -); - export const NO_ACTIVE_INTEGRATION_TITLE = i18n.translate( 'xpack.securitySolution.timeline.userDetails.noActiveIntegrationTitle', { @@ -168,13 +125,6 @@ export const CLOSE_BUTTON = i18n.translate( } ); -export const OBSERVED_USER_INSPECT_TITLE = i18n.translate( - 'xpack.securitySolution.timeline.userDetails.observedUserInspectTitle', - { - defaultMessage: 'Observed user', - } -); - export const MANAGED_USER_INSPECT_TITLE = i18n.translate( 'xpack.securitySolution.timeline.userDetails.managedUserInspectTitle', { diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/types.ts b/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/types.ts index edefb6ac75100..721ba17370709 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/types.ts +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/new_user_detail/types.ts @@ -7,44 +7,17 @@ import type { EuiBasicTableColumn } from '@elastic/eui'; import type { SearchTypes } from '../../../../../common/detection_engine/types'; -import type { UserItem } from '../../../../../common/search_strategy'; import type { ManagedUserHits } from '../../../../../common/search_strategy/security_solution/users/managed_details'; -import type { AnomalyTableProviderChildrenProps } from '../../../../common/components/ml/anomaly/anomaly_table_provider'; - -export interface ObservedUserTable { - values: string[] | null | undefined | UserAnomalies; - field: string; -} export interface ManagedUserTable { value: SearchTypes[]; field?: string; } -export type ObservedUsersTableColumns = Array>; export type ManagedUsersTableColumns = Array>; -export interface ObservedUserData { - isLoading: boolean; - details: UserItem; - firstSeen: FirstLastSeenData; - lastSeen: FirstLastSeenData; - anomalies: UserAnomalies; -} - export interface ManagedUserData { isLoading: boolean; data: ManagedUserHits | undefined; isIntegrationEnabled: boolean; } - -export interface FirstLastSeenData { - date: string | null | undefined; - isLoading: boolean; -} - -export interface UserAnomalies { - isLoading: AnomalyTableProviderChildrenProps['isLoadingAnomaliesData']; - anomalies: AnomalyTableProviderChildrenProps['anomaliesData']; - jobNameById: AnomalyTableProviderChildrenProps['jobNameById']; -} diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.test.tsx index 1535b05a97a4f..437f8be9de10c 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.test.tsx @@ -17,6 +17,23 @@ import { StatefulEventContext } from '../../../../../common/components/events_vi import { createTelemetryServiceMock } from '../../../../../common/lib/telemetry/telemetry_service.mock'; const mockedTelemetry = createTelemetryServiceMock(); +const mockUseIsExperimentalFeatureEnabled = jest.fn(); +const mockOpenRightPanel = jest.fn(); + +jest.mock('../../../../../common/hooks/use_experimental_features', () => ({ + useIsExperimentalFeatureEnabled: () => mockUseIsExperimentalFeatureEnabled, +})); + +jest.mock('@kbn/expandable-flyout/src/context', () => { + const original = jest.requireActual('@kbn/expandable-flyout/src/context'); + + return { + ...original, + useExpandableFlyoutContext: () => ({ + openRightPanel: mockOpenRightPanel, + }), + }; +}); jest.mock('react-redux', () => { const origin = jest.requireActual('react-redux'); @@ -197,4 +214,27 @@ describe('HostName', () => { expect(toggleExpandedDetail).not.toHaveBeenCalled(); }); }); + + test('it should open expandable flyout if timeline is not in context and experimental flag is enabled', async () => { + mockUseIsExperimentalFeatureEnabled.mockReturnValue(true); + const context = { + enableHostDetailsFlyout: true, + enableIpDetailsFlyout: true, + timelineID: 'fake-timeline', + tabType: TimelineTabs.query, + }; + const wrapper = mount( + + + + + + ); + + wrapper.find('[data-test-subj="host-details-button"]').last().simulate('click'); + await waitFor(() => { + expect(mockOpenRightPanel).toHaveBeenCalled(); + expect(toggleExpandedDetail).not.toHaveBeenCalled(); + }); + }); }); diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.tsx index 37503f7b905ec..c6b8d4f2d4cd3 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/host_name.tsx @@ -9,9 +9,13 @@ import React, { useCallback, useContext, useMemo } from 'react'; import type { EuiButtonEmpty, EuiButtonIcon } from '@elastic/eui'; import { useDispatch } from 'react-redux'; import { isString } from 'lodash/fp'; +import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; +import { TableId } from '@kbn/securitysolution-data-table'; +import { useIsExperimentalFeatureEnabled } from '../../../../../common/hooks/use_experimental_features'; +import { HostPanelKey } from '../../../../../flyout/entity_details/host_right'; import type { ExpandedDetailType } from '../../../../../../common/types'; import { StatefulEventContext } from '../../../../../common/components/events_viewer/stateful_event_context'; -import { getScopedActions } from '../../../../../helpers'; +import { getScopedActions, isTimelineScope } from '../../../../../helpers'; import { HostDetailsLink } from '../../../../../common/components/links'; import { TimelineId, TimelineTabs } from '../../../../../../common/types/timeline'; import { DefaultDraggable } from '../../../../../common/components/draggables'; @@ -46,6 +50,9 @@ const HostNameComponent: React.FC = ({ title, value, }) => { + const isNewHostDetailsFlyoutEnabled = useIsExperimentalFeatureEnabled('newHostDetailsFlyout'); + const { openRightPanel } = useExpandableFlyoutContext(); + const dispatch = useDispatch(); const eventContext = useContext(StatefulEventContext); const hostName = `${value}`; @@ -58,31 +65,55 @@ const HostNameComponent: React.FC = ({ if (onClick) { onClick(); } + if (eventContext && isInTimelineContext) { const { timelineID, tabType } = eventContext; - const updatedExpandedDetail: ExpandedDetailType = { - panelView: 'hostDetail', - params: { - hostName, - }, - }; - const scopedActions = getScopedActions(timelineID); - if (scopedActions) { - dispatch( - scopedActions.toggleDetailPanel({ - ...updatedExpandedDetail, - id: timelineID, - tabType: tabType as TimelineTabs, - }) - ); - } - if (timelineID === TimelineId.active && tabType === TimelineTabs.query) { - activeTimeline.toggleExpandedDetail({ ...updatedExpandedDetail }); + if (isNewHostDetailsFlyoutEnabled && !isTimelineScope(timelineID)) { + openRightPanel({ + id: HostPanelKey, + params: { + hostName, + contextID: contextId, + scopeId: TableId.alertsOnAlertsPage, + isDraggable, + }, + }); + } else { + const updatedExpandedDetail: ExpandedDetailType = { + panelView: 'hostDetail', + params: { + hostName, + }, + }; + const scopedActions = getScopedActions(timelineID); + if (scopedActions) { + dispatch( + scopedActions.toggleDetailPanel({ + ...updatedExpandedDetail, + id: timelineID, + tabType: tabType as TimelineTabs, + }) + ); + } + + if (timelineID === TimelineId.active && tabType === TimelineTabs.query) { + activeTimeline.toggleExpandedDetail({ ...updatedExpandedDetail }); + } } } }, - [onClick, eventContext, isInTimelineContext, hostName, dispatch] + [ + onClick, + eventContext, + isInTimelineContext, + isNewHostDetailsFlyoutEnabled, + openRightPanel, + hostName, + contextId, + isDraggable, + dispatch, + ] ); // The below is explicitly defined this way as the onClick takes precedence when it and the href are both defined diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 9942bbf4508e3..cbbd515a86e1b 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -32020,7 +32020,6 @@ "xpack.securitySolution.timeline.properties.timelineToggleButtonAriaLabel": "{isOpen, select, false {Ouvrir} true {Fermer} other {Bascule}} la chronologie {title}", "xpack.securitySolution.timeline.saveTimeline.modal.warning.title": "Vous avez une {timeline} non enregistrée. Voulez-vous l'enregistrer ?", "xpack.securitySolution.timeline.searchBoxPlaceholder": "par ex. nom ou description de {timeline}", - "xpack.securitySolution.timeline.userDetails.observedUserUpdatedTime": "Mis à jour {time}", "xpack.securitySolution.timeline.userDetails.updatedTime": "Mis à jour {time}", "xpack.securitySolution.timeline.youAreInAnEventRendererScreenReaderOnly": "Vous êtes dans un outil de rendu d'événement pour la ligne : {row}. Appuyez sur la touche fléchée vers le haut pour quitter et revenir à la ligne en cours, ou sur la touche fléchée vers le bas pour quitter et passer à la ligne suivante.", "xpack.securitySolution.timeline.youAreInATableCellScreenReaderOnly": "Vous êtes dans une cellule de tableau. Ligne : {row}, colonne : {column}", @@ -36361,25 +36360,17 @@ "xpack.securitySolution.timeline.userDetails.addExternalIntegrationButton": "Ajouter des intégrations externes", "xpack.securitySolution.timeline.userDetails.closeButton": "fermer", "xpack.securitySolution.timeline.userDetails.failManagedUserDescription": "Impossible de lancer la recherche sur des données gérées par l'utilisateur", - "xpack.securitySolution.timeline.userDetails.familyLabel": "Famille", "xpack.securitySolution.timeline.userDetails.fieldColumnTitle": "Champ", - "xpack.securitySolution.timeline.userDetails.firstSeenLabel": "Vu en premier", - "xpack.securitySolution.timeline.userDetails.hostOsNameLabel": "Système d'exploitation", - "xpack.securitySolution.timeline.userDetails.ipAddressesLabel": "Adresses IP", - "xpack.securitySolution.timeline.userDetails.lastSeenLabel": "Vu en dernier", "xpack.securitySolution.timeline.userDetails.managedBadge": "GÉRÉ", "xpack.securitySolution.timeline.userDetails.managedDataTitle": "Données gérées", "xpack.securitySolution.timeline.userDetails.managedUserInspectTitle": "Géré par l'utilisateur", - "xpack.securitySolution.timeline.userDetails.maxAnomalyScoreByJobLabel": "Score maximal d'anomalie par tâche", "xpack.securitySolution.timeline.userDetails.noActiveIntegrationText": "Les intégrations externes peuvent fournir des métadonnées supplémentaires et vous aider à gérer les utilisateurs.", "xpack.securitySolution.timeline.userDetails.noActiveIntegrationTitle": "Vous n'avez aucune intégration active.", "xpack.securitySolution.timeline.userDetails.noAzureDataText": "Si vous vous attendiez à voir des métadonnées pour cet utilisateur, assurez-vous d'avoir correctement configuré vos intégrations.", "xpack.securitySolution.timeline.userDetails.noAzureDataTitle": "Métadonnées introuvables pour cet utilisateur", "xpack.securitySolution.timeline.userDetails.observedBadge": "OBSERVÉ", "xpack.securitySolution.timeline.userDetails.observedDataTitle": "Données observées", - "xpack.securitySolution.timeline.userDetails.observedUserInspectTitle": "Utilisateur observé", "xpack.securitySolution.timeline.userDetails.riskScoreLabel": "Score de risque", - "xpack.securitySolution.timeline.userDetails.userIdLabel": "ID utilisateur", "xpack.securitySolution.timeline.userDetails.userLabel": "Utilisateur", "xpack.securitySolution.timeline.userDetails.valuesColumnTitle": "Valeurs", "xpack.securitySolution.timelineEvents.errorSearchDescription": "Une erreur s'est produite lors de la recherche d'événements de la chronologie", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index d569cab16ee93..f0575cc0496fb 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -32019,7 +32019,6 @@ "xpack.securitySolution.timeline.properties.timelineToggleButtonAriaLabel": "タイムライン\"{title}\"を{isOpen, select, false {開く} true {閉じる} other {切り替え}}", "xpack.securitySolution.timeline.saveTimeline.modal.warning.title": "保存されていない{timeline}があります。保存しますか?", "xpack.securitySolution.timeline.searchBoxPlaceholder": "例:{timeline}名または説明", - "xpack.securitySolution.timeline.userDetails.observedUserUpdatedTime": "{time}を更新しました", "xpack.securitySolution.timeline.userDetails.updatedTime": "{time}を更新しました", "xpack.securitySolution.timeline.youAreInAnEventRendererScreenReaderOnly": "行{row}のイベントレンダラーを表示しています。上矢印キーを押すと、終了して現在の行に戻ります。下矢印キーを押すと、終了して次の行に進みます。", "xpack.securitySolution.timeline.youAreInATableCellScreenReaderOnly": "表セルの行{row}、列{column}にいます", @@ -36360,25 +36359,17 @@ "xpack.securitySolution.timeline.userDetails.addExternalIntegrationButton": "外部統合を追加", "xpack.securitySolution.timeline.userDetails.closeButton": "閉じる", "xpack.securitySolution.timeline.userDetails.failManagedUserDescription": "ユーザーが管理するデータで検索を実行できませんでした", - "xpack.securitySolution.timeline.userDetails.familyLabel": "ファミリー", "xpack.securitySolution.timeline.userDetails.fieldColumnTitle": "フィールド", - "xpack.securitySolution.timeline.userDetails.firstSeenLabel": "初回の認識", - "xpack.securitySolution.timeline.userDetails.hostOsNameLabel": "オペレーティングシステム", - "xpack.securitySolution.timeline.userDetails.ipAddressesLabel": "IP アドレス", - "xpack.securitySolution.timeline.userDetails.lastSeenLabel": "前回の認識", "xpack.securitySolution.timeline.userDetails.managedBadge": "管理対象", "xpack.securitySolution.timeline.userDetails.managedDataTitle": "管理対象のデータ", "xpack.securitySolution.timeline.userDetails.managedUserInspectTitle": "管理対象のユーザー", - "xpack.securitySolution.timeline.userDetails.maxAnomalyScoreByJobLabel": "ジョブ別の最高異常スコア", "xpack.securitySolution.timeline.userDetails.noActiveIntegrationText": "外部統合は追加のメタデータを提供し、ユーザーの管理を支援できます。", "xpack.securitySolution.timeline.userDetails.noActiveIntegrationTitle": "アクティブな統合がありません", "xpack.securitySolution.timeline.userDetails.noAzureDataText": "このユーザーのメタデータが表示されることが想定される場合は、統合を正しく構成したことを確認してください。", "xpack.securitySolution.timeline.userDetails.noAzureDataTitle": "このユーザーのメタデータが見つかりません", "xpack.securitySolution.timeline.userDetails.observedBadge": "観測済み", "xpack.securitySolution.timeline.userDetails.observedDataTitle": "観測されたデータ", - "xpack.securitySolution.timeline.userDetails.observedUserInspectTitle": "観測されたユーザー", "xpack.securitySolution.timeline.userDetails.riskScoreLabel": "リスクスコア", - "xpack.securitySolution.timeline.userDetails.userIdLabel": "ユーザーID", "xpack.securitySolution.timeline.userDetails.userLabel": "ユーザー", "xpack.securitySolution.timeline.userDetails.valuesColumnTitle": "値", "xpack.securitySolution.timelineEvents.errorSearchDescription": "タイムラインイベント検索でエラーが発生しました", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 06fe50fdae469..2a5c081a8d014 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -32001,7 +32001,6 @@ "xpack.securitySolution.timeline.properties.timelineToggleButtonAriaLabel": "{isOpen, select, false {打开} true {关闭} other {切换}}时间线 {title}", "xpack.securitySolution.timeline.saveTimeline.modal.warning.title": "您的 {timeline} 未保存。是否保存?", "xpack.securitySolution.timeline.searchBoxPlaceholder": "例如 {timeline} 名称或描述", - "xpack.securitySolution.timeline.userDetails.observedUserUpdatedTime": "已更新 {time}", "xpack.securitySolution.timeline.userDetails.updatedTime": "已更新 {time}", "xpack.securitySolution.timeline.youAreInAnEventRendererScreenReaderOnly": "您正处于第 {row} 行的事件呈现器中。按向上箭头键退出并返回当前行,或按向下箭头键退出并前进到下一行。", "xpack.securitySolution.timeline.youAreInATableCellScreenReaderOnly": "您处在表单元格中。行:{row},列:{column}", @@ -36342,25 +36341,17 @@ "xpack.securitySolution.timeline.userDetails.addExternalIntegrationButton": "添加外部集成", "xpack.securitySolution.timeline.userDetails.closeButton": "关闭", "xpack.securitySolution.timeline.userDetails.failManagedUserDescription": "无法对用户托管数据执行搜索", - "xpack.securitySolution.timeline.userDetails.familyLabel": "系列", "xpack.securitySolution.timeline.userDetails.fieldColumnTitle": "字段", - "xpack.securitySolution.timeline.userDetails.firstSeenLabel": "首次看到时间", - "xpack.securitySolution.timeline.userDetails.hostOsNameLabel": "操作系统", - "xpack.securitySolution.timeline.userDetails.ipAddressesLabel": "IP 地址", - "xpack.securitySolution.timeline.userDetails.lastSeenLabel": "最后看到时间", "xpack.securitySolution.timeline.userDetails.managedBadge": "托管", "xpack.securitySolution.timeline.userDetails.managedDataTitle": "托管数据", "xpack.securitySolution.timeline.userDetails.managedUserInspectTitle": "托管用户", - "xpack.securitySolution.timeline.userDetails.maxAnomalyScoreByJobLabel": "最大异常分数(按作业)", "xpack.securitySolution.timeline.userDetails.noActiveIntegrationText": "外部集成可提供其他元数据并帮助您管理用户。", "xpack.securitySolution.timeline.userDetails.noActiveIntegrationTitle": "您没有任何活动集成", "xpack.securitySolution.timeline.userDetails.noAzureDataText": "如果计划查看此用户的元数据,请确保已正确配置集成。", "xpack.securitySolution.timeline.userDetails.noAzureDataTitle": "找不到此用户的元数据", "xpack.securitySolution.timeline.userDetails.observedBadge": "已观察", "xpack.securitySolution.timeline.userDetails.observedDataTitle": "观察数据", - "xpack.securitySolution.timeline.userDetails.observedUserInspectTitle": "已观察用户", "xpack.securitySolution.timeline.userDetails.riskScoreLabel": "风险分数", - "xpack.securitySolution.timeline.userDetails.userIdLabel": "用户 ID", "xpack.securitySolution.timeline.userDetails.userLabel": "用户", "xpack.securitySolution.timeline.userDetails.valuesColumnTitle": "值", "xpack.securitySolution.timelineEvents.errorSearchDescription": "搜索时间线事件时发生错误", From e4cac3725f50ab16d1c8df543a4fd0e3fde1e843 Mon Sep 17 00:00:00 2001 From: Alexi Doak <109488926+doakalexi@users.noreply.github.com> Date: Thu, 4 Jan 2024 07:03:52 -0800 Subject: [PATCH 112/323] [ResponseOps][Alerting] Update the size of the input labels for the ES query and index threshold rule (#174137) Resolves https://github.com/elastic/kibana/issues/173857 ## Summary Updates the size of the input labels for the ES query and index threshold rules. It is helpful to hide whitespace when reviewing the code changes. **KQL** Screen Shot 2024-01-03 at 10 03 36 AM **Query DSL** Screen Shot 2024-01-03 at 10 04 06 AM **ES|QL** Screen Shot 2024-01-03 at 10 04 35 AM **Index Threshold** Screen Shot 2024-01-03 at 10 02 29 AM --- .../components/source_fields_select.tsx | 69 +++++++------- .../expression/es_query_expression.tsx | 95 +++++++++---------- .../expression/esql_query_expression.tsx | 46 ++++----- .../search_source_expression_form.tsx | 27 +++--- .../rule_common_expressions.tsx | 86 ++++++++--------- .../rule_types/threshold/expression.tsx | 95 ++++++++++--------- 6 files changed, 196 insertions(+), 222 deletions(-) diff --git a/x-pack/plugins/stack_alerts/public/rule_types/components/source_fields_select.tsx b/x-pack/plugins/stack_alerts/public/rule_types/components/source_fields_select.tsx index 3cd34a3cd0015..79b2e6ca4ed16 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/components/source_fields_select.tsx +++ b/x-pack/plugins/stack_alerts/public/rule_types/components/source_fields_select.tsx @@ -7,7 +7,7 @@ import React, { useEffect, useState } from 'react'; import { uniqBy } from 'lodash'; -import { EuiComboBox, EuiFormRow, EuiSpacer, EuiTitle } from '@elastic/eui'; +import { EuiComboBox, EuiFormRow } from '@elastic/eui'; import { FieldOption } from '@kbn/triggers-actions-ui-plugin/public/common'; import { IErrorObject } from '@kbn/triggers-actions-ui-plugin/public'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -77,44 +77,39 @@ export const SourceFields: React.FC = ({ fullWidth isInvalid={errors.length > 0 && sourceFields !== undefined} error={errors} + label={ + + } > - <> - -
- -
-
- - 0 && sourceFields !== undefined} + selectedOptions={(sourceFields || []).map((f) => ({ + label: f.label, + value: f.searchPath, + 'data-test-subj': `option-${f.label}`, + }))} + onChange={(options) => { + const fields: SourceField[] = []; + options.forEach((f) => { + if (f.value) { + fields.push({ label: f.label, searchPath: f.value }); } - )} - data-test-subj="sourceFields" - isInvalid={errors.length > 0 && sourceFields !== undefined} - selectedOptions={(sourceFields || []).map((f) => ({ - label: f.label, - value: f.searchPath, - 'data-test-subj': `option-${f.label}`, - }))} - onChange={(options) => { - const fields: SourceField[] = []; - options.forEach((f) => { - if (f.value) { - fields.push({ label: f.label, searchPath: f.value }); - } - }); - onChangeSourceFields(fields); - }} - options={sourceFieldsOptions} - /> - + }); + onChangeSourceFields(fields); + }} + options={sourceFieldsOptions} + /> ) : null; }; diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/es_query_expression.tsx b/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/es_query_expression.tsx index 1cf901ecae8f9..66a1ca82feff5 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/es_query_expression.tsx +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/expression/es_query_expression.tsx @@ -11,7 +11,7 @@ import { lastValueFrom } from 'rxjs'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import { EuiFormRow, EuiLink, EuiSpacer, EuiTitle } from '@elastic/eui'; +import { EuiFormRow, EuiLink, EuiSpacer } from '@elastic/eui'; import { XJson } from '@kbn/es-ui-shared-plugin/public'; import { CodeEditor } from '@kbn/kibana-react-plugin/public'; @@ -195,60 +195,49 @@ export const EsQueryExpression: React.FC< return ( - -
+ -
-
- - - - { - setParam('index', indices); - - // reset expression fields if indices are deleted - if (indices.length === 0) { - setRuleProperty('params', { - timeField: ruleParams.timeField, - index: indices, - esQuery: DEFAULT_VALUES.QUERY, - size: DEFAULT_VALUES.SIZE, - thresholdComparator: DEFAULT_VALUES.THRESHOLD_COMPARATOR, - timeWindowSize: DEFAULT_VALUES.TIME_WINDOW_SIZE, - timeWindowUnit: DEFAULT_VALUES.TIME_WINDOW_UNIT, - threshold: DEFAULT_VALUES.THRESHOLD, - aggType: DEFAULT_VALUES.AGGREGATION_TYPE, - groupBy: DEFAULT_VALUES.GROUP_BY, - termSize: DEFAULT_VALUES.TERM_SIZE, - searchType: SearchType.esQuery, - excludeHitsFromPreviousRun: DEFAULT_VALUES.EXCLUDE_PREVIOUS_HITS, - sourceFields: undefined, - }); - } else { - await refreshEsFields(indices); - } - }} - onTimeFieldChange={(updatedTimeField: string) => setParam('timeField', updatedTimeField)} - /> - + } + > + { + setParam('index', indices); - -
- -
-
+ // reset expression fields if indices are deleted + if (indices.length === 0) { + setRuleProperty('params', { + timeField: ruleParams.timeField, + index: indices, + esQuery: DEFAULT_VALUES.QUERY, + size: DEFAULT_VALUES.SIZE, + thresholdComparator: DEFAULT_VALUES.THRESHOLD_COMPARATOR, + timeWindowSize: DEFAULT_VALUES.TIME_WINDOW_SIZE, + timeWindowUnit: DEFAULT_VALUES.TIME_WINDOW_UNIT, + threshold: DEFAULT_VALUES.THRESHOLD, + aggType: DEFAULT_VALUES.AGGREGATION_TYPE, + groupBy: DEFAULT_VALUES.GROUP_BY, + termSize: DEFAULT_VALUES.TERM_SIZE, + searchType: SearchType.esQuery, + excludeHitsFromPreviousRun: DEFAULT_VALUES.EXCLUDE_PREVIOUS_HITS, + sourceFields: undefined, + }); + } else { + await refreshEsFields(indices); + } + }} + onTimeFieldChange={(updatedTimeField: string) => setParam('timeField', updatedTimeField)} + /> + } + label={ + + } > - -
+ -
-
- - + } + > { @@ -215,20 +215,17 @@ export const EsqlQueryExpression: React.FC< errors={errors.sourceFields} /> - -
- -
-
- 0 && timeField !== undefined} error={errors.timeField} + label={ + + } > - -
- -
-
- - + 0} error={errors.timeWindowSize} + label={ + + } > - -
+ -
-
- - + } + > + +
{Boolean(dataView?.id) && ( <> diff --git a/x-pack/plugins/stack_alerts/public/rule_types/es_query/rule_common_expressions/rule_common_expressions.tsx b/x-pack/plugins/stack_alerts/public/rule_types/es_query/rule_common_expressions/rule_common_expressions.tsx index 313d3f586c73e..c356104ed831f 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/es_query/rule_common_expressions/rule_common_expressions.tsx +++ b/x-pack/plugins/stack_alerts/public/rule_types/es_query/rule_common_expressions/rule_common_expressions.tsx @@ -7,15 +7,7 @@ import React, { useEffect, useState } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; -import { - EuiCheckbox, - EuiFlexGroup, - EuiFlexItem, - EuiFormRow, - EuiIconTip, - EuiSpacer, - EuiTitle, -} from '@elastic/eui'; +import { EuiCheckbox, EuiFormRow, EuiIconTip, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { builtInAggregationTypes, @@ -98,22 +90,23 @@ export const RuleCommonExpressions: React.FC = ({ }, [groupBy]); return ( <> - -

+ {' '} - -

-
- - + />, + , + ]} + > + +
{aggType && builtInAggregationTypes[aggType].fieldRequired ? ( = ({ onChangeWindowUnit={onChangeWindowUnit} /> - - - -
- -
-
-
- + , = ({ defaultMessage: 'Specify the number of documents to pass to the configured actions when the threshold condition is met.', })} - /> - -
- - + />, + ]} + > + +
) : null} - -
+ -
-
- - { - setRuleParams('index', indices); + } + > + { + setRuleParams('index', indices); - // reset expression fields if indices are deleted - if (indices.length === 0) { - setRuleProperty('params', { - ...ruleParams, - index: indices, - aggType: DEFAULT_VALUES.AGGREGATION_TYPE, - termSize: DEFAULT_VALUES.TERM_SIZE, - thresholdComparator: DEFAULT_VALUES.THRESHOLD_COMPARATOR, - timeWindowSize: DEFAULT_VALUES.TIME_WINDOW_SIZE, - timeWindowUnit: DEFAULT_VALUES.TIME_WINDOW_UNIT, - groupBy: DEFAULT_VALUES.GROUP_BY, - threshold: DEFAULT_VALUES.THRESHOLD, - timeField: '', - }); - } else { - await refreshEsFields(indices); + // reset expression fields if indices are deleted + if (indices.length === 0) { + setRuleProperty('params', { + ...ruleParams, + index: indices, + aggType: DEFAULT_VALUES.AGGREGATION_TYPE, + termSize: DEFAULT_VALUES.TERM_SIZE, + thresholdComparator: DEFAULT_VALUES.THRESHOLD_COMPARATOR, + timeWindowSize: DEFAULT_VALUES.TIME_WINDOW_SIZE, + timeWindowUnit: DEFAULT_VALUES.TIME_WINDOW_UNIT, + groupBy: DEFAULT_VALUES.GROUP_BY, + threshold: DEFAULT_VALUES.THRESHOLD, + timeField: '', + }); + } else { + await refreshEsFields(indices); + } + }} + onTimeFieldChange={(updatedTimeField: string) => + setRuleParams('timeField', updatedTimeField) } - }} - onTimeFieldChange={(updatedTimeField: string) => - setRuleParams('timeField', updatedTimeField) - } - /> + /> + - -
+ -
-
- - - setRuleParams('aggType', selectedAggType) } - /> + > + + setRuleParams('aggType', selectedAggType) + } + /> + {aggType && builtInAggregationTypes[aggType].fieldRequired ? ( Date: Thu, 4 Jan 2024 08:17:41 -0700 Subject: [PATCH 113/323] [Dashboard] Update embed mode test screenshot (#174193) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes https://github.com/elastic/kibana/issues/163207 ## Summary This PR updates the embed mode baseline screenshot so that the failing test can be unskipped. This test is, unfortunately, very fragile because the font rendering is prone to changing between Chrome updates - however, there isn't really a better way of checking for rendering issues, so we'll have to continue just updating the baseline whenever a failure happens 🙈 ### Checklist - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [x] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed: - Flaky test runner: https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/4749 ![image](https://github.com/elastic/kibana/assets/8698078/eeb87dca-4542-4333-af8b-58d07a8c911e) ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --- .../apps/dashboard/group5/embed_mode.ts | 3 +-- .../baseline/dashboard_embed_mode.png | Bin 129613 -> 72266 bytes 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/test/functional/apps/dashboard/group5/embed_mode.ts b/test/functional/apps/dashboard/group5/embed_mode.ts index fc7b92ab5fb8d..25eabca77f718 100644 --- a/test/functional/apps/dashboard/group5/embed_mode.ts +++ b/test/functional/apps/dashboard/group5/embed_mode.ts @@ -56,8 +56,7 @@ export default function ({ await browser.setWindowSize(1300, 900); }); - // FLAKY: https://github.com/elastic/kibana/issues/163207 - describe.skip('default URL params', () => { + describe('default URL params', () => { it('hides the chrome', async () => { const globalNavShown = await globalNav.exists(); expect(globalNavShown).to.be(true); diff --git a/test/functional/screenshots/baseline/dashboard_embed_mode.png b/test/functional/screenshots/baseline/dashboard_embed_mode.png index 592cd6c4ff4036976b571165fcda8938f93f9d6d..c96c621a8c45b7ca60504c4165adc5cd600d74f8 100644 GIT binary patch literal 72266 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%0DG6TTpPN@Z-E87z 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
    #)ye8M^&|7sV2JkE< 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 z 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 From 5fa14686e5c6b3edffb338c3029a46a4316fdfca Mon Sep 17 00:00:00 2001 From: Paul Tavares <56442535+paul-tavares@users.noreply.github.com> Date: Thu, 4 Jan 2024 10:22:41 -0500 Subject: [PATCH 114/323] [Security solution][Endpoint] Additional changes to response action APIs in support of SentinelOne (#173882) ## Summary PR makes additional changes to Endpoint (kibana) response action APIs in support of 3rd party EDR systems and support for SentinelOne. Changes include: - `release` response action support for SentinelOne - Action responses for SentinelOne `isolate` and `release` are now written to the responses index (thanks to [this PR](https://github.com/elastic/elasticsearch/pull/103555)) - Action Details and List APIs now return `agentType` and support 3rd party EDR response actions - SentinelOne response actions are now returned and in the expected state (completed) - Added feature usage reporting to response actions client base class (sent when action request is written to ES index) - Added method to SentinelOne actions client to retrieve agent details - Host name for SentinelOne is now stored along with the Action Request document - Refactored action details and action list services to use common methods for: - fetching the action responses from ES - building the `ActionDetails` record for each action - Made several types (mostly around response action responses) to be generic to provided the ability to narrow the `output` type --- .../endpoint_action_generator.ts | 70 ++++-- .../service/response_actions/type_guards.ts | 40 +++ .../common/endpoint/types/actions.ts | 56 ++++- .../common/endpoint/types/index.ts | 1 + .../common/endpoint/types/utility_types.ts | 21 ++ .../endpoint_action_failure_message.tsx | 2 +- .../execute_action_host_response.test.tsx | 18 +- .../execute_action_host_response.tsx | 5 +- .../execute_action.tsx | 20 +- .../components/action_success.tsx | 2 +- .../hooks/use_console_action_submitter.tsx | 30 +-- .../components/endpoint_responder/types.ts | 5 +- .../components/action_log_expanded_tray.tsx | 19 +- .../use_get_action_details.ts | 14 +- .../use_get_automated_action_list.ts | 1 + .../endpoint/common/response_actions.ts | 49 ++-- .../server/endpoint/mocks.ts | 3 +- .../routes/actions/response_actions.test.ts | 3 +- .../routes/actions/response_actions.ts | 4 +- .../endpoint/routes/actions/status.test.ts | 3 + .../actions/action_details_by_id.test.ts | 2 + .../services/actions/action_details_by_id.ts | 70 +----- .../services/actions/action_list.test.ts | 45 ++-- .../endpoint/services/actions/action_list.ts | 55 +---- .../clients/endpoint_actions_client.ts | 11 +- .../services/actions/clients/errors.ts | 4 +- .../get_response_actions_client.test.ts | 3 +- .../lib/base_response_actions_client.test.ts | 36 ++- .../lib/base_response_actions_client.ts | 48 +++- .../services/actions/clients/mocks.ts | 37 +-- .../actions/clients/sentinelone/mock.ts | 177 +++++++++++++ .../sentinel_one_actions_client.test.ts | 143 +++++++++-- .../sentinel_one_actions_client.ts | 120 +++++++-- .../actions/clients/sentinelone/types.ts | 26 ++ .../endpoint/services/actions/create/index.ts | 20 +- .../endpoint/services/actions/create/types.ts | 3 +- .../actions/create/write_action_to_indices.ts | 6 +- .../actions/fetch_action_responses.test.ts | 232 ++++++++++++++++++ .../actions/fetch_action_responses.ts | 89 +++++++ .../server/endpoint/services/actions/mocks.ts | 14 +- .../endpoint/services/actions/utils.test.ts | 150 ++++++++++- .../server/endpoint/services/actions/utils.ts | 90 ++++++- .../services/feature_usage/feature_keys.ts | 48 ++++ .../endpoint/services/feature_usage/index.ts | 2 +- .../endpoint/services/feature_usage/mocks.ts | 2 + .../services/feature_usage/service.ts | 36 +-- .../utils/action_list_helpers.test.ts | 130 +--------- .../endpoint/utils/action_list_helpers.ts | 65 +---- .../endpoint/utils/{dump.ts => stringify.ts} | 2 +- .../endpoint/validators/base_validator.ts | 2 +- 50 files changed, 1448 insertions(+), 586 deletions(-) create mode 100644 x-pack/plugins/security_solution/common/endpoint/service/response_actions/type_guards.ts create mode 100644 x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/mock.ts create mode 100644 x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/types.ts create mode 100644 x-pack/plugins/security_solution/server/endpoint/services/actions/fetch_action_responses.test.ts create mode 100644 x-pack/plugins/security_solution/server/endpoint/services/actions/fetch_action_responses.ts create mode 100644 x-pack/plugins/security_solution/server/endpoint/services/feature_usage/feature_keys.ts rename x-pack/plugins/security_solution/server/endpoint/utils/{dump.ts => stringify.ts} (88%) diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_action_generator.ts b/x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_action_generator.ts index 03f769e34c5d8..f3f9bde438d68 100644 --- a/x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_action_generator.ts +++ b/x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_action_generator.ts @@ -26,6 +26,8 @@ import type { ResponseActionExecuteOutputContent, ResponseActionUploadOutputContent, ResponseActionUploadParameters, + EndpointActionResponseDataOutput, + WithAllKeys, } from '../types'; import { ActivityLogItemTypes } from '../types'; import { @@ -75,9 +77,11 @@ export class EndpointActionGenerator extends BaseDataGenerator { } /** Generates an endpoint action response */ - generateResponse( - overrides: DeepPartial = {} - ): LogsEndpointActionResponse { + generateResponse< + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput + >( + overrides: DeepPartial> = {} + ): LogsEndpointActionResponse { const timeStamp = overrides['@timestamp'] ? new Date(overrides['@timestamp']) : new Date(); const startedAtTimes: number[] = []; @@ -91,7 +95,7 @@ export class EndpointActionGenerator extends BaseDataGenerator { const command = overrides?.EndpointActions?.data?.command ?? this.randomResponseActionCommand(); let output: ActionResponseOutput< ResponseActionGetFileOutputContent | ResponseActionExecuteOutputContent - > = overrides?.EndpointActions?.data?.output as ActionResponseOutput< + > = overrides?.EndpointActions?.data?.output as unknown as ActionResponseOutput< ResponseActionGetFileOutputContent | ResponseActionExecuteOutputContent >; @@ -168,7 +172,7 @@ export class EndpointActionGenerator extends BaseDataGenerator { error: undefined, }, overrides - ); + ) as LogsEndpointActionResponse; } generateResponseEsHit( @@ -180,13 +184,15 @@ export class EndpointActionGenerator extends BaseDataGenerator { } generateActionDetails< - TOutputType extends object = object, + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput, TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes >( - overrides: DeepPartial> = {} - ): ActionDetails { - const details: ActionDetails = { + overrides: DeepPartial> = {} + ): ActionDetails { + const details: WithAllKeys = { + action: '123', agents: ['agent-a'], + agentType: 'endpoint', command: 'isolate', completedAt: '2022-04-30T16:08:47.449Z', hosts: { 'agent-a': { name: 'Host-agent-a' } }, @@ -209,6 +215,9 @@ export class EndpointActionGenerator extends BaseDataGenerator { wasSuccessful: true, }, }, + alertIds: undefined, + ruleId: undefined, + ruleName: undefined, }; const command = overrides.command ?? details.command; @@ -216,7 +225,7 @@ export class EndpointActionGenerator extends BaseDataGenerator { if (command === 'get-file') { if (!details.parameters) { ( - details as ActionDetails< + details as unknown as ActionDetails< ResponseActionGetFileOutputContent, ResponseActionGetFileParameters > @@ -226,14 +235,26 @@ export class EndpointActionGenerator extends BaseDataGenerator { } if (!details.outputs || Object.keys(details.outputs).length === 0) { - details.outputs = { + ( + details as unknown as ActionDetails< + ResponseActionGetFileOutputContent, + ResponseActionGetFileParameters + > + ).outputs = { [details.agents[0]]: { type: 'json', content: { code: 'ra_get-file_success', - path: '/some/file/txt', - size: 1234, zip_size: 123, + contents: [ + { + path: '/some/file/txt', + sha256: '1254', + size: 1234, + file_name: 'some-file.txt', + type: 'file', + }, + ], }, }, }; @@ -243,7 +264,7 @@ export class EndpointActionGenerator extends BaseDataGenerator { if (command === 'execute') { if (!details.parameters) { ( - details as ActionDetails< + details as unknown as ActionDetails< ResponseActionExecuteOutputContent, ResponseActionsExecuteParameters > @@ -256,7 +277,12 @@ export class EndpointActionGenerator extends BaseDataGenerator { } if (!details.outputs || Object.keys(details.outputs).length === 0) { - details.outputs = { + ( + details as unknown as ActionDetails< + ResponseActionExecuteOutputContent, + ResponseActionsExecuteParameters + > + ).outputs = { [details.agents[0]]: this.generateExecuteActionResponseOutput({ content: { output_file_id: getFileDownloadId(details, details.agents[0]), @@ -268,7 +294,7 @@ export class EndpointActionGenerator extends BaseDataGenerator { } if (command === 'upload') { - const uploadActionDetails = details as ActionDetails< + const uploadActionDetails = details as unknown as ActionDetails< ResponseActionUploadOutputContent, ResponseActionUploadParameters >; @@ -293,7 +319,7 @@ export class EndpointActionGenerator extends BaseDataGenerator { } return merge(details, overrides as ActionDetails) as unknown as ActionDetails< - TOutputType, + TOutputContent, TParameters >; } @@ -328,9 +354,11 @@ export class EndpointActionGenerator extends BaseDataGenerator { ); } - generateActivityLogActionResponse( - overrides: DeepPartial - ): EndpointActivityLogActionResponse { + generateActivityLogActionResponse< + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput + >( + overrides: DeepPartial> + ): EndpointActivityLogActionResponse { return merge( { type: ActivityLogItemTypes.RESPONSE, @@ -359,7 +387,7 @@ export class EndpointActionGenerator extends BaseDataGenerator { } generateExecuteActionResponseOutput( - overrides?: Partial>> + overrides?: DeepPartial> ): ActionResponseOutput { return merge( { diff --git a/x-pack/plugins/security_solution/common/endpoint/service/response_actions/type_guards.ts b/x-pack/plugins/security_solution/common/endpoint/service/response_actions/type_guards.ts new file mode 100644 index 0000000000000..7786c9ebb1f57 --- /dev/null +++ b/x-pack/plugins/security_solution/common/endpoint/service/response_actions/type_guards.ts @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { + ActionDetails, + MaybeImmutable, + ResponseActionExecuteOutputContent, + ResponseActionsExecuteParameters, + ResponseActionUploadOutputContent, + ResponseActionUploadParameters, + ResponseActionGetFileOutputContent, + ResponseActionGetFileParameters, +} from '../../types'; + +type SomeObjectWithCommand = Pick; + +export const isUploadAction = ( + action: MaybeImmutable +): action is ActionDetails => { + return action.command === 'upload'; +}; + +export const isExecuteAction = ( + action: MaybeImmutable +): action is ActionDetails< + ResponseActionExecuteOutputContent, + ResponseActionsExecuteParameters +> => { + return action.command === 'execute'; +}; + +export const isGetFileAction = ( + action: MaybeImmutable +): action is ActionDetails => { + return action.command === 'get-file'; +}; diff --git a/x-pack/plugins/security_solution/common/endpoint/types/actions.ts b/x-pack/plugins/security_solution/common/endpoint/types/actions.ts index f2393c02c3b41..9b89954ee6974 100644 --- a/x-pack/plugins/security_solution/common/endpoint/types/actions.ts +++ b/x-pack/plugins/security_solution/common/endpoint/types/actions.ts @@ -23,7 +23,9 @@ import type { export type ISOLATION_ACTIONS = 'isolate' | 'unisolate'; /** The output provided by some of the Endpoint responses */ -export interface ActionResponseOutput { +export interface ActionResponseOutput< + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput +> { type: 'json' | 'text'; content: TOutputContent; } @@ -36,6 +38,7 @@ export interface ProcessesEntry { } export interface GetProcessesActionOutputContent { + code: string; entries: ProcessesEntry[]; } @@ -96,7 +99,7 @@ export const ActivityLogItemTypes = { interface EndpointActionFields< TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes, - TOutputContent extends object = object + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput > { action_id: string; data: EndpointActionData; @@ -146,7 +149,9 @@ export interface LogsEndpointActionWithHosts extends LogsEndpointAction { * An Action response written by the endpoint to the Endpoint `.logs-endpoint.action.responses` datastream * @since v7.16 */ -export interface LogsEndpointActionResponse { +export interface LogsEndpointActionResponse< + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput +> { '@timestamp': string; agent: { id: string | string[]; @@ -155,6 +160,7 @@ export interface LogsEndpointActionResponse, 'comment' | 'command' | 'output'>; + input_type: ResponseActionAgentType; }; error?: EcsError; } @@ -189,9 +195,19 @@ export type EndpointActionDataParameterTypes = | ResponseActionGetFileParameters | ResponseActionUploadParameters; +/** Output content of the different response actions */ +export type EndpointActionResponseDataOutput = + | Record // Empty object + | ResponseActionExecuteOutputContent + | ResponseActionGetFileOutputContent + | ResponseActionUploadOutputContent + | GetProcessesActionOutputContent + | SuspendProcessActionOutputContent + | KillProcessActionOutputContent; + export interface EndpointActionData< TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes, - TOutputContent extends object = object + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput > { command: ResponseActionsApiCommandNames; comment?: string; @@ -226,6 +242,10 @@ export interface EndpointAction extends ActionRequestFields { }; } +/** + * The action response created in Fleet's index after the action has been successfully delivered to + * the endpoint + */ export interface EndpointActionResponse { '@timestamp': string; /** The id of the action for which this response is associated with */ @@ -250,11 +270,13 @@ export interface EndpointActivityLogAction { }; } -export interface EndpointActivityLogActionResponse { +export interface EndpointActivityLogActionResponse< + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput +> { type: typeof ActivityLogItemTypes.RESPONSE; item: { id: string; - data: LogsEndpointActionResponse; + data: LogsEndpointActionResponse; }; } @@ -306,9 +328,11 @@ export interface HostIsolationResponse { } export type ProcessesRequestBody = TypeOf; -export interface ResponseActionApiResponse { +export interface ResponseActionApiResponse< + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput +> { action?: string; - data: ActionDetails; + data: ActionDetails; } export interface EndpointPendingActions { @@ -334,11 +358,17 @@ export interface ActionDetailsAgentState { } export interface ActionDetails< - TOutputContent extends object = object, + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput, TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes > { - /** The action id passed only if returnActionIdCommands contains the command */ + /** + * The action ID. This is a legacy property action and should no longer be used. Only here for + * backwards compatibility + * + * @deprecated + */ action?: string; + /** The action id */ id: string; /** @@ -389,13 +419,15 @@ export interface ActionDetails< alertIds?: string[]; ruleId?: string; ruleName?: string; + /** The agent type to where the response action was sent */ + agentType: ResponseActionAgentType; } export interface ActionDetailsApiResponse< - TOutputType extends object = object, + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput, TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes > { - data: ActionDetails; + data: ActionDetails; } /** Action Details normally returned by Action List API response */ diff --git a/x-pack/plugins/security_solution/common/endpoint/types/index.ts b/x-pack/plugins/security_solution/common/endpoint/types/index.ts index 8f195b926e1f0..4887d83493f5c 100644 --- a/x-pack/plugins/security_solution/common/endpoint/types/index.ts +++ b/x-pack/plugins/security_solution/common/endpoint/types/index.ts @@ -12,6 +12,7 @@ import type { ManifestSchema } from '../schema/manifest'; export * from './actions'; export * from './os'; export * from './trusted_apps'; +export * from './utility_types'; export type { ConditionEntriesMap, ConditionEntry } from './exception_list_items'; /** diff --git a/x-pack/plugins/security_solution/common/endpoint/types/utility_types.ts b/x-pack/plugins/security_solution/common/endpoint/types/utility_types.ts index a70c8e124eb84..2fd25a2cc37d5 100644 --- a/x-pack/plugins/security_solution/common/endpoint/types/utility_types.ts +++ b/x-pack/plugins/security_solution/common/endpoint/types/utility_types.ts @@ -17,3 +17,24 @@ export type PromiseResolvedValue> = T extends Promise = T extends Record ? { -readonly [K in keyof T]: DeepMutable } : T; + +/** + * Ensure that a given type includes all of its key, even if they are optional (value can still be `undefined`) + * + * @example + * interface Foo { + * one?: number; + * two: number; + * } + * const missingKeys: Foo = { two: 2 }; // ok + * + * const shouldHaveAllKeys: WithAllKeys = { two: 2 }; // TS Error + * + * const withAllKeys: WithAllKeys = { + * one: undefined, // All good now + * two: 2 + * } + */ +export type WithAllKeys = { + [k in keyof Required]: T[k]; +}; diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_action_failure_message/endpoint_action_failure_message.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_action_failure_message/endpoint_action_failure_message.tsx index 7e85a0d081ed6..f9f982188ffa4 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_action_failure_message/endpoint_action_failure_message.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_action_failure_message/endpoint_action_failure_message.tsx @@ -13,7 +13,7 @@ import { endpointActionResponseCodes } from '../endpoint_responder/lib/endpoint_ import type { ActionDetails, MaybeImmutable } from '../../../../common/endpoint/types'; interface EndpointActionFailureMessageProps { - action: MaybeImmutable>; + action: MaybeImmutable; 'data-test-subj'?: string; } diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response.test.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response.test.tsx index 04958e60b4de8..a16f1f2007f57 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response.test.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response.test.tsx @@ -10,6 +10,7 @@ import type { ResponseActionExecuteOutputContent, ResponseActionsExecuteParameters, ActionDetails, + DeepMutable, } from '../../../../common/endpoint/types'; import React from 'react'; import { EndpointActionGenerator } from '../../../../common/endpoint/data_generators/endpoint_action_generator'; @@ -23,8 +24,8 @@ import { EXECUTE_OUTPUT_FILE_TRUNCATED_MESSAGE } from './execute_action_host_res describe('When using the `ExecuteActionHostResponse` component', () => { let render: () => ReturnType; let renderResult: ReturnType; - let renderProps: ExecuteActionHostResponseProps; - let action: ActionDetails; + let renderProps: DeepMutable; + let action: DeepMutable['action']; beforeEach(() => { const appTestContext = createAppRootMockRenderer(); @@ -32,7 +33,10 @@ describe('When using the `ExecuteActionHostResponse` component', () => { action = new EndpointActionGenerator('seed').generateActionDetails< ResponseActionExecuteOutputContent, ResponseActionsExecuteParameters - >({ command: 'execute', agents: ['agent-a'] }); + >({ + command: 'execute', + agents: ['agent-a'], + }); renderProps = { action, @@ -92,11 +96,11 @@ describe('When using the `ExecuteActionHostResponse` component', () => { }); it('should show `-` in output accordion when no output content', async () => { - (renderProps.action as ActionDetails).outputs = { + renderProps.action.outputs = { 'agent-a': { type: 'json', content: { - ...(renderProps.action as ActionDetails).outputs?.[action.agents[0]].content, + ...renderProps.action.outputs![action.agents[0]].content, stdout: '', }, }, @@ -109,11 +113,11 @@ describe('When using the `ExecuteActionHostResponse` component', () => { }); it('should NOT show the error accordion when no error content', async () => { - (renderProps.action as ActionDetails).outputs = { + renderProps.action.outputs = { 'agent-a': { type: 'json', content: { - ...(renderProps.action as ActionDetails).outputs?.[action.agents[0]].content, + ...renderProps.action.outputs![action.agents[0]].content, stderr: '', }, }, diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response.tsx index 3c7b5818907ac..43ff3ffca5a62 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_execute_action/execute_action_host_response.tsx @@ -10,13 +10,16 @@ import type { ActionDetails, MaybeImmutable, ResponseActionExecuteOutputContent, + ResponseActionsExecuteParameters, } from '../../../../common/endpoint/types'; import { EXECUTE_FILE_LINK_TITLE } from '../endpoint_response_actions_list/translations'; import { ResponseActionFileDownloadLink } from '../response_action_file_download_link'; import { ExecuteActionHostResponseOutput } from './execute_action_host_response_output'; export interface ExecuteActionHostResponseProps { - action: MaybeImmutable; + action: MaybeImmutable< + ActionDetails + >; agentId?: string; canAccessFileDownloadLink: boolean; 'data-test-subj'?: string; diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/execute_action.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/execute_action.tsx index 8192b6a08b07c..7e19a03860013 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/execute_action.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/execute_action.tsx @@ -11,17 +11,24 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import type { ExecuteActionRequestBody } from '../../../../../common/api/endpoint'; import { useConsoleActionSubmitter } from '../hooks/use_console_action_submitter'; -import type { ResponseActionExecuteOutputContent } from '../../../../../common/endpoint/types'; +import type { + ResponseActionExecuteOutputContent, + ResponseActionsExecuteParameters, +} from '../../../../../common/endpoint/types'; import { useSendExecuteEndpoint } from '../../../hooks/response_actions/use_send_execute_endpoint_request'; import type { ActionRequestComponentProps } from '../types'; import { parsedExecuteTimeout } from '../lib/utils'; import { ExecuteActionHostResponse } from '../../endpoint_execute_action'; export const ExecuteActionResult = memo< - ActionRequestComponentProps<{ - command: string; - timeout?: string; - }> + ActionRequestComponentProps< + { + command: string; + timeout?: string; + }, + ResponseActionExecuteOutputContent, + ResponseActionsExecuteParameters + > >(({ command, setStore, store, status, setStatus, ResultComponent }) => { const actionCreator = useSendExecuteEndpoint(); const actionRequestBody = useMemo(() => { @@ -47,7 +54,8 @@ export const ExecuteActionResult = memo< const { result, actionDetails: completedActionDetails } = useConsoleActionSubmitter< ExecuteActionRequestBody, - ResponseActionExecuteOutputContent + ResponseActionExecuteOutputContent, + ResponseActionsExecuteParameters >({ ResultComponent, setStore, diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/action_success.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/action_success.tsx index 9f7a22ece8721..ff495096dcbf6 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/action_success.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/components/action_success.tsx @@ -11,7 +11,7 @@ import type { ActionDetails, MaybeImmutable } from '../../../../../common/endpoi import type { CommandExecutionResultComponent, CommandExecutionResultProps } from '../../console'; export interface ActionSuccessProps extends CommandExecutionResultProps { - action: MaybeImmutable>; + action: MaybeImmutable; ResultComponent: CommandExecutionResultComponent; } diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/hooks/use_console_action_submitter.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/hooks/use_console_action_submitter.tsx index 519072b0fd258..08c2907dde0e3 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/hooks/use_console_action_submitter.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/hooks/use_console_action_submitter.tsx @@ -22,11 +22,12 @@ import type { Immutable, ResponseActionApiResponse, EndpointActionDataParameterTypes, + EndpointActionResponseDataOutput, } from '../../../../../common/endpoint/types'; import type { CommandExecutionComponentProps } from '../../console'; export interface ConsoleActionSubmitter< - TActionOutputContent extends object = object, + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput, TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes > { /** @@ -34,14 +35,14 @@ export interface ConsoleActionSubmitter< * including pending, error conditions and generic success messages. */ result: JSX.Element; - actionDetails: Immutable> | undefined; + actionDetails: Immutable> | undefined; } /** * Command store state for response action api state. */ export interface CommandResponseActionApiState< - TActionOutputContent extends object = object, + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput, TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes > { actionApiState?: { @@ -50,20 +51,20 @@ export interface CommandResponseActionApiState< actionId: string | undefined; error: IHttpFetchError | undefined; }; - actionDetails: ActionDetails | undefined; + actionDetails: ActionDetails | undefined; actionDetailsError: IHttpFetchError | undefined; }; } export interface UseConsoleActionSubmitterOptions< TReqBody extends BaseActionRequestBody = BaseActionRequestBody, - TActionOutputContent extends object = object, + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput, TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes > extends Pick< CommandExecutionComponentProps< // eslint-disable-next-line @typescript-eslint/no-explicit-any any, - CommandResponseActionApiState + CommandResponseActionApiState >, 'ResultComponent' | 'setStore' | 'store' | 'status' | 'setStatus' > { @@ -99,7 +100,7 @@ export interface UseConsoleActionSubmitterOptions< */ export const useConsoleActionSubmitter = < TReqBody extends BaseActionRequestBody = BaseActionRequestBody, - TActionOutputContent extends object = object, + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput, TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes >({ actionCreator, @@ -112,18 +113,17 @@ export const useConsoleActionSubmitter = < dataTestSubj, pendingMessage, successMessage, -}: UseConsoleActionSubmitterOptions< - TReqBody, - TActionOutputContent, +}: UseConsoleActionSubmitterOptions): ConsoleActionSubmitter< + TOutputContent, TParameters ->): ConsoleActionSubmitter => { +> => { const isMounted = useIsMounted(); const getTestId = useTestIdGenerator(dataTestSubj); const isPending = status === 'pending'; const currentActionState = useMemo< Immutable< - Required>['actionApiState'] + Required>['actionApiState'] > >( () => @@ -147,7 +147,7 @@ export const useConsoleActionSubmitter = < } = currentActionState.request; const { data: apiActionDetailsResponse, error: apiActionDetailsError } = useGetActionDetails< - TActionOutputContent, + TOutputContent, TParameters >(actionId ?? '-', { enabled: Boolean(actionId) && isPending, @@ -158,11 +158,11 @@ export const useConsoleActionSubmitter = < useEffect(() => { if (!actionRequestSent && actionRequestBody && isMounted()) { const updatedRequestState: Required< - CommandResponseActionApiState + CommandResponseActionApiState >['actionApiState']['request'] = { ...( currentActionState as Required< - CommandResponseActionApiState + CommandResponseActionApiState >['actionApiState'] ).request, sent: true, diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/types.ts b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/types.ts index d74cd7948d811..c2277576ff63a 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/types.ts +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/types.ts @@ -10,6 +10,7 @@ import type { ManagedConsoleExtensionComponentProps } from '../console'; import type { HostMetadata, EndpointActionDataParameterTypes, + EndpointActionResponseDataOutput, } from '../../../../common/endpoint/types'; import type { CommandExecutionComponentProps } from '../console/types'; @@ -23,10 +24,10 @@ export type EndpointResponderExtensionComponentProps = ManagedConsoleExtensionCo export type ActionRequestComponentProps< TArgs extends object = object, - TActionOutputContent extends object = object, + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput, TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes > = CommandExecutionComponentProps< { comment?: string } & TArgs, - CommandResponseActionApiState, + CommandResponseActionApiState, EndpointCommandDefinitionMeta >; diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/action_log_expanded_tray.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/action_log_expanded_tray.tsx index b70a74d839bc9..aef96add08813 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/action_log_expanded_tray.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/components/action_log_expanded_tray.tsx @@ -9,6 +9,11 @@ import React, { memo, useMemo } from 'react'; import { EuiCodeBlock, EuiDescriptionList, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { css, euiStyled } from '@kbn/kibana-react-plugin/common'; import { map } from 'lodash'; +import { + isExecuteAction, + isGetFileAction, + isUploadAction, +} from '../../../../../common/endpoint/service/response_actions/type_guards'; import { EndpointUploadActionResult } from '../../endpoint_upload_action_result'; import { useUserPrivileges } from '../../../../common/components/user_privileges'; import { OUTPUT_MESSAGES } from '../translations'; @@ -18,10 +23,6 @@ import { ResponseActionFileDownloadLink } from '../../response_action_file_downl import { ExecuteActionHostResponse } from '../../endpoint_execute_action'; import { getEmptyValue } from '../../../../common/components/empty_value'; -import type { - ResponseActionUploadOutputContent, - ResponseActionUploadParameters, -} from '../../../../../common/endpoint/types'; import { type ActionDetails, type MaybeImmutable } from '../../../../../common/endpoint/types'; const emptyValue = getEmptyValue(); @@ -80,12 +81,6 @@ const StyledEuiFlexGroup = euiStyled(EuiFlexGroup).attrs({ overflow-y: auto; `; -const isUploadAction = ( - action: MaybeImmutable -): action is ActionDetails => { - return action.command === 'upload'; -}; - const OutputContent = memo<{ action: MaybeImmutable; 'data-test-subj'?: string }>( ({ action, 'data-test-subj': dataTestSubj }) => { const getTestId = useTestIdGenerator(dataTestSubj); @@ -122,7 +117,7 @@ const OutputContent = memo<{ action: MaybeImmutable; 'data-test-s return <>{OUTPUT_MESSAGES.hasFailed(command)}; } - if (command === 'get-file') { + if (isGetFileAction(action)) { return ( <> {OUTPUT_MESSAGES.wasSuccessful(command)} @@ -136,7 +131,7 @@ const OutputContent = memo<{ action: MaybeImmutable; 'data-test-s ); } - if (command === 'execute') { + if (isExecuteAction(action)) { return ( {action.agents.map((agentId) => ( diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_action_details.ts b/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_action_details.ts index cf017536762df..01c09da5d9be4 100644 --- a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_action_details.ts +++ b/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_action_details.ts @@ -14,22 +14,26 @@ import { ACTION_DETAILS_ROUTE } from '../../../../common/endpoint/constants'; import type { ActionDetailsApiResponse, EndpointActionDataParameterTypes, + EndpointActionResponseDataOutput, } from '../../../../common/endpoint/types'; export const useGetActionDetails = < - TOutputType extends object = object, + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput, TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes >( actionId: string, - options: UseQueryOptions, IHttpFetchError> = {} -): UseQueryResult, IHttpFetchError> => { + options: UseQueryOptions< + ActionDetailsApiResponse, + IHttpFetchError + > = {} +): UseQueryResult, IHttpFetchError> => { const http = useHttp(); - return useQuery, IHttpFetchError>({ + return useQuery, IHttpFetchError>({ queryKey: ['get-action-details', actionId], ...options, queryFn: () => { - return http.get>( + return http.get>( resolvePathVariables(ACTION_DETAILS_ROUTE, { action_id: actionId.trim() || 'undefined' }), { version: '2023-10-31', diff --git a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_automated_action_list.ts b/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_automated_action_list.ts index dc6832ce04f46..03828cba319c2 100644 --- a/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_automated_action_list.ts +++ b/x-pack/plugins/security_solution/public/management/hooks/response_actions/use_get_automated_action_list.ts @@ -152,6 +152,7 @@ const combineResponse = ( return { id: action.EndpointActions.action_id, agents: action.agent.id as string[], + agentType: 'endpoint', parameters, ...(alertId?.length ? { alertIds: alertId } : {}), ...(rule diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/response_actions.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/response_actions.ts index 8a5c77c2a61b0..c909b6323ad26 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/common/response_actions.ts +++ b/x-pack/plugins/security_solution/scripts/endpoint/common/response_actions.ts @@ -23,6 +23,7 @@ import type { ResponseActionExecuteOutputContent, ResponseActionGetFileOutputContent, ResponseActionGetFileParameters, + EndpointActionResponseDataOutput, } from '../../../common/endpoint/types'; import { getFileDownloadId } from '../../../common/endpoint/service/response_actions/get_file_download_id'; import { @@ -79,18 +80,19 @@ export const sendEndpointActionResponse = async ( action: ActionDetails, { state }: { state?: 'success' | 'failure' } = {} ): Promise => { - const endpointResponse = endpointActionGenerator.generateResponse({ - agent: { id: action.agents[0] }, - EndpointActions: { - action_id: action.id, - data: { - command: action.command as EndpointActionData['command'], - comment: '', - ...getOutputDataIfNeeded(action), + const endpointResponse = + endpointActionGenerator.generateResponse({ + agent: { id: action.agents[0] }, + EndpointActions: { + action_id: action.id, + data: { + command: action.command as EndpointActionData['command'], + comment: '', + ...getOutputDataIfNeeded(action), + }, + started_at: action.startedAt, }, - started_at: action.startedAt, - }, - }); + }); // 20% of the time we generate an error if (state === 'failure' || (state !== 'success' && endpointActionGenerator.randomFloat() < 0.2)) { @@ -103,7 +105,8 @@ export const sendEndpointActionResponse = async ( endpointResponse.EndpointActions.data.output ) { ( - endpointResponse.EndpointActions.data.output.content as ResponseActionGetFileOutputContent + endpointResponse.EndpointActions.data.output + .content as unknown as ResponseActionGetFileOutputContent ).code = endpointActionGenerator.randomGetFileFailureCode(); } @@ -112,7 +115,8 @@ export const sendEndpointActionResponse = async ( endpointResponse.EndpointActions.data.output ) { ( - endpointResponse.EndpointActions.data.output.content as ResponseActionExecuteOutputContent + endpointResponse.EndpointActions.data.output + .content as unknown as ResponseActionExecuteOutputContent ).stderr = 'execute command timed out'; } } @@ -168,7 +172,7 @@ export const sendEndpointActionResponse = async ( ? '/execute/file/path' : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion ( - action as ActionDetails< + action as unknown as ActionDetails< ResponseActionGetFileOutputContent, ResponseActionGetFileParameters > @@ -244,12 +248,11 @@ export const sendEndpointActionResponse = async ( .then(() => sleep(2000)); } - return endpointResponse; + return endpointResponse as unknown as LogsEndpointActionResponse; }; -type ResponseOutput = Pick< - LogsEndpointActionResponse['EndpointActions']['data'], - 'output' ->; +type ResponseOutput< + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput +> = Pick['EndpointActions']['data'], 'output'>; const getOutputDataIfNeeded = (action: ActionDetails): ResponseOutput => { const commentUppercase = (action?.comment ?? '').toUpperCase(); @@ -262,7 +265,7 @@ const getOutputDataIfNeeded = (action: ActionDetails): ResponseOutput => { entries: endpointActionGenerator.randomResponseActionProcesses(100), }, }, - } as ResponseOutput; + } as unknown as ResponseOutput; case 'get-file': return { @@ -275,7 +278,7 @@ const getOutputDataIfNeeded = (action: ActionDetails): ResponseOutput => { { type: 'file', path: ( - action as ActionDetails< + action as unknown as ActionDetails< ResponseActionGetFileOutputContent, ResponseActionGetFileParameters > @@ -287,7 +290,7 @@ const getOutputDataIfNeeded = (action: ActionDetails): ResponseOutput => { ], }, }, - } as ResponseOutput; + } as unknown as ResponseOutput; case 'execute': const executeOutput: Partial = { @@ -309,7 +312,7 @@ const getOutputDataIfNeeded = (action: ActionDetails): ResponseOutput => { output: endpointActionGenerator.generateExecuteActionResponseOutput({ content: executeOutput, }), - } as ResponseOutput; + } as unknown as ResponseOutput; default: return { output: undefined }; diff --git a/x-pack/plugins/security_solution/server/endpoint/mocks.ts b/x-pack/plugins/security_solution/server/endpoint/mocks.ts index 477d1e70be966..55e13b46c7167 100644 --- a/x-pack/plugins/security_solution/server/endpoint/mocks.ts +++ b/x-pack/plugins/security_solution/server/endpoint/mocks.ts @@ -102,6 +102,7 @@ export const createMockEndpointAppContextService = ( const fleetToHostFilesClientMock = createFleetToHostFilesClientMock(); const fleetActionsClientMock = createFleetActionsClientMock(); const loggerFactory = loggingSystemMock.create(); + const featureUsageMock = createFeatureUsageServiceMock(); return { start: jest.fn(), @@ -120,7 +121,7 @@ export const createMockEndpointAppContextService = ( getFleetToHostFilesClient: jest.fn(async () => fleetToHostFilesClientMock), setup: jest.fn(), getLicenseService: jest.fn(), - getFeatureUsageService: jest.fn(), + getFeatureUsageService: jest.fn().mockReturnValue(featureUsageMock), getExceptionListsClient: jest.fn(), getMessageSigningService: jest.fn(), getFleetActionsClient: jest.fn(async (_) => fleetActionsClientMock), diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts b/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts index 055ef330cb08f..74f222b64d2b9 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts @@ -73,6 +73,7 @@ import { omit, set } from 'lodash'; import type { ResponseActionAgentType } from '../../../../common/endpoint/service/response_actions/constants'; import { responseActionsClientMock } from '../../services/actions/clients/mocks'; import type { ActionsApiRequestHandlerContext } from '@kbn/actions-plugin/server'; +import { sentinelOneMock } from '../../services/actions/clients/sentinelone/mock'; jest.mock('../../services', () => { const realModule = jest.requireActual('../../services'); @@ -1184,7 +1185,7 @@ describe('Response actions', () => { }; httpHandlerContextMock.actions = Promise.resolve({ - getActionsClient: () => responseActionsClientMock.createConnectorActionsClient(), + getActionsClient: () => sentinelOneMock.createConnectorActionsClient(), } as unknown as jest.Mocked); // Set the esClient to be used in the handler context diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts b/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts index 4e8fdc997572a..0c573b561479f 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts @@ -7,7 +7,7 @@ import type { RequestHandler } from '@kbn/core/server'; import type { TypeOf } from '@kbn/config-schema'; -import { dump } from '../../utils/dump'; +import { stringify } from '../../utils/stringify'; import { getResponseActionsClient } from '../../services'; import type { ResponseActionsClient } from '../../services/actions/clients/lib/types'; import { CustomHttpRequestError } from '../../../utils/custom_http_request_error'; @@ -292,7 +292,7 @@ function responseActionRequestHandler { - logger.debug(`response action [${command}]:\n${dump(req.body)}`); + logger.debug(`response action [${command}]:\n${stringify(req.body)}`); // Note: because our API schemas are defined as module static variables (as opposed to a // `getter` function), we need to include this additional validation here, since diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/status.test.ts b/x-pack/plugins/security_solution/server/endpoint/routes/actions/status.test.ts index 455ef9ec31946..d7b8824745cd0 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/actions/status.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/actions/status.test.ts @@ -36,6 +36,7 @@ import type { } from '../../../../common/endpoint/types'; import { EndpointActionGenerator } from '../../../../common/endpoint/data_generators/endpoint_action_generator'; import { ActionStatusRequestSchema } from '../../../../common/api/endpoint'; +import { AGENT_ACTIONS_RESULTS_INDEX } from '@kbn/fleet-plugin/common'; describe('Endpoint Pending Action Summary API', () => { let endpointAppContextService: EndpointAppContextService; @@ -109,6 +110,8 @@ describe('Endpoint Pending Action Summary API', () => { break; case ACTION_RESPONSE_INDICES.join(): + case AGENT_ACTIONS_RESULTS_INDEX: + case ENDPOINT_ACTION_RESPONSES_INDEX_PATTERN: items.push(...endpointResponses.splice(0, size)); index = ENDPOINT_ACTION_RESPONSES_INDEX_PATTERN; break; diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/action_details_by_id.test.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/action_details_by_id.test.ts index 54d536e314edd..861a8c8870fa4 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/action_details_by_id.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/action_details_by_id.test.ts @@ -66,7 +66,9 @@ describe('When using `getActionDetailsById()', () => { await expect( getActionDetailsById(esClient, endpointAppContextService.getEndpointMetadataService(), '123') ).resolves.toEqual({ + action: '123', agents: ['agent-a'], + agentType: 'endpoint', hosts: { 'agent-a': { name: 'Host-agent-a' } }, command: 'kill-process', completedAt: '2022-04-30T16:08:47.449Z', diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/action_details_by_id.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/action_details_by_id.ts index 8e3d6ddad12b8..7863eb4507e64 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/action_details_by_id.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/action_details_by_id.ts @@ -7,30 +7,33 @@ import type { ElasticsearchClient } from '@kbn/core/server'; +import { fetchActionResponses } from './fetch_action_responses'; import { ENDPOINT_ACTIONS_INDEX } from '../../../../common/endpoint/constants'; import { formatEndpointActionResults, categorizeResponseResults, - getActionCompletionInfo, mapToNormalizedActionRequest, getAgentHostNamesWithIds, - getActionStatus, + createActionDetailsRecord, } from './utils'; import type { ActionDetails, ActivityLogActionResponse, - EndpointActionResponse, EndpointActivityLogAction, EndpointActivityLogActionResponse, LogsEndpointAction, - LogsEndpointActionResponse, } from '../../../../common/endpoint/types'; import { catchAndWrapError } from '../../utils'; import { EndpointError } from '../../../../common/endpoint/errors'; import { NotFoundError } from '../../errors'; -import { ACTION_RESPONSE_INDICES, ACTIONS_SEARCH_PAGE_SIZE } from './constants'; import type { EndpointMetadataService } from '../metadata'; +/** + * Get Action Details for a single action id + * @param esClient + * @param metadataService + * @param actionId + */ export const getActionDetailsById = async ( esClient: ElasticsearchClient, metadataService: EndpointMetadataService, @@ -43,7 +46,7 @@ export const getActionDetailsById = async ( @@ -63,23 +66,7 @@ export const getActionDetailsById = async ( - { - index: ACTION_RESPONSE_INDICES, - size: ACTIONS_SEARCH_PAGE_SIZE, - body: { - query: { - bool: { - filter: [{ term: { action_id: actionId } }], - }, - }, - }, - }, - { ignore: [404] } - ) - .catch(catchAndWrapError), + fetchActionResponses({ esClient, actionIds: [actionId] }).then((response) => response.data), ]); actionRequestsLogEntries = formatEndpointActionResults( @@ -95,8 +82,8 @@ export const getActionDetailsById = async ; + results: allResponseEsHits, + }); } catch (error) { throw new EndpointError(error.message, error); } @@ -113,36 +100,5 @@ export const getActionDetailsById = async ((acc, id) => { - acc[id] = { name: agentsHostInfo[id] ?? '' }; - return acc; - }, {}), - command: normalizedActionRequest.command, - startedAt: normalizedActionRequest.createdAt, - isCompleted, - completedAt, - wasSuccessful, - errors, - isExpired, - status, - outputs, - agentState, - createdBy: normalizedActionRequest.createdBy, - comment: normalizedActionRequest.comment, - parameters: normalizedActionRequest.parameters, - }; - - return actionDetails as T; + return createActionDetailsRecord(normalizedActionRequest, actionResponses, agentsHostInfo); }; diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/action_list.test.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/action_list.test.ts index ebf88e6effd2e..70ccd7af8ecb5 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/action_list.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/action_list.test.ts @@ -89,7 +89,9 @@ describe('When using `getActionList()', () => { endDate: undefined, data: [ { + action: '123', agents: ['agent-a'], + agentType: 'endpoint', hosts: { 'agent-a': { name: 'Host-agent-a' } }, command: 'kill-process', completedAt: '2022-04-30T16:08:47.449Z', @@ -110,6 +112,24 @@ describe('When using `getActionList()', () => { wasSuccessful: true, }, }, + outputs: { + 'agent-a': { + content: { + code: 'ra_get-file_success_done', + contents: [ + { + file_name: 'bad_file.txt', + path: '/some/path/bad_file.txt', + sha256: '9558c5cb39622e9b3653203e772b129d6c634e7dbd7af1b244352fc1d704601f', + size: 1234, + type: 'file', + }, + ], + zip_size: 123, + }, + type: 'json', + }, + }, }, ], total: 1, @@ -152,7 +172,9 @@ describe('When using `getActionList()', () => { endDate: undefined, data: [ { + action: '123', agents: ['agent-a'], + agentType: 'endpoint', hosts: { 'agent-a': { name: 'Host-agent-a' } }, command: 'kill-process', completedAt: '2022-04-30T16:08:47.449Z', @@ -246,7 +268,9 @@ describe('When using `getActionList()', () => { statuses: undefined, data: [ { + action: '123', agents: ['agent-a', 'agent-b', 'agent-x'], + agentType: 'endpoint', hosts: { 'agent-a': { name: 'Host-agent-a' }, 'agent-b': { name: 'Host-agent-b' }, @@ -284,6 +308,7 @@ describe('When using `getActionList()', () => { errors: undefined, }, }, + outputs: {}, }, ], total: 1, @@ -319,16 +344,6 @@ describe('When using `getActionList()', () => { { bool: { filter: [ - { - term: { - input_type: 'endpoint', - }, - }, - { - term: { - type: 'INPUT_ACTION', - }, - }, { range: { '@timestamp': { @@ -415,16 +430,6 @@ describe('When using `getActionList()', () => { { bool: { filter: [ - { - term: { - input_type: 'endpoint', - }, - }, - { - term: { - type: 'INPUT_ACTION', - }, - }, { range: { '@timestamp': { diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/action_list.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/action_list.ts index f932eb7df23f9..f33c716da2434 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/action_list.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/action_list.ts @@ -7,20 +7,20 @@ import type { ElasticsearchClient, Logger } from '@kbn/core/server'; import type { SearchTotalHits } from '@elastic/elasticsearch/lib/api/types'; +import { fetchActionResponses } from './fetch_action_responses'; import { ENDPOINT_DEFAULT_PAGE_SIZE } from '../../../../common/endpoint/constants'; import { CustomHttpRequestError } from '../../../utils/custom_http_request_error'; -import type { ActionDetails, ActionListApiResponse } from '../../../../common/endpoint/types'; +import type { ActionListApiResponse } from '../../../../common/endpoint/types'; import type { ResponseActionStatus } from '../../../../common/endpoint/service/response_actions/constants'; -import { getActions, getActionResponses } from '../../utils/action_list_helpers'; +import { getActions } from '../../utils/action_list_helpers'; import { formatEndpointActionResults, categorizeResponseResults, - getActionCompletionInfo, mapToNormalizedActionRequest, getAgentHostNamesWithIds, - getActionStatus, + createActionDetailsRecord, } from './utils'; import type { EndpointMetadataService } from '../metadata'; import { ACTIONS_SEARCH_PAGE_SIZE } from './constants'; @@ -237,11 +237,8 @@ const getActionDetailsList = async ({ // get all responses for given action Ids and agent Ids // and get host metadata info with queried agents [actionResponses, agentsHostInfo] = await Promise.all([ - getActionResponses({ - actionIds: actionReqIds, - elasticAgentIds, - esClient, - }), + fetchActionResponses({ esClient, agentIds: elasticAgentIds, actionIds: actionReqIds }), + await getAgentHostNamesWithIds({ esClient, metadataService, @@ -262,7 +259,7 @@ const getActionDetailsList = async ({ // categorize responses as fleet and endpoint responses const categorizedResponses = categorizeResponseResults({ - results: actionResponses?.body?.hits?.hits, + results: actionResponses.data, }); // compute action details list for each action id @@ -274,41 +271,11 @@ const getActionDetailsList = async ({ : categorizedResponse.item.data.action_id === action.id ); - // find the specific response's details using that set of matching responses - const { isCompleted, completedAt, wasSuccessful, errors, agentState, outputs } = - getActionCompletionInfo(action, matchedResponses); - - const { isExpired, status } = getActionStatus({ - expirationDate: action.expiration, - isCompleted, - wasSuccessful, - }); + const actionRecord = createActionDetailsRecord(action, matchedResponses, agentsHostInfo); - const actionRecord: ActionListApiResponse['data'][number] = { - id: action.id, - agents: action.agents, - hosts: action.agents.reduce((acc, id) => { - acc[id] = { name: agentsHostInfo[id] ?? '' }; - return acc; - }, {}), - command: action.command, - startedAt: action.createdAt, - isCompleted, - completedAt, - wasSuccessful, - errors: action.error?.message ? [action.error.message] : errors, - agentState, - isExpired, - status, - // 8.8 onwards, show outputs only for actions with matching requested action ids - outputs: withOutputs && withOutputs.includes(action.id) ? outputs : undefined, - createdBy: action.createdBy, - comment: action.comment, - parameters: action.parameters, - alertIds: action.alertIds, - ruleId: action.ruleId, - ruleName: action.ruleName, - }; + if (withOutputs && !withOutputs.includes(action.id)) { + delete actionRecord.outputs; + } return actionRecord; }); diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/endpoint_actions_client.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/endpoint_actions_client.ts index a999659f2273a..2acc6dec8f2a2 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/endpoint_actions_client.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/endpoint_actions_client.ts @@ -5,9 +5,12 @@ * 2.0. */ -import { dump } from '../../../utils/dump'; +import { stringify } from '../../../utils/stringify'; import type { HapiReadableStream } from '../../../../types'; -import type { ResponseActionsApiCommandNames } from '../../../../../common/endpoint/service/response_actions/constants'; +import type { + ResponseActionsApiCommandNames, + ResponseActionAgentType, +} from '../../../../../common/endpoint/service/response_actions/constants'; import { updateCases } from '../create/update_cases'; import type { CreateActionPayload } from '../create/types'; import type { @@ -36,6 +39,8 @@ import type { } from '../../../../../common/endpoint/types'; export class EndpointActionsClient extends ResponseActionsClientImpl { + protected readonly agentType: ResponseActionAgentType = 'endpoint'; + private async checkAgentIds(ids: string[]): Promise<{ valid: string[]; invalid: string[]; @@ -83,7 +88,7 @@ export class EndpointActionsClient extends ResponseActionsClientImpl { }); } catch (err) { // failures during update of cases should not cause the response action to fail. Just log error - this.log.warn(`failed to update cases: ${err.message}\n${dump(err)}`); + this.log.warn(`failed to update cases: ${err.message}\n${stringify(err)}`); } return response as TResponse; diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/errors.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/errors.ts index 300f2fa56cade..2e644f9a3a760 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/errors.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/errors.ts @@ -8,7 +8,7 @@ /* eslint-disable max-classes-per-file */ import type { ResponseActionsApiCommandNames } from '../../../../../common/endpoint/service/response_actions/constants'; -import { dump } from '../../../utils/dump'; +import { stringify } from '../../../utils/stringify'; import { CustomHttpRequestError } from '../../../../utils/custom_http_request_error'; /** @@ -25,7 +25,7 @@ export class ResponseActionsClientError extends CustomHttpRequestError { } toString() { - return JSON.stringify(dump(this.toJSON()), null, 2); + return JSON.stringify(stringify(this.toJSON()), null, 2); } } diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/get_response_actions_client.test.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/get_response_actions_client.test.ts index f0cee2a616462..224c8eac855ed 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/get_response_actions_client.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/get_response_actions_client.test.ts @@ -11,6 +11,7 @@ import { RESPONSE_ACTION_AGENT_TYPE } from '../../../../../common/endpoint/servi import { getResponseActionsClient } from '../..'; import { ResponseActionsClientImpl } from './lib/base_response_actions_client'; import { UnsupportedResponseActionsAgentTypeError } from './errors'; +import { sentinelOneMock } from './sentinelone/mock'; describe('getResponseActionsClient()', () => { let options: GetResponseActionsClientConstructorOptions; @@ -18,7 +19,7 @@ describe('getResponseActionsClient()', () => { beforeEach(() => { options = { ...responseActionsClientMock.createConstructorOptions(), - connectorActions: responseActionsClientMock.createConnectorActionsClient(), + connectorActions: sentinelOneMock.createConnectorActionsClient(), }; }); diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts index 7b6d991e28f0b..aaceb2d6aef75 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts @@ -5,6 +5,7 @@ * 2.0. */ +// eslint-disable-next-line max-classes-per-file import type { ResponseActionsClient } from './types'; import type { ResponseActionsClientUpdateCasesOptions, @@ -16,6 +17,7 @@ import type { ActionDetails, LogsEndpointAction, LogsEndpointActionResponse, + EndpointActionResponseDataOutput, } from '../../../../../../common/endpoint/types'; import type { EndpointAppContextService } from '../../../../endpoint_app_context_services'; import type { ElasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; @@ -30,6 +32,8 @@ import { ENDPOINT_ACTIONS_INDEX } from '../../../../../../common/endpoint/consta import type { DeepMutable } from '../../../../../../common/endpoint/types/utility_types'; import { set } from 'lodash'; import { responseActionsClientMock } from '../mocks'; +import type { ResponseActionAgentType } from '../../../../../../common/endpoint/service/response_actions/constants'; +import { getResponseActionFeatureKey } from '../../../feature_usage/feature_keys'; jest.mock('../../action_details_by_id', () => { const original = jest.requireActual('../../action_details_by_id'); @@ -43,6 +47,7 @@ jest.mock('../../action_details_by_id', () => { const getActionDetailsByIdMock = _getActionDetailsById as jest.Mock; describe('ResponseActionsClientImpl base class', () => { + let constructorOptions: ReturnType; let esClient: ElasticsearchClientMock; let endpointAppContextService: EndpointAppContextService; let baseClassMock: MockClassWithExposedProtectedMembers; @@ -50,7 +55,7 @@ describe('ResponseActionsClientImpl base class', () => { let logger: Logger; beforeEach(async () => { - const constructorOptions = responseActionsClientMock.createConstructorOptions(); + constructorOptions = responseActionsClientMock.createConstructorOptions(); esClient = constructorOptions.esClient; casesClient = constructorOptions.casesClient; @@ -361,14 +366,29 @@ describe('ResponseActionsClientImpl base class', () => { await expect( baseClassMock.writeActionRequestToEndpointIndex(indexDocOptions) ).resolves.toEqual(expectedIndexDoc); + + expect(endpointAppContextService.getFeatureUsageService().notifyUsage).toHaveBeenCalledWith( + getResponseActionFeatureKey(indexDocOptions.command) + ); + }); + + it('should notify feature usage', async () => { + await baseClassMock.writeActionRequestToEndpointIndex(indexDocOptions); + + expect(endpointAppContextService.getFeatureUsageService().notifyUsage).toHaveBeenCalledWith( + getResponseActionFeatureKey(indexDocOptions.command) + ); }); it('should set `EndpointActions.input_type` to the correct value', async () => { + const baseClassMock2 = new (class extends MockClassWithExposedProtectedMembers { + protected readonly agentType = 'sentinel_one'; + })(constructorOptions); indexDocOptions.agent_type = 'sentinel_one'; set(expectedIndexDoc, 'EndpointActions.input_type', 'sentinel_one'); await expect( - baseClassMock.writeActionRequestToEndpointIndex(indexDocOptions) + baseClassMock2.writeActionRequestToEndpointIndex(indexDocOptions) ).resolves.toEqual(expectedIndexDoc); }); @@ -457,12 +477,14 @@ describe('ResponseActionsClientImpl base class', () => { '@timestamp': expect.any(String), EndpointActions: { action_id: '1-2-3', + input_type: 'endpoint', completed_at: expect.any(String), + started_at: expect.any(String), data: { command: 'isolate', comment: 'some comment', + output: undefined, }, - started_at: expect.any(String), }, agent: { id: '123', @@ -470,7 +492,7 @@ describe('ResponseActionsClientImpl base class', () => { error: { message: 'test error', }, - }); + } as LogsEndpointActionResponse); }); it('should throw ResponseActionsClientError if operation fails', async () => { @@ -491,6 +513,8 @@ describe('ResponseActionsClientImpl base class', () => { }); class MockClassWithExposedProtectedMembers extends ResponseActionsClientImpl { + protected readonly agentType: ResponseActionAgentType = 'endpoint'; + public async updateCases(options: ResponseActionsClientUpdateCasesOptions): Promise { return super.updateCases(options); } @@ -507,7 +531,9 @@ class MockClassWithExposedProtectedMembers extends ResponseActionsClientImpl { return super.writeActionRequestToEndpointIndex(actionRequest); } - public async writeActionResponseToEndpointIndex( + public async writeActionResponseToEndpointIndex< + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput + >( options: ResponseActionsClientWriteActionResponseToEndpointIndexOptions ): Promise> { return super.writeActionResponseToEndpointIndex(options); diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts index cea80bd3f9bcd..68e8db5fa1e69 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts @@ -13,7 +13,10 @@ import { AttachmentType } from '@kbn/cases-plugin/common'; import type { BulkCreateArgs } from '@kbn/cases-plugin/server/client/attachments/types'; import type { EndpointAppContextService } from '../../../../endpoint_app_context_services'; import { APP_ID } from '../../../../../../common'; -import type { ResponseActionsApiCommandNames } from '../../../../../../common/endpoint/service/response_actions/constants'; +import type { + ResponseActionsApiCommandNames, + ResponseActionAgentType, +} from '../../../../../../common/endpoint/service/response_actions/constants'; import { getActionDetailsById } from '../../action_details_by_id'; import { ResponseActionsClientError, ResponseActionsNotSupportedError } from '../errors'; import { @@ -42,6 +45,7 @@ import type { LogsEndpointAction, EndpointActionDataParameterTypes, LogsEndpointActionResponse, + EndpointActionResponseDataOutput, } from '../../../../../../common/endpoint/types'; import type { IsolationRouteRequestBody, @@ -52,7 +56,7 @@ import type { ResponseActionsRequestBody, } from '../../../../../../common/api/endpoint'; import type { CreateActionPayload } from '../../create/types'; -import { dump } from '../../../../utils/dump'; +import { stringify } from '../../../../utils/stringify'; export interface ResponseActionsClientOptions { endpointService: EndpointAppContextService; @@ -82,7 +86,7 @@ export type ResponseActionsClientWriteActionRequestToEndpointIndexOptions = Pick; export type ResponseActionsClientWriteActionResponseToEndpointIndexOptions< - TOutputContent extends object = object + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput > = { agentId: LogsEndpointActionResponse['agent']['id']; actionId: string; @@ -92,9 +96,11 @@ export type ResponseActionsClientWriteActionResponseToEndpointIndexOptions< /** * Base class for a Response Actions client */ -export class ResponseActionsClientImpl implements ResponseActionsClient { +export abstract class ResponseActionsClientImpl implements ResponseActionsClient { protected readonly log: Logger; + protected abstract readonly agentType: ResponseActionAgentType; + constructor(protected readonly options: ResponseActionsClientOptions) { this.log = options.endpointService.createLogger( this.constructor.name ?? 'ResponseActionsClient' @@ -158,7 +164,7 @@ export class ResponseActionsClientImpl implements ResponseActionsClient { return; } - this.log.debug(`Updating cases:\n${dump(allCases)}`); + this.log.debug(`Updating cases:\n${stringify(allCases)}`); // Create an attachment for each case that includes info. about the response actions taken against the hosts const attachments = allCases.map(() => ({ @@ -181,14 +187,14 @@ export class ResponseActionsClientImpl implements ResponseActionsClient { .catch((err) => { // Log any error, BUT: do not fail execution this.log.warn( - `Attempt to update case ID [${caseId}] failed: ${err.message}\n${dump(err)}` + `Attempt to update case ID [${caseId}] failed: ${err.message}\n${stringify(err)}` ); return null; }) ) ); - this.log.debug(`Update to cases done:\n${dump(casesUpdateResponse)}`); + this.log.debug(`Update to cases done:\n${stringify(casesUpdateResponse)}`); } /** @@ -213,6 +219,8 @@ export class ResponseActionsClientImpl implements ResponseActionsClient { protected async writeActionRequestToEndpointIndex( actionRequest: ResponseActionsClientWriteActionRequestToEndpointIndexOptions ): Promise { + this.notifyUsage(actionRequest.command); + const doc: LogsEndpointAction = { '@timestamp': new Date().toISOString(), agent: { @@ -222,7 +230,7 @@ export class ResponseActionsClientImpl implements ResponseActionsClient { action_id: uuidv4(), expiration: getActionRequestExpiration(), type: 'INPUT_ACTION', - input_type: actionRequest.agent_type ?? 'endpoint', + input_type: this.agentType, data: { command: actionRequest.command, comment: actionRequest.comment ?? undefined, @@ -274,7 +282,10 @@ export class ResponseActionsClientImpl implements ResponseActionsClient { * @param options * @protected */ - protected async writeActionResponseToEndpointIndex({ + protected async writeActionResponseToEndpointIndex< + // Default type purposely set to empty object in order to ensure proper types are used when calling the method + TOutputContent extends EndpointActionResponseDataOutput = Record + >({ actionId, error, agentId, @@ -290,6 +301,7 @@ export class ResponseActionsClientImpl implements ResponseActionsClient { }, EndpointActions: { action_id: actionId, + input_type: this.agentType, started_at: timestamp, completed_at: timestamp, data, @@ -297,10 +309,10 @@ export class ResponseActionsClientImpl implements ResponseActionsClient { error, }; - this.log.debug(`Writing response action response:\n${dump(doc)}`); + this.log.debug(`Writing response action response:\n${stringify(doc)}`); await this.options.esClient - .index({ + .index>({ index: ENDPOINT_ACTION_RESPONSES_INDEX, document: doc, refresh: 'wait_for', @@ -316,6 +328,20 @@ export class ResponseActionsClientImpl implements ResponseActionsClient { return doc; } + protected notifyUsage(responseAction: ResponseActionsApiCommandNames): void { + const usageService = this.options.endpointService.getFeatureUsageService(); + const featureKey = usageService.getResponseActionFeatureKey(responseAction); + + if (!featureKey) { + this.log.warn( + `Response action [${responseAction}] does not have a usage feature key defined!` + ); + return; + } + + usageService.notifyUsage(featureKey); + } + public async isolate(options: IsolationRouteRequestBody): Promise { throw new ResponseActionsNotSupportedError('isolate'); } diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/mocks.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/mocks.ts index 27773a898b932..2523765e5f450 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/mocks.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/mocks.ts @@ -5,10 +5,8 @@ * 2.0. */ -import type { ActionsClientMock } from '@kbn/actions-plugin/server/actions_client/actions_client.mock'; import { actionsClientMock } from '@kbn/actions-plugin/server/actions_client/actions_client.mock'; import type { ConnectorWithExtraFindData } from '@kbn/actions-plugin/server/application/connector/types'; -import { SENTINELONE_CONNECTOR_ID } from '@kbn/stack-connectors-plugin/common/sentinelone/constants'; import type { DeepPartial } from 'utility-types'; import type { ActionTypeExecutorResult } from '@kbn/actions-plugin/common'; import type { ElasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; @@ -138,29 +136,6 @@ const createIsolateOptionsMock = ( return merge(isolateOptions, overrides); }; -const createConnectorActionsClientMock = (): ActionsClientMock => { - const client = actionsClientMock.create(); - - // Mock result of retrieving list of connectors - (client.getAll as jest.Mock).mockImplementation(async () => { - const result: ConnectorWithExtraFindData[] = [ - // SentinelOne connector - createConnectorMock({ - actionTypeId: SENTINELONE_CONNECTOR_ID, - id: 's1-connector-instance-id', - }), - ]; - - return result; - }); - - (client.execute as jest.Mock).mockImplementation(async () => { - return createConnectorAcitonExecuteResponseMock(); - }); - - return client; -}; - const createConnectorMock = ( overrides: DeepPartial = {} ): ConnectorWithExtraFindData => { @@ -180,10 +155,10 @@ const createConnectorMock = ( ); }; -const createConnectorAcitonExecuteResponseMock = ( - overrides: DeepPartial> = {} +const createConnectorActionExecuteResponseMock = ( + overrides: DeepPartial> = {} ): ActionTypeExecutorResult<{}> => { - const result: ActionTypeExecutorResult<{}> = { + const result: ActionTypeExecutorResult = { actionId: 'execute-response-mock-1', data: undefined, message: 'some mock message', @@ -199,11 +174,13 @@ export const responseActionsClientMock = Object.freeze({ createConstructorOptions: createConstructorOptionsMock, createIsolateOptions: createIsolateOptionsMock, createReleaseOptions: createIsolateOptionsMock, + // TODO:PT add more methods to get option mocks for other class methods createIndexedResponse: createEsIndexTransportResponseMock, - createConnectorActionsClient: createConnectorActionsClientMock, + // Some common mocks when working with connector actions + createConnectorActionsClient: actionsClientMock.create, createConnector: createConnectorMock, - createConnectorActionExecuteResponse: createConnectorAcitonExecuteResponseMock, + createConnectorActionExecuteResponse: createConnectorActionExecuteResponseMock, }); diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/mock.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/mock.ts new file mode 100644 index 0000000000000..48a6ace18adc5 --- /dev/null +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/mock.ts @@ -0,0 +1,177 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 { SentinelOneGetAgentsResponse } from '@kbn/stack-connectors-plugin/common/sentinelone/types'; +import { + SENTINELONE_CONNECTOR_ID, + SUB_ACTION, +} from '@kbn/stack-connectors-plugin/common/sentinelone/constants'; +import type { ActionsClientMock } from '@kbn/actions-plugin/server/actions_client/actions_client.mock'; +import type { ConnectorWithExtraFindData } from '@kbn/actions-plugin/server/application/connector/types'; +import type { ResponseActionsClientOptionsMock } from '../mocks'; +import { responseActionsClientMock } from '../mocks'; + +export interface SentinelOneActionsClientOptionsMock extends ResponseActionsClientOptionsMock { + connectorActions: ActionsClientMock; +} + +const createSentinelOneGetAgentsApiResponseMock = (): SentinelOneGetAgentsResponse => { + return { + pagination: { + nextCursor: 'next-0', + totalItems: 1, + }, + errors: null, + data: [ + { + accountId: '11111111111', + accountName: 'Elastic', + groupUpdatedAt: null, + policyUpdatedAt: null, + activeDirectory: { + computerDistinguishedName: null, + computerMemberOf: [], + lastUserDistinguishedName: null, + lastUserMemberOf: [], + userPrincipalName: null, + mail: null, + }, + activeThreats: 0, + agentVersion: '23.3.2.12', + allowRemoteShell: true, + appsVulnerabilityStatus: 'not_applicable', + cloudProviders: {}, + computerName: 'sentinelone-1460', + consoleMigrationStatus: 'N/A', + coreCount: 1, + cpuCount: 1, + cpuId: 'ARM Cortex-A72', + createdAt: '2023-12-21T20:32:52.290978Z', + detectionState: null, + domain: 'unknown', + encryptedApplications: false, + externalId: '', + externalIp: '108.77.84.191', + firewallEnabled: true, + firstFullModeTime: null, + fullDiskScanLastUpdatedAt: '2023-12-21T20:57:55.690655Z', + groupId: '9999999999999', + groupIp: '108.77.84.x', + groupName: 'Default Group', + id: '1845174760470303882', + inRemoteShellSession: false, + infected: false, + installerType: '.deb', + isActive: true, + isDecommissioned: false, + isPendingUninstall: false, + isUninstalled: false, + isUpToDate: true, + lastActiveDate: '2023-12-26T21:34:28.032981Z', + lastIpToMgmt: '192.168.64.2', + lastLoggedInUserName: '', + licenseKey: '', + locationEnabled: false, + locationType: 'not_supported', + locations: null, + machineType: 'server', + mitigationMode: 'detect', + mitigationModeSuspicious: 'detect', + modelName: 'QEMU QEMU Virtual Machine', + networkInterfaces: [ + { + gatewayIp: '192.168.64.1', + gatewayMacAddress: 'be:d0:74:50:d8:64', + id: '1845174760470303883', + inet: ['192.168.64.2'], + inet6: ['fdf4:f033:b1d4:8c51:5054:ff:febc:6253'], + name: 'enp0s1', + physical: '52:54:00:BC:62:53', + }, + ], + networkQuarantineEnabled: false, + networkStatus: 'connecting', + operationalState: 'na', + operationalStateExpiration: null, + osArch: '64 bit', + osName: 'Linux', + osRevision: 'Ubuntu 22.04.3 LTS 5.15.0-91-generic', + osStartTime: '2023-12-21T20:31:51Z', + osType: 'linux', + osUsername: 'root', + rangerStatus: 'Enabled', + rangerVersion: '23.4.0.9', + registeredAt: '2023-12-21T20:32:52.286752Z', + remoteProfilingState: 'disabled', + remoteProfilingStateExpiration: null, + scanAbortedAt: null, + scanFinishedAt: '2023-12-21T20:57:55.690655Z', + scanStartedAt: '2023-12-21T20:33:31.170460Z', + scanStatus: 'finished', + serialNumber: null, + showAlertIcon: false, + siteId: '88888888888', + siteName: 'Default site', + storageName: null, + storageType: null, + tags: { sentinelone: [] }, + threatRebootRequired: false, + totalMemory: 1966, + updatedAt: '2023-12-26T21:35:35.986596Z', + userActionsNeeded: [], + uuid: 'a2f4603d-c9e2-d7a2-bec2-0d646f3bbc9f', + }, + ], + }; +}; + +const createConnectorActionsClientMock = (): ActionsClientMock => { + const client = responseActionsClientMock.createConnectorActionsClient(); + + (client.getAll as jest.Mock).mockImplementation(async () => { + const result: ConnectorWithExtraFindData[] = [ + // SentinelOne connector + responseActionsClientMock.createConnector({ + actionTypeId: SENTINELONE_CONNECTOR_ID, + id: 's1-connector-instance-id', + }), + ]; + + return result; + }); + + (client.execute as jest.Mock).mockImplementation( + async (options: Parameters[0]) => { + const subAction = options.params.subAction; + + switch (subAction) { + case SUB_ACTION.GET_AGENTS: + return responseActionsClientMock.createConnectorActionExecuteResponse({ + data: createSentinelOneGetAgentsApiResponseMock(), + }); + + default: + return responseActionsClientMock.createConnectorActionExecuteResponse(); + } + } + ); + + return client; +}; + +const createConstructorOptionsMock = (): SentinelOneActionsClientOptionsMock => { + return { + ...responseActionsClientMock.createConstructorOptions(), + connectorActions: createConnectorActionsClientMock(), + }; +}; + +export const sentinelOneMock = { + createGetAgentsResponse: createSentinelOneGetAgentsApiResponseMock, + createConnectorActionsClient: createConnectorActionsClientMock, + createConstructorOptions: createConstructorOptionsMock, +}; diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts index a56b54ce2e65f..c506e8615ed04 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts @@ -7,11 +7,16 @@ import type { ResponseActionsClient } from '../lib/types'; import { responseActionsClientMock } from '../mocks'; -import type { SentinelOneActionsClientOptions } from '../../..'; -import { SentinelOneActionsClient } from '../../..'; +import { SentinelOneActionsClient } from './sentinel_one_actions_client'; import { getActionDetailsById as _getActionDetailsById } from '../../action_details_by_id'; import { ResponseActionsClientError, ResponseActionsNotSupportedError } from '../errors'; import type { ActionsClientMock } from '@kbn/actions-plugin/server/actions_client/actions_client.mock'; +import type { SentinelOneActionsClientOptionsMock } from './mock'; +import { sentinelOneMock } from './mock'; +import { + ENDPOINT_ACTION_RESPONSES_INDEX, + ENDPOINT_ACTIONS_INDEX, +} from '../../../../../../common/endpoint/constants'; jest.mock('../../action_details_by_id', () => { const originalMod = jest.requireActual('../../action_details_by_id'); @@ -25,27 +30,20 @@ jest.mock('../../action_details_by_id', () => { const getActionDetailsByIdMock = _getActionDetailsById as jest.Mock; describe('SentinelOneActionsClient class', () => { - let classConstructorOptions: SentinelOneActionsClientOptions; + let classConstructorOptions: SentinelOneActionsClientOptionsMock; let s1ActionsClient: ResponseActionsClient; let connectorActionsMock: ActionsClientMock; - const createS1IsolateOptions = () => + const createS1IsolationOptions = () => responseActionsClientMock.createIsolateOptions({ agent_type: 'sentinel_one' }); beforeEach(() => { - connectorActionsMock = responseActionsClientMock.createConnectorActionsClient(); - - connectorActionsMock.getAll(); - - classConstructorOptions = { - ...responseActionsClientMock.createConstructorOptions(), - connectorActions: connectorActionsMock, - }; + classConstructorOptions = sentinelOneMock.createConstructorOptions(); + connectorActionsMock = classConstructorOptions.connectorActions; s1ActionsClient = new SentinelOneActionsClient(classConstructorOptions); }); it.each([ - 'release', 'killProcess', 'suspendProcess', 'runningProcesses', @@ -66,7 +64,7 @@ describe('SentinelOneActionsClient class', () => { connectorActionsMock.getAll.mockImplementation(async () => { throw new Error('oh oh'); }); - const responsePromise = s1ActionsClient.isolate(createS1IsolateOptions()); + const responsePromise = s1ActionsClient.isolate(createS1IsolationOptions()); await expect(responsePromise).rejects.toBeInstanceOf(ResponseActionsClientError); await expect(responsePromise).rejects.toHaveProperty( @@ -81,7 +79,7 @@ describe('SentinelOneActionsClient class', () => { throw new Error('oh oh'); }); - await expect(s1ActionsClient.isolate(createS1IsolateOptions())).rejects.toMatchObject({ + await expect(s1ActionsClient.isolate(createS1IsolationOptions())).rejects.toMatchObject({ message: `Unable to retrieve list of stack connectors: oh oh`, statusCode: 400, }); @@ -100,14 +98,14 @@ describe('SentinelOneActionsClient class', () => { ])('should error if: %s', async (_, getAllImplementation) => { (connectorActionsMock.getAll as jest.Mock).mockImplementation(getAllImplementation); - await expect(s1ActionsClient.isolate(createS1IsolateOptions())).rejects.toMatchObject({ + await expect(s1ActionsClient.isolate(createS1IsolationOptions())).rejects.toMatchObject({ message: `No SentinelOne stack connector found`, statusCode: 400, }); }); it('should error if multiple agent ids are received', async () => { - const payload = createS1IsolateOptions(); + const payload = createS1IsolationOptions(); payload.endpoint_ids.push('second-host-id'); await expect(s1ActionsClient.isolate(payload)).rejects.toMatchObject({ @@ -118,7 +116,7 @@ describe('SentinelOneActionsClient class', () => { describe(`#isolate()`, () => { it('should send action to sentinelone', async () => { - await s1ActionsClient.isolate(createS1IsolateOptions()); + await s1ActionsClient.isolate(createS1IsolationOptions()); expect(connectorActionsMock.execute as jest.Mock).toHaveBeenCalledWith({ actionId: 's1-connector-instance-id', @@ -132,10 +130,82 @@ describe('SentinelOneActionsClient class', () => { }); it('should write action request and response to endpoint indexes', async () => { - await s1ActionsClient.isolate(createS1IsolateOptions()); + await s1ActionsClient.isolate(createS1IsolationOptions()); + + expect(classConstructorOptions.esClient.index).toHaveBeenCalledTimes(2); + expect(classConstructorOptions.esClient.index).toHaveBeenNthCalledWith( + 1, + { + document: { + '@timestamp': expect.any(String), + EndpointActions: { + action_id: expect.any(String), + data: { + command: 'isolate', + comment: 'test comment', + parameters: undefined, + hosts: { + '1-2-3': { + name: 'sentinelone-1460', + }, + }, + }, + expiration: expect.any(String), + input_type: 'sentinel_one', + type: 'INPUT_ACTION', + }, + agent: { id: ['1-2-3'] }, + user: { id: 'foo' }, + }, + index: ENDPOINT_ACTIONS_INDEX, + refresh: 'wait_for', + }, + { meta: true } + ); + expect(classConstructorOptions.esClient.index).toHaveBeenNthCalledWith(2, { + document: { + '@timestamp': expect.any(String), + EndpointActions: { + action_id: expect.any(String), + data: { command: 'isolate' }, + input_type: 'sentinel_one', + started_at: expect.any(String), + completed_at: expect.any(String), + }, + agent: { id: ['1-2-3'] }, + error: undefined, + }, + index: ENDPOINT_ACTION_RESPONSES_INDEX, + refresh: 'wait_for', + }); + }); + + it('should return action details', async () => { + await s1ActionsClient.isolate(createS1IsolationOptions()); + + expect(getActionDetailsByIdMock).toHaveBeenCalled(); + }); + }); + + describe('#release()', () => { + it('should send action to sentinelone', async () => { + await s1ActionsClient.release(createS1IsolationOptions()); + + expect(connectorActionsMock.execute as jest.Mock).toHaveBeenCalledWith({ + actionId: 's1-connector-instance-id', + params: { + subAction: 'releaseHost', + subActionParams: { + uuid: '1-2-3', + }, + }, + }); + }); + + it('should write action request and response to endpoint indexes', async () => { + await s1ActionsClient.release(createS1IsolationOptions()); - expect(classConstructorOptions.esClient.index).toHaveBeenCalledTimes(1); - // FIXME:PT once we start writing the Response, check above should be removed and new assertion added for it + expect(classConstructorOptions.esClient.index).toHaveBeenCalledTimes(2); expect(classConstructorOptions.esClient.index).toHaveBeenNthCalledWith( 1, { @@ -143,7 +213,16 @@ describe('SentinelOneActionsClient class', () => { '@timestamp': expect.any(String), EndpointActions: { action_id: expect.any(String), - data: { command: 'isolate', comment: 'test comment', parameters: undefined }, + data: { + command: 'unisolate', + comment: 'test comment', + parameters: undefined, + hosts: { + '1-2-3': { + name: 'sentinelone-1460', + }, + }, + }, expiration: expect.any(String), input_type: 'sentinel_one', type: 'INPUT_ACTION', @@ -151,15 +230,31 @@ describe('SentinelOneActionsClient class', () => { agent: { id: ['1-2-3'] }, user: { id: 'foo' }, }, - index: '.logs-endpoint.actions-default', + index: ENDPOINT_ACTIONS_INDEX, refresh: 'wait_for', }, { meta: true } ); + expect(classConstructorOptions.esClient.index).toHaveBeenNthCalledWith(2, { + document: { + '@timestamp': expect.any(String), + EndpointActions: { + action_id: expect.any(String), + data: { command: 'unisolate' }, + input_type: 'sentinel_one', + started_at: expect.any(String), + completed_at: expect.any(String), + }, + agent: { id: ['1-2-3'] }, + error: undefined, + }, + index: ENDPOINT_ACTION_RESPONSES_INDEX, + refresh: 'wait_for', + }); }); it('should return action details', async () => { - await s1ActionsClient.isolate(createS1IsolateOptions()); + await s1ActionsClient.release(createS1IsolationOptions()); expect(getActionDetailsByIdMock).toHaveBeenCalled(); }); diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.ts index 4837f427a926b..d196232e83916 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.ts @@ -13,14 +13,23 @@ import { import type { ConnectorWithExtraFindData } from '@kbn/actions-plugin/server/application/connector/types'; import { once } from 'lodash'; import type { ActionTypeExecutorResult } from '@kbn/actions-plugin/common'; -import { dump } from '../../../../utils/dump'; +import type { + SentinelOneGetAgentsResponse, + SentinelOneGetAgentsParams, +} from '@kbn/stack-connectors-plugin/common/sentinelone/types'; +import type { ResponseActionAgentType } from '../../../../../../common/endpoint/service/response_actions/constants'; +import type { SentinelOneConnectorExecuteOptions } from './types'; +import { stringify } from '../../../../utils/stringify'; import { ResponseActionsClientError } from '../errors'; -import type { ActionDetails } from '../../../../../../common/endpoint/types'; +import type { ActionDetails, LogsEndpointAction } from '../../../../../../common/endpoint/types'; import type { IsolationRouteRequestBody, BaseActionRequestBody, } from '../../../../../../common/api/endpoint'; -import type { ResponseActionsClientOptions } from '../lib/base_response_actions_client'; +import type { + ResponseActionsClientOptions, + ResponseActionsClientWriteActionRequestToEndpointIndexOptions, +} from '../lib/base_response_actions_client'; import { ResponseActionsClientImpl } from '../lib/base_response_actions_client'; export type SentinelOneActionsClientOptions = ResponseActionsClientOptions & { @@ -28,6 +37,7 @@ export type SentinelOneActionsClientOptions = ResponseActionsClientOptions & { }; export class SentinelOneActionsClient extends ResponseActionsClientImpl { + protected readonly agentType: ResponseActionAgentType = 'sentinel_one'; private readonly connectorActionsClient: ActionsClient; private readonly getConnector: () => Promise; @@ -67,14 +77,27 @@ export class SentinelOneActionsClient extends ResponseActionsClientImpl { }); } + protected async writeActionRequestToEndpointIndex( + actionRequest: Omit + ): Promise { + const agentId = actionRequest.endpoint_ids[0]; + const agentDetails = await this.getAgentDetails(agentId); + + return super.writeActionRequestToEndpointIndex({ + ...actionRequest, + hosts: { + [agentId]: { name: agentDetails.computerName }, + }, + }); + } + /** - * Sends actions to SentinelOne directly + * Sends actions to SentinelOne directly (via Connector) * @private */ private async sendAction( actionType: SUB_ACTION, actionParams: object - // FIXME:PT type properly the options above once PR 168441 for 8.12 merges ): Promise> { const { id: connectorId } = await this.getConnector(); const executeOptions: Parameters[0] = { @@ -86,13 +109,13 @@ export class SentinelOneActionsClient extends ResponseActionsClientImpl { }; this.log.debug( - `calling connector actions 'execute()' for SentinelOne with:\n${dump(executeOptions)}` + `calling connector actions 'execute()' for SentinelOne with:\n${stringify(executeOptions)}` ); const actionSendResponse = await this.connectorActionsClient.execute(executeOptions); if (actionSendResponse.status === 'error') { - this.log.error(dump(actionSendResponse)); + this.log.error(stringify(actionSendResponse)); throw new ResponseActionsClientError( `Attempt to send [${actionType}] to SentinelOne failed: ${ @@ -103,12 +126,50 @@ export class SentinelOneActionsClient extends ResponseActionsClientImpl { ); } - this.log.debug(`Response:\n${dump(actionSendResponse)}`); + this.log.debug(`Response:\n${stringify(actionSendResponse)}`); return actionSendResponse; } + private async getAgentDetails(id: string): Promise { + const { id: connectorId } = await this.getConnector(); + const executeOptions: SentinelOneConnectorExecuteOptions = { + actionId: connectorId, + params: { + subAction: SUB_ACTION.GET_AGENTS, + subActionParams: { + uuid: id, + }, + }, + }; + + let s1ApiResponse: SentinelOneGetAgentsResponse | undefined; + + try { + const response = (await this.connectorActionsClient.execute( + executeOptions + )) as ActionTypeExecutorResult; + + this.log.debug(`Response for SentinelOne agent id [${id}] returned:\n${stringify(response)}`); + + s1ApiResponse = response.data; + } catch (err) { + throw new ResponseActionsClientError( + `Error while attempting to retrieve SentinelOne host with agent id [${id}]`, + 500, + err + ); + } + + if (!s1ApiResponse || !s1ApiResponse.data[0]) { + throw new ResponseActionsClientError(`SentinelOne agent id [${id}] not found`, 404); + } + + return s1ApiResponse.data[0]; + } + private async validateRequest(payload: BaseActionRequestBody): Promise { + // TODO:PT support multiple agents if (payload.endpoint_ids.length > 1) { throw new ResponseActionsClientError( `[body.endpoint_ids]: Multiple agents IDs not currently supported for SentinelOne`, @@ -118,30 +179,43 @@ export class SentinelOneActionsClient extends ResponseActionsClientImpl { } async isolate(options: IsolationRouteRequestBody): Promise { - // TODO:PT support multiple agents await this.validateRequest(options); + await this.sendAction(SUB_ACTION.ISOLATE_HOST, { uuid: options.endpoint_ids[0] }); - const agentUUID = options.endpoint_ids[0]; - - await this.sendAction(SUB_ACTION.ISOLATE_HOST, { - uuid: agentUUID, + const reqIndexOptions: ResponseActionsClientWriteActionRequestToEndpointIndexOptions = { + ...options, + command: 'isolate', + }; + const actionRequestDoc = await this.writeActionRequestToEndpointIndex(reqIndexOptions); + await this.writeActionResponseToEndpointIndex({ + actionId: actionRequestDoc.EndpointActions.action_id, + agentId: actionRequestDoc.agent.id, + data: { + command: actionRequestDoc.EndpointActions.data.command, + }, }); - // FIXME:PT need to grab data from the response above and store it with the Request or Response documents on our side + return this.fetchActionDetails(actionRequestDoc.EndpointActions.action_id); + } + + async release(options: IsolationRouteRequestBody): Promise { + await this.validateRequest(options); + await this.sendAction(SUB_ACTION.RELEASE_HOST, { + uuid: options.endpoint_ids[0], + }); const actionRequestDoc = await this.writeActionRequestToEndpointIndex({ ...options, - command: 'isolate', + command: 'unisolate', }); - // TODO: un-comment code below once we have proper authz given to `kibana_system` account (security issue #8190) - // await this.writeActionResponseToEndpointIndex({ - // actionId: actionRequestDoc.EndpointActions.action_id, - // agentId: actionRequestDoc.agent.id, - // data: { - // command: actionRequestDoc.EndpointActions.data.command, - // }, - // }); + await this.writeActionResponseToEndpointIndex({ + actionId: actionRequestDoc.EndpointActions.action_id, + agentId: actionRequestDoc.agent.id, + data: { + command: actionRequestDoc.EndpointActions.data.command, + }, + }); return this.fetchActionDetails(actionRequestDoc.EndpointActions.action_id); } diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/types.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/types.ts new file mode 100644 index 0000000000000..fbb28df5e4449 --- /dev/null +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/types.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/* eslint-disable @typescript-eslint/no-explicit-any */ + +import type { ActionsClient } from '@kbn/actions-plugin/server'; +import type { SUB_ACTION } from '@kbn/stack-connectors-plugin/common/sentinelone/constants'; + +type ConnectorActionsExecuteOptions = Parameters[0]; + +interface SentinelOneConnectorExecuteParams< + P extends Record = Record +> { + subAction: SUB_ACTION; + subActionParams: P; +} + +export type SentinelOneConnectorExecuteOptions< + P extends Record = Record +> = Omit & { + params: SentinelOneConnectorExecuteParams

    & Record; +}; diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/create/index.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/create/index.ts index 1c3d57dc241b2..94cd181edc5e0 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/create/index.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/create/index.ts @@ -13,23 +13,13 @@ import type { ActionDetails, EndpointActionDataParameterTypes, HostMetadata, + EndpointActionResponseDataOutput, } from '../../../../../common/endpoint/types'; import type { EndpointAppContext } from '../../../types'; -import type { FeatureKeys } from '../../feature_usage'; import { getActionDetailsById } from '..'; import type { ActionCreateService, CreateActionMetadata, CreateActionPayload } from './types'; import { writeActionToIndices } from './write_action_to_indices'; -const commandToFeatureKeyMap = new Map([ - ['isolate', 'HOST_ISOLATION'], - ['unisolate', 'HOST_ISOLATION'], - ['kill-process', 'KILL_PROCESS'], - ['suspend-process', 'SUSPEND_PROCESS'], - ['running-processes', 'RUNNING_PROCESSES'], - ['get-file', 'GET_FILE'], - ['execute', 'EXECUTE'], -]); - const returnActionIdCommands: ResponseActionsApiCommandNames[] = ['isolate', 'unisolate']; export const actionCreateService = ( @@ -37,16 +27,18 @@ export const actionCreateService = ( endpointContext: EndpointAppContext ): ActionCreateService => { const createAction = async < - TOutputContent extends object = object, + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput, TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes >( payload: CreateActionPayload, agents: string[], { minimumLicenseRequired = 'basic' }: CreateActionMetadata = {} ): Promise> => { - const featureKey = commandToFeatureKeyMap.get(payload.command) as FeatureKeys; + const usageService = endpointContext.service.getFeatureUsageService(); + const featureKey = usageService.getResponseActionFeatureKey(payload.command); + if (featureKey) { - endpointContext.service.getFeatureUsageService().notifyUsage(featureKey); + usageService.notifyUsage(featureKey); } // create an Action ID and use that to dispatch action to ES & Fleet Server diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/create/types.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/create/types.ts index f8a10b18d594d..131869e5248fa 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/create/types.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/create/types.ts @@ -11,6 +11,7 @@ import type { ResponseActionBodySchema } from '../../../../../common/api/endpoin import type { ActionDetails, EndpointActionDataParameterTypes, + EndpointActionResponseDataOutput, } from '../../../../../common/endpoint/types'; import type { ResponseActionsApiCommandNames } from '../../../../../common/endpoint/service/response_actions/constants'; @@ -30,7 +31,7 @@ export interface CreateActionMetadata { export interface ActionCreateService { createActionFromAlert: (payload: CreateActionPayload, agents: string[]) => Promise; createAction: < - TOutputContent extends object = object, + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput, TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes >( payload: CreateActionPayload, diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/create/write_action_to_indices.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/create/write_action_to_indices.ts index b502ec082c69b..a0626b2e4d883 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/create/write_action_to_indices.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/create/write_action_to_indices.ts @@ -10,6 +10,7 @@ import type { Logger } from '@kbn/core/server'; import moment from 'moment'; import type { LicenseType } from '@kbn/licensing-plugin/common/types'; import type { FleetActionRequest } from '@kbn/fleet-plugin/server/services/actions/types'; +import { isExecuteAction } from '../../../../../common/endpoint/service/response_actions/type_guards'; import { DEFAULT_EXECUTE_ACTION_TIMEOUT } from '../../../../../common/endpoint/service/response_actions/constants'; import { ENDPOINT_ACTIONS_DS, @@ -143,6 +144,7 @@ export const writeActionToIndices = async ({ completed_at: moment().toISOString(), started_at: moment().toISOString(), data: doc.EndpointActions.data, + input_type: 'endpoint', }, }, logger, @@ -193,8 +195,8 @@ export const getActionParameters = ( action: Pick ): ResponseActionsExecuteParameters | Readonly<{}> | undefined => { // set timeout to 4h (if not specified or when timeout is specified as 0) when command is `execute` - if (action.command === 'execute') { - const actionRequestParams = action.parameters as ResponseActionsExecuteParameters; + if (isExecuteAction(action)) { + const actionRequestParams = action.parameters; if (typeof actionRequestParams?.timeout === 'undefined') { return { ...actionRequestParams, timeout: DEFAULT_EXECUTE_ACTION_TIMEOUT }; } diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/fetch_action_responses.test.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/fetch_action_responses.test.ts new file mode 100644 index 0000000000000..012379758fabd --- /dev/null +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/fetch_action_responses.test.ts @@ -0,0 +1,232 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { applyActionListEsSearchMock } from './mocks'; +import { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks'; +import type { ElasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; +import { fetchActionResponses } from './fetch_action_responses'; +import { BaseDataGenerator } from '../../../../common/endpoint/data_generators/base_data_generator'; +import { AGENT_ACTIONS_RESULTS_INDEX } from '@kbn/fleet-plugin/common'; +import { ENDPOINT_ACTION_RESPONSES_INDEX_PATTERN } from '../../../../common/endpoint/constants'; +import { ACTIONS_SEARCH_PAGE_SIZE } from './constants'; + +describe('fetchActionResponses()', () => { + let esClientMock: ElasticsearchClientMock; + + beforeEach(() => { + esClientMock = elasticsearchServiceMock.createScopedClusterClient().asInternalUser; + applyActionListEsSearchMock(esClientMock); + }); + + it('should return results', async () => { + await expect(fetchActionResponses({ esClient: esClientMock })).resolves.toEqual({ + data: [ + { + _id: 'ef278144-d8b9-45c6-9c3c-484c86b57d0b', + _index: '.fleet-actions-results', + _score: 1, + _source: { + '@timestamp': '2022-04-30T16:08:47.449Z', + action_data: { + command: 'get-file', + comment: '', + }, + action_id: '123', + agent_id: 'agent-a', + completed_at: '2022-04-30T10:53:59.449Z', + error: '', + started_at: '2022-04-30T12:56:00.449Z', + }, + }, + { + _id: 'ef278144-d8b9-45c6-9c3c-484c86b57d0b', + _index: '.ds-.logs-endpoint.action.responses-some_namespace-something', + _score: 1, + _source: { + '@timestamp': '2022-04-30T16:08:47.449Z', + EndpointActions: { + action_id: '123', + completed_at: '2022-04-30T10:53:59.449Z', + data: { + command: 'get-file', + comment: '', + output: { + content: { + code: 'ra_get-file_success_done', + contents: [ + { + file_name: 'bad_file.txt', + path: '/some/path/bad_file.txt', + sha256: '9558c5cb39622e9b3653203e772b129d6c634e7dbd7af1b244352fc1d704601f', + size: 1234, + type: 'file', + }, + ], + zip_size: 123, + }, + type: 'json', + }, + }, + started_at: '2022-04-30T12:56:00.449Z', + }, + agent: { + id: 'agent-a', + }, + }, + }, + { + _id: 'ef278144-d8b9-45c6-9c3c-484c86b57d0b', + _index: '.fleet-actions-results', + _score: 1, + _source: { + '@timestamp': '2022-04-30T16:08:47.449Z', + action_data: { + command: 'get-file', + comment: '', + }, + action_id: '123', + agent_id: 'agent-a', + completed_at: '2022-04-30T10:53:59.449Z', + error: '', + started_at: '2022-04-30T12:56:00.449Z', + }, + }, + { + _id: 'ef278144-d8b9-45c6-9c3c-484c86b57d0b', + _index: '.ds-.logs-endpoint.action.responses-some_namespace-something', + _score: 1, + _source: { + '@timestamp': '2022-04-30T16:08:47.449Z', + EndpointActions: { + action_id: '123', + completed_at: '2022-04-30T10:53:59.449Z', + data: { + command: 'get-file', + comment: '', + output: { + content: { + code: 'ra_get-file_success_done', + contents: [ + { + file_name: 'bad_file.txt', + path: '/some/path/bad_file.txt', + sha256: '9558c5cb39622e9b3653203e772b129d6c634e7dbd7af1b244352fc1d704601f', + size: 1234, + type: 'file', + }, + ], + zip_size: 123, + }, + type: 'json', + }, + }, + started_at: '2022-04-30T12:56:00.449Z', + }, + agent: { + id: 'agent-a', + }, + }, + }, + ], + }); + }); + + it('should return empty array with no responses exist', async () => { + applyActionListEsSearchMock(esClientMock, undefined, BaseDataGenerator.toEsSearchResponse([])); + + await expect(fetchActionResponses({ esClient: esClientMock })).resolves.toEqual({ data: [] }); + }); + + it('should query both fleet and endpoint indexes', async () => { + await fetchActionResponses({ esClient: esClientMock }); + const expectedQuery = { + query: { + bool: { + filter: [], + }, + }, + }; + + expect(esClientMock.search).toHaveBeenCalledWith( + { index: AGENT_ACTIONS_RESULTS_INDEX, size: ACTIONS_SEARCH_PAGE_SIZE, body: expectedQuery }, + { ignore: [404] } + ); + expect(esClientMock.search).toHaveBeenCalledWith( + { + index: ENDPOINT_ACTION_RESPONSES_INDEX_PATTERN, + size: ACTIONS_SEARCH_PAGE_SIZE, + body: expectedQuery, + }, + { ignore: [404] } + ); + }); + + it('should filter by agentIds', async () => { + await fetchActionResponses({ esClient: esClientMock, agentIds: ['a', 'b', 'c'] }); + const expectedQuery = { + query: { bool: { filter: [{ terms: { agent_id: ['a', 'b', 'c'] } }] } }, + }; + + expect(esClientMock.search).toHaveBeenCalledWith( + expect.objectContaining({ index: AGENT_ACTIONS_RESULTS_INDEX, body: expectedQuery }), + { ignore: [404] } + ); + expect(esClientMock.search).toHaveBeenCalledWith( + expect.objectContaining({ + index: ENDPOINT_ACTION_RESPONSES_INDEX_PATTERN, + body: expectedQuery, + }), + { ignore: [404] } + ); + }); + + it('should filter by action ids', async () => { + await fetchActionResponses({ esClient: esClientMock, actionIds: ['a', 'b', 'c'] }); + const expectedQuery = { + query: { bool: { filter: [{ terms: { action_id: ['a', 'b', 'c'] } }] } }, + }; + + expect(esClientMock.search).toHaveBeenCalledWith( + expect.objectContaining({ index: AGENT_ACTIONS_RESULTS_INDEX, body: expectedQuery }), + { ignore: [404] } + ); + expect(esClientMock.search).toHaveBeenCalledWith( + expect.objectContaining({ + index: ENDPOINT_ACTION_RESPONSES_INDEX_PATTERN, + body: expectedQuery, + }), + { ignore: [404] } + ); + }); + + it('should filter by both agent and action ids', async () => { + await fetchActionResponses({ + esClient: esClientMock, + agentIds: ['1', '2'], + actionIds: ['a', 'b', 'c'], + }); + const expectedQuery = { + query: { + bool: { + filter: [{ terms: { agent_id: ['1', '2'] } }, { terms: { action_id: ['a', 'b', 'c'] } }], + }, + }, + }; + + expect(esClientMock.search).toHaveBeenCalledWith( + expect.objectContaining({ index: AGENT_ACTIONS_RESULTS_INDEX, body: expectedQuery }), + { ignore: [404] } + ); + expect(esClientMock.search).toHaveBeenCalledWith( + expect.objectContaining({ + index: ENDPOINT_ACTION_RESPONSES_INDEX_PATTERN, + body: expectedQuery, + }), + { ignore: [404] } + ); + }); +}); diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/fetch_action_responses.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/fetch_action_responses.ts new file mode 100644 index 0000000000000..7ed0bad9a42be --- /dev/null +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/fetch_action_responses.ts @@ -0,0 +1,89 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import { AGENT_ACTIONS_RESULTS_INDEX } from '@kbn/fleet-plugin/common'; +import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type { + EndpointActionResponse, + LogsEndpointActionResponse, +} from '../../../../common/endpoint/types'; +import { ACTIONS_SEARCH_PAGE_SIZE } from './constants'; +import { catchAndWrapError } from '../../utils'; +import { ENDPOINT_ACTION_RESPONSES_INDEX_PATTERN } from '../../../../common/endpoint/constants'; + +interface FetchActionResponsesOptions { + esClient: ElasticsearchClient; + /** List of specific action ids to filter for */ + actionIds?: string[]; + /** List of specific agent ids to filter for */ + agentIds?: string[]; +} + +interface FetchActionResponsesResult { + data: Array>; +} + +/** + * Fetch Response Action responses + */ +export const fetchActionResponses = async ({ + esClient, + actionIds = [], + agentIds = [], +}: FetchActionResponsesOptions): Promise => { + const filter = []; + + if (agentIds?.length) { + filter.push({ terms: { agent_id: agentIds } }); + } + if (actionIds.length) { + filter.push({ terms: { action_id: actionIds } }); + } + + const query: estypes.QueryDslQueryContainer = { + bool: { + filter, + }, + }; + + // Get the Action Response(s) from both the Fleet action response index and the Endpoint + // action response index. + // We query both indexes separately in order to ensure they are both queried - example if the + // Fleet actions responses index does not exist yet, ES would generate a `404` and would + // never actually query the Endpoint Actions index. With support for 3rd party response + // actions, we need to ensure that both indexes are queried. + const [fleetResponses, endpointResponses] = await Promise.all([ + // Responses in Fleet index + esClient + .search( + { + index: AGENT_ACTIONS_RESULTS_INDEX, + size: ACTIONS_SEARCH_PAGE_SIZE, + body: { query }, + }, + { ignore: [404] } + ) + .catch(catchAndWrapError), + + // Responses in Endpoint index + esClient + .search( + { + index: ENDPOINT_ACTION_RESPONSES_INDEX_PATTERN, + size: ACTIONS_SEARCH_PAGE_SIZE, + body: { query }, + }, + { ignore: [404] } + ) + .catch(catchAndWrapError), + ]); + + return { + data: [...(fleetResponses?.hits?.hits ?? []), ...(endpointResponses?.hits?.hits ?? [])], + }; +}; diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/mocks.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/mocks.ts index a4536f54b92d7..0c5ac6cf38b38 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/mocks.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/mocks.ts @@ -9,6 +9,7 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import type { ElasticsearchClientMock } from '@kbn/core/server/mocks'; import { AGENT_ACTIONS_RESULTS_INDEX } from '@kbn/fleet-plugin/common'; import { Readable } from 'stream'; +import type { TransportRequestOptions } from '@elastic/transport'; import type { HapiReadableStream } from '../../../types'; import { EndpointActionGenerator } from '../../../../common/endpoint/data_generators/endpoint_action_generator'; import { FleetActionGenerator } from '../../../../common/endpoint/data_generators/fleet_action_generator'; @@ -146,15 +147,24 @@ export const applyActionListEsSearchMock = ( // @ts-expect-error incorrect type esClient.search.mockImplementation(async (...args) => { const params = args[0] ?? {}; + const options: TransportRequestOptions = args[1] ?? {}; const indexes = Array.isArray(params.index) ? params.index : [params.index]; if (indexes.includes(ENDPOINT_ACTIONS_INDEX)) { - return { body: { ...actionRequests } }; + if (options.meta) { + return { body: { ...actionRequests } }; + } + + return actionRequests; } else if ( indexes.includes(AGENT_ACTIONS_RESULTS_INDEX) || indexes.includes(ENDPOINT_ACTION_RESPONSES_INDEX_PATTERN) ) { - return { body: { ...actionResponses } }; + if (options.meta) { + return { body: { ...actionResponses } }; + } + + return actionResponses; } if (priorSearchMockImplementation) { diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/utils.test.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/utils.test.ts index b5c2119281e75..e63caeb222be8 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/utils.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/utils.test.ts @@ -8,6 +8,7 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { EndpointActionGenerator } from '../../../../common/endpoint/data_generators/endpoint_action_generator'; import { FleetActionGenerator } from '../../../../common/endpoint/data_generators/fleet_action_generator'; +import type { NormalizedActionRequest } from './utils'; import { categorizeActionResults, categorizeResponseResults, @@ -18,6 +19,7 @@ import { isLogsEndpointAction, isLogsEndpointActionResponse, mapToNormalizedActionRequest, + createActionDetailsRecord, } from './utils'; import type { ActivityLogAction, @@ -28,10 +30,12 @@ import type { EndpointActivityLogActionResponse, LogsEndpointAction, LogsEndpointActionResponse, + EndpointActionResponseDataOutput, } from '../../../../common/endpoint/types'; import { v4 as uuidv4 } from 'uuid'; import type { Results } from '../../routes/actions/mocks'; import { mockAuditLogSearchResult } from '../../routes/actions/mocks'; +import { ActivityLogItemTypes } from '../../../../common/endpoint/types'; describe('When using Actions service utilities', () => { let fleetActionGenerator: FleetActionGenerator; @@ -72,6 +76,8 @@ describe('When using Actions service utilities', () => { ) ).toEqual({ agents: ['6e6796b0-af39-4f12-b025-fcb06db499e5'], + agentType: 'endpoint', + hosts: {}, command: 'kill-process', comment: expect.any(String), createdAt: '2022-04-27T16:08:47.449Z', @@ -92,6 +98,8 @@ describe('When using Actions service utilities', () => { ) ).toEqual({ agents: ['90d62689-f72d-4a05-b5e3-500cad0dc366'], + agentType: 'endpoint', + hosts: {}, command: 'kill-process', comment: expect.any(String), createdAt: '2022-04-27T16:08:47.449Z', @@ -176,7 +184,7 @@ describe('When using Actions service utilities', () => { agent: { id: '123' }, EndpointActions: { completed_at: COMPLETED_AT, - data: { output: { type: 'json', content: { foo: 'bar' } } }, + data: { output: { type: 'json', content: { code: 'aaa' } } }, }, }, }, @@ -198,7 +206,7 @@ describe('When using Actions service utilities', () => { outputs: { '123': { content: { - foo: 'bar', + code: 'aaa', }, type: 'json', }, @@ -388,9 +396,18 @@ describe('When using Actions service utilities', () => { describe('with multiple agent ids', () => { let agentIds: string[]; let actionId: string; - let action123Responses: Array; - let action456Responses: Array; - let action789Responses: Array; + let action123Responses: Array< + | ActivityLogActionResponse + | EndpointActivityLogActionResponse + >; + let action456Responses: Array< + | ActivityLogActionResponse + | EndpointActivityLogActionResponse + >; + let action789Responses: Array< + | ActivityLogActionResponse + | EndpointActivityLogActionResponse + >; beforeEach(() => { agentIds = ['123', '456', '789']; @@ -605,11 +622,11 @@ describe('When using Actions service utilities', () => { it('should include output for agents for which the action was complete', () => { // Add output to the completed actions ( - action123Responses[1] as EndpointActivityLogActionResponse + action123Responses[1] as EndpointActivityLogActionResponse ).item.data.EndpointActions.data.output = { type: 'json', content: { - foo: 'bar', + code: 'bar', }, }; @@ -662,7 +679,7 @@ describe('When using Actions service utilities', () => { outputs: { '123': { content: { - foo: 'bar', + code: 'bar', }, type: 'json', }, @@ -955,4 +972,121 @@ describe('When using Actions service utilities', () => { ).toEqual({ isExpired: false, status: 'failed' }); }); }); + + describe('#createActionDetailsRecord()', () => { + let actionRequest: NormalizedActionRequest; + let actionResponses: Array; + let agentHostInfo: Record; + + beforeEach(() => { + actionRequest = { + agents: ['6e6796b0-af39-4f12-b025-fcb06db499e5'], + command: 'kill-process', + comment: 'kill this one', + createdAt: '2022-04-27T16:08:47.449Z', + createdBy: 'elastic', + expiration: '2022-04-29T16:08:47.449Z', + id: '90d62689-f72d-4a05-b5e3-500cad0dc366', + type: 'ACTION_REQUEST', + parameters: undefined, + agentType: 'endpoint', + hosts: {}, + }; + + actionResponses = [ + { + type: ActivityLogItemTypes.FLEET_RESPONSE, + item: { + id: actionRequest.id, + data: fleetActionGenerator.generateResponse({ + action_id: actionRequest.id, + agent_id: actionRequest.agents[0], + }), + }, + }, + + { + type: ActivityLogItemTypes.RESPONSE, + item: { + id: actionRequest.id, + data: endpointActionGenerator.generateResponse({ + agent: { id: actionRequest.agents }, + EndpointActions: { + action_id: actionRequest.id, + }, + }), + }, + }, + ]; + + agentHostInfo = { + [actionRequest.agents[0]]: 'host-a', + }; + }); + + it('should return expected action details record', () => { + expect(createActionDetailsRecord(actionRequest, actionResponses, agentHostInfo)).toEqual({ + action: '90d62689-f72d-4a05-b5e3-500cad0dc366', + id: '90d62689-f72d-4a05-b5e3-500cad0dc366', + agentType: 'endpoint', + agents: ['6e6796b0-af39-4f12-b025-fcb06db499e5'], + command: 'kill-process', + comment: 'kill this one', + completedAt: expect.any(String), + startedAt: '2022-04-27T16:08:47.449Z', + status: 'successful', + wasSuccessful: true, + errors: undefined, + createdBy: 'elastic', + isCompleted: true, + isExpired: false, + parameters: undefined, + agentState: { + '6e6796b0-af39-4f12-b025-fcb06db499e5': { + completedAt: expect.any(String), + isCompleted: true, + wasSuccessful: true, + }, + }, + hosts: { + '6e6796b0-af39-4f12-b025-fcb06db499e5': { + name: 'host-a', + }, + }, + outputs: { + '6e6796b0-af39-4f12-b025-fcb06db499e5': { + content: { + code: 'ra_get-file_success_done', + contents: [ + { + file_name: 'bad_file.txt', + path: '/some/path/bad_file.txt', + sha256: '9558c5cb39622e9b3653203e772b129d6c634e7dbd7af1b244352fc1d704601f', + size: 1234, + type: 'file', + }, + ], + zip_size: 123, + }, + type: 'json', + }, + }, + }); + }); + + it('should populate host name from action request', () => { + agentHostInfo = {}; + actionRequest.hosts[actionRequest.agents[0]] = { name: 'host-b' }; + + expect( + createActionDetailsRecord(actionRequest, actionResponses, agentHostInfo) + ).toMatchObject({ + hosts: { + '6e6796b0-af39-4f12-b025-fcb06db499e5': { + name: 'host-b', + }, + }, + }); + }); + }); }); diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/utils.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/utils.ts index 1d16c944d2cef..b851b087c8231 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/utils.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/utils.ts @@ -8,7 +8,10 @@ import type { ElasticsearchClient } from '@kbn/core/server'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import type { EcsError } from '@kbn/ecs'; -import type { ResponseActionsApiCommandNames } from '../../../../common/endpoint/service/response_actions/constants'; +import type { + ResponseActionsApiCommandNames, + ResponseActionAgentType, +} from '../../../../common/endpoint/service/response_actions/constants'; import { ENDPOINT_ACTIONS_DS, ENDPOINT_ACTION_RESPONSES_DS, @@ -26,6 +29,8 @@ import type { EndpointActivityLogActionResponse, LogsEndpointAction, LogsEndpointActionResponse, + EndpointActionResponseDataOutput, + WithAllKeys, } from '../../../../common/endpoint/types'; import { ActivityLogItemTypes } from '../../../../common/endpoint/types'; import type { EndpointMetadataService } from '../metadata'; @@ -44,14 +49,15 @@ export const isLogsEndpointAction = ( * @param item */ export const isLogsEndpointActionResponse = ( - item: EndpointActionResponse | LogsEndpointActionResponse -): item is LogsEndpointActionResponse => { + item: EndpointActionResponse | LogsEndpointActionResponse +): item is LogsEndpointActionResponse => { return 'EndpointActions' in item && 'agent' in item; }; -interface NormalizedActionRequest { +export interface NormalizedActionRequest { id: string; type: 'ACTION_REQUEST'; + agentType: ResponseActionAgentType; expiration: string; agents: string[]; createdBy: string; @@ -63,6 +69,8 @@ interface NormalizedActionRequest { ruleId?: string; ruleName?: string; error?: EcsError; + /** Host info that might have been stored along with the Action Request (ex. 3rd party EDR actions) */ + hosts: ActionDetails['hosts']; } /** @@ -80,6 +88,7 @@ export const mapToNormalizedActionRequest = ( agents: Array.isArray(actionRequest.agent.id) ? actionRequest.agent.id : [actionRequest.agent.id], + agentType: actionRequest.EndpointActions.input_type, command: actionRequest.EndpointActions.data.command, comment: actionRequest.EndpointActions.data.comment, createdBy: actionRequest.user.id, @@ -92,12 +101,14 @@ export const mapToNormalizedActionRequest = ( ruleId: actionRequest.rule?.id, ruleName: actionRequest.rule?.name, error: actionRequest.error, + hosts: actionRequest.EndpointActions.data.hosts ?? {}, }; } // Else, it's a Fleet Endpoint Action record return { agents: actionRequest.agents, + agentType: actionRequest.input_type, command: actionRequest.data.command, comment: actionRequest.data.comment, createdBy: actionRequest.user_id, @@ -106,6 +117,7 @@ export const mapToNormalizedActionRequest = ( id: actionRequest.action_id, type, parameters: actionRequest.data.parameters, + hosts: {}, }; }; @@ -114,11 +126,15 @@ type ActionCompletionInfo = Pick< 'isCompleted' | 'completedAt' | 'wasSuccessful' | 'errors' | 'outputs' | 'agentState' >; -export const getActionCompletionInfo = ( +export const getActionCompletionInfo = < + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput +>( /** The normalized action request */ action: NormalizedActionRequest, /** List of action Log responses received for the action */ - actionResponses: Array + actionResponses: Array< + ActivityLogActionResponse | EndpointActivityLogActionResponse + > ): ActionCompletionInfo => { const agentIds = action.agents; const completedInfo: ActionCompletionInfo = { @@ -235,13 +251,15 @@ export const getActionStatus = ({ return { isExpired, status }; }; -interface NormalizedAgentActionResponse { +interface NormalizedAgentActionResponse< + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput +> { isCompleted: boolean; completedAt: undefined | string; wasSuccessful: boolean; errors: undefined | string[]; fleetResponse: undefined | ActivityLogActionResponse; - endpointResponse: undefined | EndpointActivityLogActionResponse; + endpointResponse: undefined | EndpointActivityLogActionResponse; } type ActionResponseByAgentId = Record; @@ -251,8 +269,12 @@ type ActionResponseByAgentId = Record; * value is a object having information about the action responses associated with that agent id * @param actionResponses */ -const mapActionResponsesByAgentId = ( - actionResponses: Array +const mapActionResponsesByAgentId = < + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput +>( + actionResponses: Array< + ActivityLogActionResponse | EndpointActivityLogActionResponse + > ): ActionResponseByAgentId => { const response: ActionResponseByAgentId = {}; @@ -337,7 +359,9 @@ const mapActionResponsesByAgentId = ( * @param actionResponse */ const getAgentIdFromActionResponse = ( - actionResponse: ActivityLogActionResponse | EndpointActivityLogActionResponse + actionResponse: + | ActivityLogActionResponse + | EndpointActivityLogActionResponse ): string => { const responseData = actionResponse.item.data; @@ -524,3 +548,47 @@ export const getAgentHostNamesWithIds = async ({ return agentsMetadataInfo; }; + +export const createActionDetailsRecord = ( + actionRequest: NormalizedActionRequest, + actionResponses: Array, + agentHostInfo: Record +): T => { + const { isCompleted, completedAt, wasSuccessful, errors, outputs, agentState } = + getActionCompletionInfo(actionRequest, actionResponses); + + const { isExpired, status } = getActionStatus({ + expirationDate: actionRequest.expiration, + isCompleted, + wasSuccessful, + }); + + const actionDetails: WithAllKeys = { + action: actionRequest.id, + id: actionRequest.id, + agentType: actionRequest.agentType, + agents: actionRequest.agents, + hosts: actionRequest.agents.reduce((acc, id) => { + acc[id] = { name: agentHostInfo[id] || actionRequest.hosts[id]?.name || '' }; + return acc; + }, {}), + command: actionRequest.command, + startedAt: actionRequest.createdAt, + isCompleted, + completedAt, + wasSuccessful, + errors, + isExpired, + status, + outputs, + agentState, + createdBy: actionRequest.createdBy, + comment: actionRequest.comment, + parameters: actionRequest.parameters, + alertIds: actionRequest.alertIds, + ruleId: actionRequest.ruleId, + ruleName: actionRequest.ruleName, + }; + + return actionDetails as T; +}; diff --git a/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/feature_keys.ts b/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/feature_keys.ts new file mode 100644 index 0000000000000..b7e8b8ab87548 --- /dev/null +++ b/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/feature_keys.ts @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 { ResponseActionsApiCommandNames } from '../../../../common/endpoint/service/response_actions/constants'; + +export const FEATURE_KEYS = { + HOST_ISOLATION: 'Host isolation', + HOST_ISOLATION_EXCEPTION: 'Host isolation exception', + HOST_ISOLATION_EXCEPTION_BY_POLICY: 'Host isolation exception by policy', + TRUSTED_APP_BY_POLICY: 'Trusted app by policy', + EVENT_FILTERS_BY_POLICY: 'Event filters by policy', + BLOCKLIST_BY_POLICY: 'Blocklists by policy', + RANSOMWARE_PROTECTION: 'Ransomeware protection', + MEMORY_THREAT_PROTECTION: 'Memory threat protection', + BEHAVIOR_PROTECTION: 'Behavior protection', + KILL_PROCESS: 'Kill process', + SUSPEND_PROCESS: 'Suspend process', + RUNNING_PROCESSES: 'Get running processes', + GET_FILE: 'Get file', + UPLOAD: 'Upload file', + EXECUTE: 'Execute command', + ALERTS_BY_PROCESS_ANCESTRY: 'Get related alerts by process ancestry', + ENDPOINT_EXCEPTIONS: 'Endpoint exceptions', +} as const; + +export type FeatureKeys = keyof typeof FEATURE_KEYS; + +const RESPONSE_ACTIONS_FEATURE_KEY: Readonly> = + { + isolate: 'HOST_ISOLATION', + unisolate: 'HOST_ISOLATION', + 'kill-process': 'KILL_PROCESS', + 'suspend-process': 'SUSPEND_PROCESS', + 'running-processes': 'RUNNING_PROCESSES', + 'get-file': 'GET_FILE', + execute: 'EXECUTE', + upload: 'UPLOAD', + }; + +export const getResponseActionFeatureKey = ( + responseAction: ResponseActionsApiCommandNames +): FeatureKeys | undefined => { + return RESPONSE_ACTIONS_FEATURE_KEY[responseAction]; +}; diff --git a/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/index.ts b/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/index.ts index 5c880f67847ed..8b58f62e45e1a 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/index.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/index.ts @@ -6,6 +6,6 @@ */ import { FeatureUsageService } from './service'; -export type { FeatureKeys } from './service'; +export type { FeatureKeys } from './feature_keys'; export const featureUsageService = new FeatureUsageService(); diff --git a/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/mocks.ts b/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/mocks.ts index 1eb1b3b82371a..d032085bfe403 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/mocks.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/mocks.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { getResponseActionFeatureKey } from './feature_keys'; import type { FeatureUsageService } from './service'; import type { PolicyData } from '../../../../common/endpoint/types'; @@ -13,6 +14,7 @@ export function createFeatureUsageServiceMock() { setup: jest.fn(), start: jest.fn(), notifyUsage: jest.fn(), + getResponseActionFeatureKey: jest.fn(getResponseActionFeatureKey), } as unknown as jest.Mocked; } diff --git a/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/service.ts b/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/service.ts index ffebaac4420fc..a236d6b569e23 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/service.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/service.ts @@ -7,37 +7,19 @@ import type { Values } from '@kbn/utility-types'; import type { LicensingPluginSetup, LicensingPluginStart } from '@kbn/licensing-plugin/server'; - -const FEATURES = { - HOST_ISOLATION: 'Host isolation', - HOST_ISOLATION_EXCEPTION: 'Host isolation exception', - HOST_ISOLATION_EXCEPTION_BY_POLICY: 'Host isolation exception by policy', - TRUSTED_APP_BY_POLICY: 'Trusted app by policy', - EVENT_FILTERS_BY_POLICY: 'Event filters by policy', - BLOCKLIST_BY_POLICY: 'Blocklists by policy', - RANSOMWARE_PROTECTION: 'Ransomeware protection', - MEMORY_THREAT_PROTECTION: 'Memory threat protection', - BEHAVIOR_PROTECTION: 'Behavior protection', - KILL_PROCESS: 'Kill process', - SUSPEND_PROCESS: 'Suspend process', - RUNNING_PROCESSES: 'Get running processes', - GET_FILE: 'Get file', - EXECUTE: 'Execute command', - ALERTS_BY_PROCESS_ANCESTRY: 'Get related alerts by process ancestry', - ENDPOINT_EXCEPTIONS: 'Endpoint exceptions', -} as const; - -export type FeatureKeys = keyof typeof FEATURES; +import type { ResponseActionsApiCommandNames } from '../../../../common/endpoint/service/response_actions/constants'; +import type { FeatureKeys } from './feature_keys'; +import { getResponseActionFeatureKey, FEATURE_KEYS } from './feature_keys'; export class FeatureUsageService { private licensingPluginStart: LicensingPluginStart | undefined; - private get notify(): (featureName: Values) => void { + private get notify(): (featureName: Values) => void { return this.licensingPluginStart?.featureUsage.notifyUsage || function () {}; } public setup(licensingPluginSetup: LicensingPluginSetup): void { - Object.values(FEATURES).map((featureValue) => + Object.values(FEATURE_KEYS).map((featureValue) => licensingPluginSetup.featureUsage.register(featureValue, 'platinum') ); } @@ -47,6 +29,12 @@ export class FeatureUsageService { } public notifyUsage(featureKey: FeatureKeys): void { - this.notify(FEATURES[featureKey]); + this.notify(FEATURE_KEYS[featureKey]); + } + + public getResponseActionFeatureKey( + responseAction: ResponseActionsApiCommandNames + ): FeatureKeys | undefined { + return getResponseActionFeatureKey(responseAction); } } diff --git a/x-pack/plugins/security_solution/server/endpoint/utils/action_list_helpers.test.ts b/x-pack/plugins/security_solution/server/endpoint/utils/action_list_helpers.test.ts index cfee4407500bd..c552cb3601534 100644 --- a/x-pack/plugins/security_solution/server/endpoint/utils/action_list_helpers.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/utils/action_list_helpers.test.ts @@ -5,15 +5,13 @@ * 2.0. */ -import { v4 as uuidv4 } from 'uuid'; import type { ScopedClusterClientMock } from '@kbn/core/server/mocks'; import { elasticsearchServiceMock } from '@kbn/core/server/mocks'; import { applyActionListEsSearchMock, createActionRequestsEsSearchResultsMock, - createActionResponsesEsSearchResultsMock, } from '../services/actions/mocks'; -import { getActions, getActionResponses } from './action_list_helpers'; +import { getActions } from './action_list_helpers'; describe('action helpers', () => { let mockScopedEsClient: ScopedClusterClientMock; @@ -36,18 +34,7 @@ describe('action helpers', () => { must: [ { bool: { - filter: [ - { - term: { - input_type: 'endpoint', - }, - }, - { - term: { - type: 'INPUT_ACTION', - }, - }, - ], + filter: [], }, }, ], @@ -96,16 +83,6 @@ describe('action helpers', () => { { bool: { filter: [ - { - term: { - input_type: 'endpoint', - }, - }, - { - term: { - type: 'INPUT_ACTION', - }, - }, { range: { '@timestamp': { @@ -210,16 +187,6 @@ describe('action helpers', () => { { bool: { filter: [ - { - term: { - input_type: 'endpoint', - }, - }, - { - term: { - type: 'INPUT_ACTION', - }, - }, { range: { '@timestamp': { @@ -307,97 +274,4 @@ describe('action helpers', () => { expect(actions.actionRequests?.body?.hits?.hits[0]._source?.agent.id).toEqual('agent-a'); }); }); - - describe('#getActionResponses', () => { - it('should use base filters correctly when no other filter options provided', async () => { - const esClient = mockScopedEsClient.asInternalUser; - applyActionListEsSearchMock(esClient); - await getActionResponses({ esClient, actionIds: [] }); - - expect(esClient.search).toHaveBeenCalledWith( - { - body: { - query: { - bool: { - filter: [], - }, - }, - }, - from: 0, - index: ['.fleet-actions-results', '.logs-endpoint.action.responses-*'], - size: 10000, - }, - { - headers: { - 'X-elastic-product-origin': 'fleet', - }, - ignore: [404], - meta: true, - } - ); - }); - it('should query with actionIds and elasticAgentIds when provided', async () => { - const actionIds = [uuidv4(), uuidv4()]; - const elasticAgentIds = ['123', '456']; - const esClient = mockScopedEsClient.asInternalUser; - applyActionListEsSearchMock(esClient); - await getActionResponses({ esClient, actionIds, elasticAgentIds }); - - expect(esClient.search).toHaveBeenCalledWith( - { - body: { - query: { - bool: { - filter: [ - { - terms: { - agent_id: elasticAgentIds, - }, - }, - { - terms: { - action_id: actionIds, - }, - }, - ], - }, - }, - }, - from: 0, - index: ['.fleet-actions-results', '.logs-endpoint.action.responses-*'], - size: 10000, - }, - { - headers: { - 'X-elastic-product-origin': 'fleet', - }, - ignore: [404], - meta: true, - } - ); - }); - it('should return expected output', async () => { - const esClient = mockScopedEsClient.asInternalUser; - const actionRes = createActionResponsesEsSearchResultsMock(); - applyActionListEsSearchMock(esClient, undefined, actionRes); - - const responses = await getActionResponses({ - esClient, - actionIds: ['123'], - elasticAgentIds: ['agent-a'], - }); - - const responseHits = responses.body.hits.hits; - - expect(responseHits.length).toEqual(2); - expect( - responseHits.map((e) => e._index).filter((e) => e.includes('.fleet-actions-results')).length - ).toEqual(1); - expect( - responseHits - .map((e) => e._index) - .filter((e) => e.includes('.logs-endpoint.action.responses')).length - ).toEqual(1); - }); - }); }); diff --git a/x-pack/plugins/security_solution/server/endpoint/utils/action_list_helpers.ts b/x-pack/plugins/security_solution/server/endpoint/utils/action_list_helpers.ts index c74373311cf72..4c1d7e584f214 100644 --- a/x-pack/plugins/security_solution/server/endpoint/utils/action_list_helpers.ts +++ b/x-pack/plugins/security_solution/server/endpoint/utils/action_list_helpers.ts @@ -5,19 +5,13 @@ * 2.0. */ -import type { ElasticsearchClient } from '@kbn/core/server'; import type { SearchRequest } from '@kbn/data-plugin/public'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import type { TransportResult } from '@elastic/elasticsearch'; import { fromKueryExpression, toElasticsearchQuery } from '@kbn/es-query'; import { ENDPOINT_ACTIONS_INDEX } from '../../../common/endpoint/constants'; -import type { - LogsEndpointAction, - EndpointActionResponse, - LogsEndpointActionResponse, -} from '../../../common/endpoint/types'; -import { ACTIONS_SEARCH_PAGE_SIZE, ACTION_RESPONSE_INDICES } from '../services/actions/constants'; +import type { LogsEndpointAction } from '../../../common/endpoint/types'; import { getDateFilters } from '../services/actions/utils'; import { catchAndWrapError } from './wrap_errors'; import type { GetActionDetailsListParam } from '../services/actions/action_list'; @@ -61,12 +55,7 @@ export const getActions = async ({ const dateFilters = getDateFilters({ startDate, endDate }); - const actionsFilters = [ - { term: { input_type: 'endpoint' } }, - { term: { type: 'INPUT_ACTION' } }, - ...dateFilters, - ...additionalFilters, - ]; + const actionsFilters = [...dateFilters, ...additionalFilters]; const must: SearchRequest = [ { @@ -144,53 +133,3 @@ export const getActions = async ({ return { actionIds, actionRequests }; }; - -export const getActionResponses = async ({ - actionIds, - elasticAgentIds, - esClient, -}: { - actionIds: string[]; - elasticAgentIds?: string[]; - esClient: ElasticsearchClient; -}): Promise< - TransportResult< - estypes.SearchResponse, - unknown - > -> => { - const filter = []; - if (elasticAgentIds?.length) { - filter.push({ terms: { agent_id: elasticAgentIds } }); - } - if (actionIds.length) { - filter.push({ terms: { action_id: actionIds } }); - } - - const responsesSearchQuery: SearchRequest = { - index: ACTION_RESPONSE_INDICES, - size: ACTIONS_SEARCH_PAGE_SIZE, - from: 0, - body: { - query: { - bool: { - filter: filter.length ? filter : [], - }, - }, - }, - }; - - const actionResponses: TransportResult< - estypes.SearchResponse, - unknown - > = await esClient - .search(responsesSearchQuery, { - ...queryOptions, - headers: { - 'X-elastic-product-origin': 'fleet', - }, - meta: true, - }) - .catch(catchAndWrapError); - return actionResponses; -}; diff --git a/x-pack/plugins/security_solution/server/endpoint/utils/dump.ts b/x-pack/plugins/security_solution/server/endpoint/utils/stringify.ts similarity index 88% rename from x-pack/plugins/security_solution/server/endpoint/utils/dump.ts rename to x-pack/plugins/security_solution/server/endpoint/utils/stringify.ts index ae05b73fac05a..bd61861b6b9fc 100644 --- a/x-pack/plugins/security_solution/server/endpoint/utils/dump.ts +++ b/x-pack/plugins/security_solution/server/endpoint/utils/stringify.ts @@ -13,6 +13,6 @@ import { inspect } from 'util'; * @param depth */ // eslint-disable-next-line @typescript-eslint/no-explicit-any -export const dump = (content: any, depth = 8): string => { +export const stringify = (content: any, depth = 8): string => { return inspect(content, { depth }); }; diff --git a/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/base_validator.ts b/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/base_validator.ts index 4630ad9edec07..4d92f5f2c9dd8 100644 --- a/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/base_validator.ts +++ b/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/base_validator.ts @@ -11,6 +11,7 @@ import { isEqual } from 'lodash/fp'; import type { ExceptionListItemSchema } from '@kbn/securitysolution-io-ts-list-types'; import { OperatingSystem } from '@kbn/securitysolution-utils'; +import type { FeatureKeys } from '../../../endpoint/services'; import type { EndpointAuthz } from '../../../../common/endpoint/types/authz'; import type { EndpointAppContextService } from '../../../endpoint/endpoint_app_context_services'; import type { ExceptionItemLikeOptions } from '../types'; @@ -21,7 +22,6 @@ import { } from '../../../../common/endpoint/service/artifacts'; import { EndpointArtifactExceptionValidationError } from './errors'; import { EndpointExceptionsValidationError } from './endpoint_exception_errors'; -import type { FeatureKeys } from '../../../endpoint/services/feature_usage/service'; export const BasicEndpointExceptionDataSchema = schema.object( { From 0a90b66ed37936086ce272424124fa51ee98aa14 Mon Sep 17 00:00:00 2001 From: Jonathan Budzenski Date: Thu, 4 Jan 2024 09:35:15 -0600 Subject: [PATCH 115/323] skip suite failing es promotion (#172984) --- x-pack/test/functional/apps/aiops/change_point_detection.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/functional/apps/aiops/change_point_detection.ts b/x-pack/test/functional/apps/aiops/change_point_detection.ts index 787d1b31df115..158d9a9c10cd0 100644 --- a/x-pack/test/functional/apps/aiops/change_point_detection.ts +++ b/x-pack/test/functional/apps/aiops/change_point_detection.ts @@ -16,7 +16,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { // aiops lives in the ML UI so we need some related services. const ml = getService('ml'); - describe('change point detection', async function () { + // Failing ES Promotion: https://github.com/elastic/kibana/issues/172984 + describe.skip('change point detection', async function () { before(async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/ml/ecommerce'); await ml.testResources.createDataViewIfNeeded('ft_ecommerce', 'order_date'); From 1182ce678c3b190aa5172f2b473db0d84ba12f5d Mon Sep 17 00:00:00 2001 From: jennypavlova Date: Thu, 4 Jan 2024 17:09:09 +0100 Subject: [PATCH 116/323] [ObsUX][Profiling, Infra] Add NEW badge to the Profiling tab (#174242) Closes #173156 ## Summary This PR adds a `NEW` badge to the profiling tab and changes the profiling prompt badge color to pink ## Testing The badges can be checked on the node details page and inside the host details flyout: ![image](https://github.com/elastic/kibana/assets/14139027/30f4ca24-b460-4fe9-8c2c-372e435a1c64) ![image](https://github.com/elastic/kibana/assets/14139027/423232b2-fc2e-4718-a089-180157db22da) --- .../asset_details_tabs.tsx | 3 +++ .../overview/kpis/cpu_profiling_prompt.tsx | 8 ++------ .../public/components/asset_details/types.ts | 1 + .../infra/public/components/new_badge.tsx | 18 ++++++++++++++++++ 4 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 x-pack/plugins/infra/public/components/new_badge.tsx diff --git a/x-pack/plugins/infra/public/common/asset_details_config/asset_details_tabs.tsx b/x-pack/plugins/infra/public/common/asset_details_config/asset_details_tabs.tsx index 312ed7eb04a98..2bc3d5661e22b 100644 --- a/x-pack/plugins/infra/public/common/asset_details_config/asset_details_tabs.tsx +++ b/x-pack/plugins/infra/public/common/asset_details_config/asset_details_tabs.tsx @@ -6,7 +6,9 @@ */ import { i18n } from '@kbn/i18n'; +import React from 'react'; import { ContentTabIds, type Tab } from '../../components/asset_details/types'; +import { NewBadge } from '../../components/new_badge'; export const commonFlyoutTabs: Tab[] = [ { @@ -32,6 +34,7 @@ export const commonFlyoutTabs: Tab[] = [ name: i18n.translate('xpack.infra.metrics.nodeDetails.tabs.profiling', { defaultMessage: 'Universal Profiling', }), + append: , }, { id: ContentTabIds.LOGS, diff --git a/x-pack/plugins/infra/public/components/asset_details/tabs/overview/kpis/cpu_profiling_prompt.tsx b/x-pack/plugins/infra/public/components/asset_details/tabs/overview/kpis/cpu_profiling_prompt.tsx index 54651b46bcce8..256ef447f8709 100644 --- a/x-pack/plugins/infra/public/components/asset_details/tabs/overview/kpis/cpu_profiling_prompt.tsx +++ b/x-pack/plugins/infra/public/components/asset_details/tabs/overview/kpis/cpu_profiling_prompt.tsx @@ -8,8 +8,8 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { EuiButtonEmpty } from '@elastic/eui'; -import { EuiBadge } from '@elastic/eui'; import { EuiFlexGroup } from '@elastic/eui'; +import { NewBadge } from '../../../../new_badge'; import { useProfilingIntegrationSetting } from '../../../../../hooks/use_profiling_integration_setting'; import { useTabSwitcherContext } from '../../../hooks/use_tab_switcher'; @@ -28,11 +28,7 @@ export function CpuProfilingPrompt() { gutterSize="s" data-test-subj="infraAssetDetailsCPUProfilingPrompt" > - - {i18n.translate('xpack.infra.cpuProfilingPrompt.newBadgeLabel', { - defaultMessage: 'NEW', - })} - + {i18n.translate('xpack.infra.cpuProfilingPrompt.promptText', { defaultMessage: 'View CPU Breakdown using', diff --git a/x-pack/plugins/infra/public/components/asset_details/types.ts b/x-pack/plugins/infra/public/components/asset_details/types.ts index dd3ae9af9d62e..346eda2bb3c32 100644 --- a/x-pack/plugins/infra/public/components/asset_details/types.ts +++ b/x-pack/plugins/infra/public/components/asset_details/types.ts @@ -60,6 +60,7 @@ export type RenderMode = FlyoutProps | FullPageProps; export interface Tab { id: ContentTabIds; name: string; + append?: JSX.Element; } export type LinkOptions = 'alertRule' | 'nodeDetails' | 'apmServices'; diff --git a/x-pack/plugins/infra/public/components/new_badge.tsx b/x-pack/plugins/infra/public/components/new_badge.tsx new file mode 100644 index 0000000000000..efbe026d8b7aa --- /dev/null +++ b/x-pack/plugins/infra/public/components/new_badge.tsx @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiBadge } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; + +export const NewBadge = () => ( + + {i18n.translate('xpack.infra.newBadgeLabel', { + defaultMessage: 'NEW', + })} + +); From 9cb830fe9a021cda1d091effbe3e0cd300220969 Mon Sep 17 00:00:00 2001 From: Lukas Olson Date: Thu, 4 Jan 2024 09:16:03 -0700 Subject: [PATCH 117/323] Fix saved query update test (#173576) ## Summary Fixes https://github.com/elastic/kibana/issues/173094. Relying on the text from the toast notification was problematic because sometimes the toast would already have disappeared by the time the check was happening. Instead, this updates the test to refresh and check the saved query list for the updated saved query. Flaky test runner: https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/4750 ### Checklist Delete any items that are not applicable to this PR. - [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed - [ ] Any UI touched in this PR is usable by keyboard only (learn more about [keyboard accessibility](https://webaim.org/techniques/keyboard/)) - [ ] Any UI touched in this PR does not create any new axe failures (run axe in browser: [FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/), [Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US)) - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [ ] This renders correctly on smaller devices using a responsive layout. (You can test this [in your browser](https://www.browserstack.com/guide/responsive-testing-on-local-server)) - [ ] This was checked for [cross-browser compatibility](https://www.elastic.co/support/matrix#matrix_browsers) ### Risk Matrix Delete this section if it is not applicable to this PR. Before closing this PR, invite QA, stakeholders, and other developers to identify risks that should be tested prior to the change/feature release. When forming the risk matrix, consider some of the following examples and how they may potentially impact the change: | Risk | Probability | Severity | Mitigation/Notes | |---------------------------|-------------|----------|-------------------------| | Multiple Spaces—unexpected behavior in non-default Kibana Space. | Low | High | Integration tests will verify that all features are still supported in non-default Kibana Space and when user switches between spaces. | | Multiple nodes—Elasticsearch polling might have race conditions when multiple Kibana nodes are polling for the same tasks. | High | Low | Tasks are idempotent, so executing them multiple times will not result in logical error, but will degrade performance. To test for this case we add plenty of unit tests around this logic and document manual testing procedure. | | Code should gracefully handle cases when feature X or plugin Y are disabled. | Medium | High | Unit tests will verify that any feature flag or plugin combination still results in our service operational. | | [See more potential risk examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) | ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --- .../functional/apps/discover/saved_queries.ts | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/x-pack/test/functional/apps/discover/saved_queries.ts b/x-pack/test/functional/apps/discover/saved_queries.ts index 466524f4dbf80..3daf70e3f560c 100644 --- a/x-pack/test/functional/apps/discover/saved_queries.ts +++ b/x-pack/test/functional/apps/discover/saved_queries.ts @@ -5,7 +5,6 @@ * 2.0. */ -import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { @@ -13,7 +12,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const spaces = getService('spaces'); - const toasts = getService('toasts'); const PageObjects = getPageObjects([ 'common', 'discover', @@ -26,8 +24,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const savedQueryName = 'shared-saved-query'; const destinationSpaceId = 'nondefaultspace'; - // Failing: See https://github.com/elastic/kibana/issues/173094 - describe.skip('Discover Saved Queries', () => { + describe('Discover Saved Queries', () => { before('initialize tests', async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); await kibanaServer.importExport.load( @@ -53,6 +50,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // Navigate to Discover & create a saved query await PageObjects.common.navigateToApp('discover'); await queryBar.setQuery('response:200'); + await queryBar.submitQuery(); await savedQueryManagementComponent.saveNewQuery(savedQueryName, '', true, false); await savedQueryManagementComponent.savedQueryExistOrFail(savedQueryName); await savedQueryManagementComponent.closeSavedQueryManagementComponent(); @@ -76,24 +74,26 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('updates a saved query', async () => { + const name = `${savedQueryName}-update`; + // Navigate to Discover & create a saved query await PageObjects.common.navigateToApp('discover'); await queryBar.setQuery('response:200'); - await savedQueryManagementComponent.saveNewQuery(savedQueryName, '', true, false); - await savedQueryManagementComponent.savedQueryExistOrFail(savedQueryName); + await queryBar.submitQuery(); + await savedQueryManagementComponent.saveNewQuery(name, '', true, false); + await savedQueryManagementComponent.savedQueryExistOrFail(name); await savedQueryManagementComponent.closeSavedQueryManagementComponent(); - // Navigate to Discover & create a saved query + // Update the saved query await queryBar.setQuery('response:404'); + await queryBar.submitQuery(); await savedQueryManagementComponent.updateCurrentlyLoadedQuery('', true, false); - // Expect to see a success toast - const successToast = await toasts.getToastElement(1); - const successText = await successToast.getVisibleText(); - expect(successText).to.equal(`Your query "${savedQueryName}" was saved`); - + // Navigate to Discover ensure updated query exists await PageObjects.common.navigateToApp('discover'); - await savedQueryManagementComponent.deleteSavedQuery(savedQueryName); + await savedQueryManagementComponent.savedQueryExistOrFail(name); + await savedQueryManagementComponent.closeSavedQueryManagementComponent(); + await savedQueryManagementComponent.deleteSavedQuery(name); }); }); }); From 615e3f554d13d9122142bc521b54285d48b9149a Mon Sep 17 00:00:00 2001 From: Jon Date: Thu, 4 Jan 2024 11:19:38 -0600 Subject: [PATCH 118/323] [build] Upload CDN assets (#173159) This uploads CDN assets to a GCS bucket on commit and after all tests have passed. This will run on pull requests with `ci:project-deploy-*` and `ci:build-serverless-image` labels, and on `main`. Assets will include the first 12 digits of the commit sha as a base path. --- .buildkite/scripts/lifecycle/pre_command.sh | 6 ++++++ .../scripts/steps/artifacts/docker_image.sh | 16 ++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/.buildkite/scripts/lifecycle/pre_command.sh b/.buildkite/scripts/lifecycle/pre_command.sh index 9b19e5e82da84..c14325efaa2a5 100755 --- a/.buildkite/scripts/lifecycle/pre_command.sh +++ b/.buildkite/scripts/lifecycle/pre_command.sh @@ -142,6 +142,12 @@ export SYNTHETICS_REMOTE_KIBANA_URL DEPLOY_TAGGER_SLACK_WEBHOOK_URL=${DEPLOY_TAGGER_SLACK_WEBHOOK_URL:-"$(vault_get kibana-serverless-release-tools DEPLOY_TAGGER_SLACK_WEBHOOK_URL)"} export DEPLOY_TAGGER_SLACK_WEBHOOK_URL +GCS_SA_CDN_QA_KEY="$(vault_get gcs-sa-cdn-qa key)" +export GCS_SA_CDN_QA_KEY + +GCS_SA_CDN_QA_BUCKET="$(vault_get gcs-sa-cdn-qa bucket)" +export GCS_SA_CDN_QA_BUCKET + # Setup Failed Test Reporter Elasticsearch credentials { TEST_FAILURES_ES_CLOUD_ID=$(vault_get failed_tests_reporter_es cloud_id) diff --git a/.buildkite/scripts/steps/artifacts/docker_image.sh b/.buildkite/scripts/steps/artifacts/docker_image.sh index 0518e17f6524e..864bc26805fbb 100755 --- a/.buildkite/scripts/steps/artifacts/docker_image.sh +++ b/.buildkite/scripts/steps/artifacts/docker_image.sh @@ -26,7 +26,7 @@ if docker manifest inspect $KIBANA_IMAGE &> /dev/null; then exit 1 fi -echo "--- Build images" +echo "--- Build Kibana" node scripts/build \ --debug \ --release \ @@ -37,8 +37,7 @@ node scripts/build \ --skip-docker-ubuntu \ --skip-docker-ubi \ --skip-docker-cloud \ - --skip-docker-contexts \ - --skip-cdn-assets + --skip-docker-contexts echo "--- Tag images" docker rmi "$KIBANA_IMAGE" @@ -88,12 +87,21 @@ fi echo "--- Build dependencies report" node scripts/licenses_csv_report "--csv=target/dependencies-$GIT_ABBREV_COMMIT.csv" -echo "--- Upload artifacts" +echo "--- Upload CDN assets" cd target +gcloud auth activate-service-account --key-file <(echo "$GCS_SA_CDN_QA_KEY") + +CDN_ASSETS_FOLDER=$(mktemp -d) +tar -xf "kibana-$BASE_VERSION-cdn-assets.tar.gz" -C "$CDN_ASSETS_FOLDER" --strip=1 + +gsutil -m cp -r "$CDN_ASSETS_FOLDER/*" "gs://$GCS_SA_CDN_QA_BUCKET/$GIT_ABBREV_COMMIT" + +echo "--- Upload archives" buildkite-agent artifact upload "kibana-$BASE_VERSION-linux-x86_64.tar.gz" buildkite-agent artifact upload "kibana-$BASE_VERSION-linux-aarch64.tar.gz" buildkite-agent artifact upload "kibana-$BASE_VERSION-docker-image.tar.gz" buildkite-agent artifact upload "kibana-$BASE_VERSION-docker-image-aarch64.tar.gz" +buildkite-agent artifact upload "kibana-$BASE_VERSION-cdn-assets.tar.gz" buildkite-agent artifact upload "dependencies-$GIT_ABBREV_COMMIT.csv" cd - From 7034f823d8446933b30f3d8236ce2ed75e441d8d Mon Sep 17 00:00:00 2001 From: Stratoula Kalafateli Date: Thu, 4 Jan 2024 19:22:45 +0200 Subject: [PATCH 119/323] [Lens] Fixes palette container to be full width (#174275) ## Summary Closes https://github.com/elastic/kibana/issues/174270 Fullwidth color mapping row image --- .../lens/public/visualizations/partition/dimension_editor.tsx | 1 + .../public/visualizations/tagcloud/tags_dimension_editor.tsx | 1 + .../visualizations/xy/xy_config_panel/dimension_editor.tsx | 1 + 3 files changed, 3 insertions(+) diff --git a/x-pack/plugins/lens/public/visualizations/partition/dimension_editor.tsx b/x-pack/plugins/lens/public/visualizations/partition/dimension_editor.tsx index e88d354acf68b..7cf4c6bfff66b 100644 --- a/x-pack/plugins/lens/public/visualizations/partition/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/visualizations/partition/dimension_editor.tsx @@ -140,6 +140,7 @@ export function DimensionEditor(props: DimensionEditorProps) { defaultMessage: 'Color mapping', })} style={{ alignItems: 'center' }} + fullWidth > Date: Thu, 4 Jan 2024 18:24:09 +0100 Subject: [PATCH 120/323] [Defend Workflows][FTR] Reenable trusted apps list FTR (#174186) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Closes #171481 This PR enables Trusted Apps List FTR - they were flaky in Serverless environment in November, but now passed 250 times perfectly. - 50x https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/4741 50/50 ✅ - 200x https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/4746 200/200 ✅ --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../apps/integrations/trusted_apps_list.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/x-pack/test/security_solution_endpoint/apps/integrations/trusted_apps_list.ts b/x-pack/test/security_solution_endpoint/apps/integrations/trusted_apps_list.ts index 1d48a415b1577..e00dde08d58fb 100644 --- a/x-pack/test/security_solution_endpoint/apps/integrations/trusted_apps_list.ts +++ b/x-pack/test/security_solution_endpoint/apps/integrations/trusted_apps_list.ts @@ -16,8 +16,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const browser = getService('browser'); const endpointTestResources = getService('endpointTestResources'); - // FLAKY: https://github.com/elastic/kibana/issues/171481 - describe.skip('When on the Trusted Apps list', function () { + describe('When on the Trusted Apps list', function () { targetTags(this, ['@ess', '@serverless']); let indexedData: IndexedHostsAndAlertsResponse; @@ -34,8 +33,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.missingOrFail('header-page-title'); }); - // FLAKY: https://github.com/elastic/kibana/issues/171481 - it.skip('should be able to add a new trusted app and remove it', async () => { + it('should be able to add a new trusted app and remove it', async () => { const SHA256 = 'A4370C0CF81686C0B696FA6261c9d3e0d810ae704ab8301839dffd5d5112f476'; // Add it From 0515829a9e50740357c0226fd1cb5081a273ccd3 Mon Sep 17 00:00:00 2001 From: Tre Date: Thu, 4 Jan 2024 17:58:17 +0000 Subject: [PATCH 121/323] [FTR] Move find service to shared location (#173874) ## Summary Refactoring general ui service to a kbn package. Resolves an [Appex QA](https://github.com/elastic/appex-qa-team) issue. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .eslintrc.js | 2 +- .../index.ts | 12 ++++++++++++ .../services/all.ts | 4 ++++ .../services}/find.ts | 10 ++++++---- .../services/ftr_provider_context.ts | 7 ++++++- .../config.js | 0 .../several_nested_window_size_changes/test.js | 0 .../several_nested_window_size_changes/test2.js | 0 .../test3.1.js | 0 .../several_nested_window_size_changes/test3.js | 0 .../__tests__/remote_default_window_size.js | 7 +++++-- .../services/remote/browsers.ts | 0 .../services/remote/create_stdout_stream.ts | 0 .../services/remote/index.ts | 2 ++ .../services/remote/network_profiles.ts | 0 .../services/remote/poll_for_log_entry.ts | 0 .../remote/prevent_parallel_calls.test.js | 0 .../services/remote/prevent_parallel_calls.ts | 0 .../services/remote/remote.ts | 2 +- .../services/remote/webdriver.ts | 0 .../web_element_wrapper/custom_cheerio_api.ts | 0 .../services}/web_element_wrapper/index.ts | 0 .../scroll_into_view_if_necessary.js | 2 +- .../web_element_wrapper/web_element_wrapper.ts | 2 +- .../tsconfig.json | 17 +++++++---------- .../types.ts | 0 test/examples/search/warnings.ts | 2 +- .../discover/group1/_discover_accessibility.ts | 2 +- .../apps/kibana_overview/_analytics.ts | 2 +- .../management/data_views/_field_formatter.ts | 2 +- test/functional/page_objects/console_page.ts | 2 +- .../page_objects/dashboard_page_controls.ts | 2 +- test/functional/page_objects/discover_page.ts | 2 +- .../page_objects/legacy/data_table_vis.ts | 2 +- test/functional/page_objects/tag_cloud_page.ts | 2 +- test/functional/page_objects/time_picker.ts | 2 +- test/functional/page_objects/timelion_page.ts | 2 +- .../page_objects/visual_builder_page.ts | 2 +- test/functional/services/combo_box.ts | 2 +- test/functional/services/common/browser.ts | 8 ++++---- test/functional/services/common/index.ts | 1 - test/functional/services/common/screenshots.ts | 2 +- .../functional/services/common/test_subjects.ts | 3 +-- .../services/dashboard/expectations.ts | 2 +- .../services/dashboard/panel_actions.ts | 2 +- .../dashboard/panel_drilldown_actions.ts | 2 +- .../services/dashboard/panel_settings.ts | 2 +- test/functional/services/data_grid.ts | 2 +- test/functional/services/doc_table.ts | 2 +- test/functional/services/index.ts | 4 ---- .../functional/services/saved_objects_finder.ts | 2 +- .../services/visualizations/elastic_chart.ts | 2 +- .../apps/group1/dashboard_panel_options.ts | 2 +- .../functional/apps/discover/visualize_field.ts | 2 +- x-pack/test/functional/apps/infra/hosts_view.ts | 2 +- .../dataset_selector.ts | 2 +- .../test/functional/page_objects/graph_page.ts | 2 +- .../functional/page_objects/infra_hosts_view.ts | 2 +- .../page_objects/infra_metrics_explorer.ts | 2 +- .../page_objects/ingest_pipelines_page.ts | 2 +- .../test/functional/page_objects/lens_page.ts | 2 +- .../page_objects/navigational_search.ts | 2 +- .../page_objects/observability_log_explorer.ts | 2 +- .../page_objects/tag_management_page.ts | 2 +- x-pack/test/functional/services/cases/list.ts | 2 +- .../services/infra_source_configuration_form.ts | 2 +- .../services/logs_ui/log_entry_categories.ts | 2 +- .../services/logs_ui/log_entry_rate.ts | 2 +- .../functional/services/logs_ui/log_stream.ts | 2 +- .../services/ml/common_table_service.ts | 2 +- x-pack/test/functional/services/ml/common_ui.ts | 2 +- .../services/ml/data_frame_analytics_results.ts | 2 +- .../services/ml/data_frame_analytics_table.ts | 2 +- .../services/ml/stack_management_jobs.ts | 2 +- x-pack/test/functional/services/ml/swim_lane.ts | 2 +- .../services/ml/trained_models_table.ts | 2 +- .../services/observability/alerts/common.ts | 2 +- .../test/functional/services/search_sessions.ts | 2 +- .../services/transform/transform_table.ts | 2 +- .../page_objects/app_search.ts | 2 +- .../page_objects/triggers_actions_ui_page.ts | 5 +---- .../test_suites/resolver/index.ts | 2 +- .../apps/integrations/endpoint_exceptions.ts | 2 +- .../page_objects/endpoint_page.ts | 2 +- ...ingest_manager_create_package_policy_page.ts | 2 +- .../page_objects/page_utils.ts | 2 +- .../page_objects/detections/index.ts | 2 +- .../page_objects/hosts/index.ts | 2 +- x-pack/test/tsconfig.json | 1 + .../upgrade/services/rules_upgrade_services.ts | 5 +---- .../page_objects/svl_common_navigation.ts | 2 +- .../svl_triggers_actions_ui_page.ts | 5 +---- .../common/discover/x_pack/visualize_field.ts | 2 +- .../common/examples/search/warnings.ts | 2 +- .../index_management/component_templates.ts | 2 +- .../index_management/index_templates.ts | 2 +- .../observability/infra/hosts_page.ts | 2 +- x-pack/test_serverless/tsconfig.json | 1 + 98 files changed, 119 insertions(+), 107 deletions(-) rename {test/functional/services/common => packages/kbn-ftr-common-functional-ui-services/services}/find.ts (98%) rename {test/functional => packages/kbn-ftr-common-functional-ui-services}/services/remote/__tests__/fixtures/several_nested_window_size_changes/config.js (100%) rename {test/functional => packages/kbn-ftr-common-functional-ui-services}/services/remote/__tests__/fixtures/several_nested_window_size_changes/test.js (100%) rename {test/functional => packages/kbn-ftr-common-functional-ui-services}/services/remote/__tests__/fixtures/several_nested_window_size_changes/test2.js (100%) rename {test/functional => packages/kbn-ftr-common-functional-ui-services}/services/remote/__tests__/fixtures/several_nested_window_size_changes/test3.1.js (100%) rename {test/functional => packages/kbn-ftr-common-functional-ui-services}/services/remote/__tests__/fixtures/several_nested_window_size_changes/test3.js (100%) rename {test/functional => packages/kbn-ftr-common-functional-ui-services}/services/remote/__tests__/remote_default_window_size.js (89%) rename {test/functional => packages/kbn-ftr-common-functional-ui-services}/services/remote/browsers.ts (100%) rename {test/functional => packages/kbn-ftr-common-functional-ui-services}/services/remote/create_stdout_stream.ts (100%) rename {test/functional => packages/kbn-ftr-common-functional-ui-services}/services/remote/index.ts (74%) rename {test/functional => packages/kbn-ftr-common-functional-ui-services}/services/remote/network_profiles.ts (100%) rename {test/functional => packages/kbn-ftr-common-functional-ui-services}/services/remote/poll_for_log_entry.ts (100%) rename {test/functional => packages/kbn-ftr-common-functional-ui-services}/services/remote/prevent_parallel_calls.test.js (100%) rename {test/functional => packages/kbn-ftr-common-functional-ui-services}/services/remote/prevent_parallel_calls.ts (100%) rename {test/functional => packages/kbn-ftr-common-functional-ui-services}/services/remote/remote.ts (98%) rename {test/functional => packages/kbn-ftr-common-functional-ui-services}/services/remote/webdriver.ts (100%) rename {test/functional/services/lib => packages/kbn-ftr-common-functional-ui-services/services}/web_element_wrapper/custom_cheerio_api.ts (100%) rename {test/functional/services/lib => packages/kbn-ftr-common-functional-ui-services/services}/web_element_wrapper/index.ts (100%) rename {test/functional/services/lib => packages/kbn-ftr-common-functional-ui-services/services}/web_element_wrapper/scroll_into_view_if_necessary.js (97%) rename {test/functional/services/lib => packages/kbn-ftr-common-functional-ui-services/services}/web_element_wrapper/web_element_wrapper.ts (99%) rename {test/functional/services/common => packages/kbn-ftr-common-functional-ui-services}/types.ts (100%) diff --git a/.eslintrc.js b/.eslintrc.js index 56fe621c99bb4..96016911e40aa 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -671,7 +671,7 @@ module.exports = { */ { files: [ - 'test/functional/services/lib/web_element_wrapper/scroll_into_view_if_necessary.js', + 'packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/scroll_into_view_if_necessary.js', '**/browser_exec_scripts/**/*.js', ], rules: { diff --git a/packages/kbn-ftr-common-functional-ui-services/index.ts b/packages/kbn-ftr-common-functional-ui-services/index.ts index 5fe8ae6fd0164..e975c838a54a4 100644 --- a/packages/kbn-ftr-common-functional-ui-services/index.ts +++ b/packages/kbn-ftr-common-functional-ui-services/index.ts @@ -8,3 +8,15 @@ export { services as commonFunctionalUIServices } from './services/all'; export type { FtrProviderContext } from './services/ftr_provider_context'; +export { WebElementWrapper } from './services/web_element_wrapper'; +export type { + CustomCheerio, + CustomCheerioStatic, +} from './services/web_element_wrapper/custom_cheerio_api'; +export { Browsers } from './services/remote/browsers'; +export { + NETWORK_PROFILES, + type NetworkOptions, + type NetworkProfile, +} from './services/remote/network_profiles'; +export type { TimeoutOpt } from './types'; diff --git a/packages/kbn-ftr-common-functional-ui-services/services/all.ts b/packages/kbn-ftr-common-functional-ui-services/services/all.ts index 8c8a723660117..a27655fc867eb 100644 --- a/packages/kbn-ftr-common-functional-ui-services/services/all.ts +++ b/packages/kbn-ftr-common-functional-ui-services/services/all.ts @@ -7,7 +7,11 @@ */ import { RetryOnStaleProvider } from './retry_on_stale'; +import { RemoteProvider } from './remote'; +import { FindProvider } from './find'; export const services = { retryOnStale: RetryOnStaleProvider, + __webdriver__: RemoteProvider, + find: FindProvider, }; diff --git a/test/functional/services/common/find.ts b/packages/kbn-ftr-common-functional-ui-services/services/find.ts similarity index 98% rename from test/functional/services/common/find.ts rename to packages/kbn-ftr-common-functional-ui-services/services/find.ts index 682c79047a725..2f8ba340c40be 100644 --- a/test/functional/services/common/find.ts +++ b/packages/kbn-ftr-common-functional-ui-services/services/find.ts @@ -8,10 +8,12 @@ import { WebDriver, WebElement, By, until } from 'selenium-webdriver'; -import { Browsers } from '../remote/browsers'; -import { FtrService, FtrProviderContext } from '../../ftr_provider_context'; -import { WebElementWrapper } from '../lib/web_element_wrapper'; -import { TimeoutOpt } from './types'; +import { Browsers } from './remote/browsers'; +import type { FtrProviderContext } from './ftr_provider_context'; +import { WebElementWrapper } from './web_element_wrapper'; +import { TimeoutOpt } from '../types'; + +import { FtrService } from './ftr_provider_context'; export class FindService extends FtrService { private readonly log = this.ctx.getService('log'); diff --git a/packages/kbn-ftr-common-functional-ui-services/services/ftr_provider_context.ts b/packages/kbn-ftr-common-functional-ui-services/services/ftr_provider_context.ts index 979658fbd8edd..bf80085dd4590 100644 --- a/packages/kbn-ftr-common-functional-ui-services/services/ftr_provider_context.ts +++ b/packages/kbn-ftr-common-functional-ui-services/services/ftr_provider_context.ts @@ -7,8 +7,13 @@ */ import { GenericFtrProviderContext, GenericFtrService } from '@kbn/test'; +import { RetryService } from '@kbn/ftr-common-functional-services'; +import { services as commonFunctionalUiServices } from './all'; -import type { services } from './all'; +const services = { + ...commonFunctionalUiServices, + retry: RetryService, +}; type Services = typeof services; diff --git a/test/functional/services/remote/__tests__/fixtures/several_nested_window_size_changes/config.js b/packages/kbn-ftr-common-functional-ui-services/services/remote/__tests__/fixtures/several_nested_window_size_changes/config.js similarity index 100% rename from test/functional/services/remote/__tests__/fixtures/several_nested_window_size_changes/config.js rename to packages/kbn-ftr-common-functional-ui-services/services/remote/__tests__/fixtures/several_nested_window_size_changes/config.js diff --git a/test/functional/services/remote/__tests__/fixtures/several_nested_window_size_changes/test.js b/packages/kbn-ftr-common-functional-ui-services/services/remote/__tests__/fixtures/several_nested_window_size_changes/test.js similarity index 100% rename from test/functional/services/remote/__tests__/fixtures/several_nested_window_size_changes/test.js rename to packages/kbn-ftr-common-functional-ui-services/services/remote/__tests__/fixtures/several_nested_window_size_changes/test.js diff --git a/test/functional/services/remote/__tests__/fixtures/several_nested_window_size_changes/test2.js b/packages/kbn-ftr-common-functional-ui-services/services/remote/__tests__/fixtures/several_nested_window_size_changes/test2.js similarity index 100% rename from test/functional/services/remote/__tests__/fixtures/several_nested_window_size_changes/test2.js rename to packages/kbn-ftr-common-functional-ui-services/services/remote/__tests__/fixtures/several_nested_window_size_changes/test2.js diff --git a/test/functional/services/remote/__tests__/fixtures/several_nested_window_size_changes/test3.1.js b/packages/kbn-ftr-common-functional-ui-services/services/remote/__tests__/fixtures/several_nested_window_size_changes/test3.1.js similarity index 100% rename from test/functional/services/remote/__tests__/fixtures/several_nested_window_size_changes/test3.1.js rename to packages/kbn-ftr-common-functional-ui-services/services/remote/__tests__/fixtures/several_nested_window_size_changes/test3.1.js diff --git a/test/functional/services/remote/__tests__/fixtures/several_nested_window_size_changes/test3.js b/packages/kbn-ftr-common-functional-ui-services/services/remote/__tests__/fixtures/several_nested_window_size_changes/test3.js similarity index 100% rename from test/functional/services/remote/__tests__/fixtures/several_nested_window_size_changes/test3.js rename to packages/kbn-ftr-common-functional-ui-services/services/remote/__tests__/fixtures/several_nested_window_size_changes/test3.js diff --git a/test/functional/services/remote/__tests__/remote_default_window_size.js b/packages/kbn-ftr-common-functional-ui-services/services/remote/__tests__/remote_default_window_size.js similarity index 89% rename from test/functional/services/remote/__tests__/remote_default_window_size.js rename to packages/kbn-ftr-common-functional-ui-services/services/remote/__tests__/remote_default_window_size.js index 48210ea209da6..8d5182c457331 100644 --- a/test/functional/services/remote/__tests__/remote_default_window_size.js +++ b/packages/kbn-ftr-common-functional-ui-services/services/remote/__tests__/remote_default_window_size.js @@ -9,9 +9,12 @@ import { fork } from 'child_process'; import expect from '@kbn/expect'; +import { REPO_ROOT } from '@kbn/repo-info'; -const FTR_SCRIPT = require.resolve('../../../../../scripts/functional_test_runner'); -const CONFIG_PATH = require.resolve('./fixtures/several_nested_window_size_changes/config.js'); +const FTR_SCRIPT = require.resolve(`${REPO_ROOT}/scripts/functional_test_runner`); +const CONFIG_PATH = require.resolve( + `${REPO_ROOT}/packages/kbn-ftr-common-functional-ui-services/services/remote/__tests__/fixtures/several_nested_window_size_changes/config.js` +); const SECOND = 1000; const DEFAULT_SIZE = { width: 1600, height: 1000 }; diff --git a/test/functional/services/remote/browsers.ts b/packages/kbn-ftr-common-functional-ui-services/services/remote/browsers.ts similarity index 100% rename from test/functional/services/remote/browsers.ts rename to packages/kbn-ftr-common-functional-ui-services/services/remote/browsers.ts diff --git a/test/functional/services/remote/create_stdout_stream.ts b/packages/kbn-ftr-common-functional-ui-services/services/remote/create_stdout_stream.ts similarity index 100% rename from test/functional/services/remote/create_stdout_stream.ts rename to packages/kbn-ftr-common-functional-ui-services/services/remote/create_stdout_stream.ts diff --git a/test/functional/services/remote/index.ts b/packages/kbn-ftr-common-functional-ui-services/services/remote/index.ts similarity index 74% rename from test/functional/services/remote/index.ts rename to packages/kbn-ftr-common-functional-ui-services/services/remote/index.ts index 452a714c887f1..a85a13948ccc3 100644 --- a/test/functional/services/remote/index.ts +++ b/packages/kbn-ftr-common-functional-ui-services/services/remote/index.ts @@ -7,3 +7,5 @@ */ export { RemoteProvider } from './remote'; +export { Browsers } from './browsers'; +export { NETWORK_PROFILES, type NetworkOptions, type NetworkProfile } from './network_profiles'; diff --git a/test/functional/services/remote/network_profiles.ts b/packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts similarity index 100% rename from test/functional/services/remote/network_profiles.ts rename to packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts diff --git a/test/functional/services/remote/poll_for_log_entry.ts b/packages/kbn-ftr-common-functional-ui-services/services/remote/poll_for_log_entry.ts similarity index 100% rename from test/functional/services/remote/poll_for_log_entry.ts rename to packages/kbn-ftr-common-functional-ui-services/services/remote/poll_for_log_entry.ts diff --git a/test/functional/services/remote/prevent_parallel_calls.test.js b/packages/kbn-ftr-common-functional-ui-services/services/remote/prevent_parallel_calls.test.js similarity index 100% rename from test/functional/services/remote/prevent_parallel_calls.test.js rename to packages/kbn-ftr-common-functional-ui-services/services/remote/prevent_parallel_calls.test.js diff --git a/test/functional/services/remote/prevent_parallel_calls.ts b/packages/kbn-ftr-common-functional-ui-services/services/remote/prevent_parallel_calls.ts similarity index 100% rename from test/functional/services/remote/prevent_parallel_calls.ts rename to packages/kbn-ftr-common-functional-ui-services/services/remote/prevent_parallel_calls.ts diff --git a/test/functional/services/remote/remote.ts b/packages/kbn-ftr-common-functional-ui-services/services/remote/remote.ts similarity index 98% rename from test/functional/services/remote/remote.ts rename to packages/kbn-ftr-common-functional-ui-services/services/remote/remote.ts index 6ee7b6e8d9085..6eb10984eeb66 100644 --- a/test/functional/services/remote/remote.ts +++ b/packages/kbn-ftr-common-functional-ui-services/services/remote/remote.ts @@ -7,7 +7,7 @@ */ import { NoSuchSessionError, NoSuchWindowError } from 'selenium-webdriver/lib/error'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../ftr_provider_context'; import { initWebDriver, BrowserConfig } from './webdriver'; import { Browsers } from './browsers'; diff --git a/test/functional/services/remote/webdriver.ts b/packages/kbn-ftr-common-functional-ui-services/services/remote/webdriver.ts similarity index 100% rename from test/functional/services/remote/webdriver.ts rename to packages/kbn-ftr-common-functional-ui-services/services/remote/webdriver.ts diff --git a/test/functional/services/lib/web_element_wrapper/custom_cheerio_api.ts b/packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts similarity index 100% rename from test/functional/services/lib/web_element_wrapper/custom_cheerio_api.ts rename to packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts diff --git a/test/functional/services/lib/web_element_wrapper/index.ts b/packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/index.ts similarity index 100% rename from test/functional/services/lib/web_element_wrapper/index.ts rename to packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/index.ts diff --git a/test/functional/services/lib/web_element_wrapper/scroll_into_view_if_necessary.js b/packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/scroll_into_view_if_necessary.js similarity index 97% rename from test/functional/services/lib/web_element_wrapper/scroll_into_view_if_necessary.js rename to packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/scroll_into_view_if_necessary.js index 514d1bb1d9d7b..bc3453bffa7a6 100644 --- a/test/functional/services/lib/web_element_wrapper/scroll_into_view_if_necessary.js +++ b/packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/scroll_into_view_if_necessary.js @@ -1,4 +1,4 @@ -/* eslint-disable @kbn/eslint/require-license-header */ +/* eslint-disable @kbn/eslint/require-license-header, no-var */ /* @notice * Based on the scroll-into-view-if-necessary module from npm diff --git a/test/functional/services/lib/web_element_wrapper/web_element_wrapper.ts b/packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts similarity index 99% rename from test/functional/services/lib/web_element_wrapper/web_element_wrapper.ts rename to packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts index 6a914c7273ba3..568d8dc5cd879 100644 --- a/test/functional/services/lib/web_element_wrapper/web_element_wrapper.ts +++ b/packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts @@ -15,7 +15,7 @@ import { ToolingLog } from '@kbn/tooling-log'; import { CustomCheerio, CustomCheerioStatic } from './custom_cheerio_api'; // @ts-ignore not supported yet import { scrollIntoViewIfNecessary } from './scroll_into_view_if_necessary'; -import { Browsers } from '../../remote/browsers'; +import { Browsers } from '../remote/browsers'; interface TypeOptions { charByChar: boolean; diff --git a/packages/kbn-ftr-common-functional-ui-services/tsconfig.json b/packages/kbn-ftr-common-functional-ui-services/tsconfig.json index 0c77cc5d6b917..f8ae6aae1b9be 100644 --- a/packages/kbn-ftr-common-functional-ui-services/tsconfig.json +++ b/packages/kbn-ftr-common-functional-ui-services/tsconfig.json @@ -2,18 +2,15 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { "outDir": "target/types", - "types": [ - "jest", - "node" - ] + "types": ["jest", "cheerio", "node"] }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], + "include": ["**/*.ts"], + "exclude": ["target/**/*"], "kbn_references": [ "@kbn/test", + "@kbn/tooling-log", + "@kbn/repo-info", + "@kbn/test-subj-selector", + "@kbn/ftr-common-functional-services" ] } diff --git a/test/functional/services/common/types.ts b/packages/kbn-ftr-common-functional-ui-services/types.ts similarity index 100% rename from test/functional/services/common/types.ts rename to packages/kbn-ftr-common-functional-ui-services/types.ts diff --git a/test/examples/search/warnings.ts b/test/examples/search/warnings.ts index 3a923b4a2ae60..80d4224d2ef83 100644 --- a/test/examples/search/warnings.ts +++ b/test/examples/search/warnings.ts @@ -9,8 +9,8 @@ import type { estypes } from '@elastic/elasticsearch'; import expect from '@kbn/expect'; import assert from 'assert'; +import type { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import type { FtrProviderContext } from '../../functional/ftr_provider_context'; -import type { WebElementWrapper } from '../../functional/services/lib/web_element_wrapper'; // eslint-disable-next-line import/no-default-export export default function ({ getService, getPageObjects }: FtrProviderContext) { diff --git a/test/functional/apps/discover/group1/_discover_accessibility.ts b/test/functional/apps/discover/group1/_discover_accessibility.ts index f5721f1e03f76..815d5aebe7bbf 100644 --- a/test/functional/apps/discover/group1/_discover_accessibility.ts +++ b/test/functional/apps/discover/group1/_discover_accessibility.ts @@ -8,7 +8,7 @@ import expect from '@kbn/expect'; -import { WebElementWrapper } from '../../../services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { diff --git a/test/functional/apps/kibana_overview/_analytics.ts b/test/functional/apps/kibana_overview/_analytics.ts index 1c4897d5830ac..8fd51106cd239 100644 --- a/test/functional/apps/kibana_overview/_analytics.ts +++ b/test/functional/apps/kibana_overview/_analytics.ts @@ -7,8 +7,8 @@ */ import expect from '@kbn/expect'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../ftr_provider_context'; -import { WebElementWrapper } from '../../services/lib/web_element_wrapper'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const find = getService('find'); diff --git a/test/functional/apps/management/data_views/_field_formatter.ts b/test/functional/apps/management/data_views/_field_formatter.ts index 881ba6197510a..fb016151cce5f 100644 --- a/test/functional/apps/management/data_views/_field_formatter.ts +++ b/test/functional/apps/management/data_views/_field_formatter.ts @@ -8,8 +8,8 @@ import { ES_FIELD_TYPES } from '@kbn/field-types'; import expect from '@kbn/expect'; import { FIELD_FORMAT_IDS } from '@kbn/field-formats-plugin/common'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../../ftr_provider_context'; -import { WebElementWrapper } from '../../../services/lib/web_element_wrapper'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const kibanaServer = getService('kibanaServer'); diff --git a/test/functional/page_objects/console_page.ts b/test/functional/page_objects/console_page.ts index 2fabe4222ee4e..51e671d26301b 100644 --- a/test/functional/page_objects/console_page.ts +++ b/test/functional/page_objects/console_page.ts @@ -8,8 +8,8 @@ import { Key } from 'selenium-webdriver'; import { asyncForEach } from '@kbn/std'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../ftr_provider_context'; -import { WebElementWrapper } from '../services/lib/web_element_wrapper'; export class ConsolePageObject extends FtrService { private readonly testSubjects = this.ctx.getService('testSubjects'); diff --git a/test/functional/page_objects/dashboard_page_controls.ts b/test/functional/page_objects/dashboard_page_controls.ts index af6f3f81563d3..f3ca32531995e 100644 --- a/test/functional/page_objects/dashboard_page_controls.ts +++ b/test/functional/page_objects/dashboard_page_controls.ts @@ -17,8 +17,8 @@ import { OptionsListSortingType } from '@kbn/controls-plugin/common/options_list import expect from '@kbn/expect'; import { asyncForEach } from '@kbn/std'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../ftr_provider_context'; -import { WebElementWrapper } from '../services/lib/web_element_wrapper'; interface OptionsListAdditionalSettings { searchTechnique?: OptionsListSearchTechnique; diff --git a/test/functional/page_objects/discover_page.ts b/test/functional/page_objects/discover_page.ts index 9f636fcd8ec78..3ec60eae8e407 100644 --- a/test/functional/page_objects/discover_page.ts +++ b/test/functional/page_objects/discover_page.ts @@ -7,8 +7,8 @@ */ import expect from '@kbn/expect'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../ftr_provider_context'; -import { WebElementWrapper } from '../services/lib/web_element_wrapper'; export class DiscoverPageObject extends FtrService { private readonly retry = this.ctx.getService('retry'); diff --git a/test/functional/page_objects/legacy/data_table_vis.ts b/test/functional/page_objects/legacy/data_table_vis.ts index 122409f28de90..dbc25df9387dd 100644 --- a/test/functional/page_objects/legacy/data_table_vis.ts +++ b/test/functional/page_objects/legacy/data_table_vis.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../../ftr_provider_context'; -import { WebElementWrapper } from '../../services/lib/web_element_wrapper'; export class LegacyDataTableVisPageObject extends FtrService { private readonly testSubjects = this.ctx.getService('testSubjects'); diff --git a/test/functional/page_objects/tag_cloud_page.ts b/test/functional/page_objects/tag_cloud_page.ts index ecd5aad781285..ba7648b323ca9 100644 --- a/test/functional/page_objects/tag_cloud_page.ts +++ b/test/functional/page_objects/tag_cloud_page.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../ftr_provider_context'; -import { WebElementWrapper } from '../services/lib/web_element_wrapper'; export class TagCloudPageObject extends FtrService { private readonly find = this.ctx.getService('find'); diff --git a/test/functional/page_objects/time_picker.ts b/test/functional/page_objects/time_picker.ts index aa8832f28848a..5ea80ce271263 100644 --- a/test/functional/page_objects/time_picker.ts +++ b/test/functional/page_objects/time_picker.ts @@ -7,8 +7,8 @@ */ import moment from 'moment'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../ftr_provider_context'; -import { WebElementWrapper } from '../services/lib/web_element_wrapper'; export type CommonlyUsed = | 'Today' diff --git a/test/functional/page_objects/timelion_page.ts b/test/functional/page_objects/timelion_page.ts index ba1db60bc6350..f7fa16aa416ba 100644 --- a/test/functional/page_objects/timelion_page.ts +++ b/test/functional/page_objects/timelion_page.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ +import type { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../ftr_provider_context'; -import type { WebElementWrapper } from '../services/lib/web_element_wrapper'; export class TimelionPageObject extends FtrService { private readonly testSubjects = this.ctx.getService('testSubjects'); diff --git a/test/functional/page_objects/visual_builder_page.ts b/test/functional/page_objects/visual_builder_page.ts index e20249f362b03..89f1a2e9389c2 100644 --- a/test/functional/page_objects/visual_builder_page.ts +++ b/test/functional/page_objects/visual_builder_page.ts @@ -7,8 +7,8 @@ */ import type { DebugState } from '@elastic/charts'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../ftr_provider_context'; -import { WebElementWrapper } from '../services/lib/web_element_wrapper'; type Duration = | 'Milliseconds' diff --git a/test/functional/services/combo_box.ts b/test/functional/services/combo_box.ts index 4b23dd3bd8b98..69794f3d2a6c8 100644 --- a/test/functional/services/combo_box.ts +++ b/test/functional/services/combo_box.ts @@ -7,8 +7,8 @@ */ import expect from '@kbn/expect'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../ftr_provider_context'; -import { WebElementWrapper } from './lib/web_element_wrapper'; /** * wrapper around EuiComboBox interactions diff --git a/test/functional/services/common/browser.ts b/test/functional/services/common/browser.ts index cac8eec71e7f4..8054816bb4ee3 100644 --- a/test/functional/services/common/browser.ts +++ b/test/functional/services/common/browser.ts @@ -15,14 +15,14 @@ import Url from 'url'; import { NoSuchSessionError } from 'selenium-webdriver/lib/error'; import sharp from 'sharp'; -import { FtrService, type FtrProviderContext } from '../../ftr_provider_context'; -import { WebElementWrapper } from '../lib/web_element_wrapper'; -import { Browsers } from '../remote/browsers'; import { + WebElementWrapper, + Browsers, NETWORK_PROFILES, type NetworkOptions, type NetworkProfile, -} from '../remote/network_profiles'; +} from '@kbn/ftr-common-functional-ui-services'; +import { FtrService, type FtrProviderContext } from '../../ftr_provider_context'; export type Browser = BrowserService; diff --git a/test/functional/services/common/index.ts b/test/functional/services/common/index.ts index b7b8c67a4280d..3d1078d92dc5e 100644 --- a/test/functional/services/common/index.ts +++ b/test/functional/services/common/index.ts @@ -9,7 +9,6 @@ export type { Browser } from './browser'; export { BrowserProvider } from './browser'; export { FailureDebuggingProvider } from './failure_debugging'; -export { FindProvider } from './find'; export { PngService } from './png'; export { ScreenshotsService } from './screenshots'; export { SnapshotsService } from './snapshots'; diff --git a/test/functional/services/common/screenshots.ts b/test/functional/services/common/screenshots.ts index 50421e480dd9c..10b2ccb251610 100644 --- a/test/functional/services/common/screenshots.ts +++ b/test/functional/services/common/screenshots.ts @@ -12,9 +12,9 @@ import { promisify } from 'util'; import del from 'del'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { comparePngs } from '../lib/compare_pngs'; import { FtrProviderContext, FtrService } from '../../ftr_provider_context'; -import { WebElementWrapper } from '../lib/web_element_wrapper'; const mkdirAsync = promisify(mkdir); const writeFileAsync = promisify(writeFile); diff --git a/test/functional/services/common/test_subjects.ts b/test/functional/services/common/test_subjects.ts index b451d3139463b..57d2bbbd64244 100644 --- a/test/functional/services/common/test_subjects.ts +++ b/test/functional/services/common/test_subjects.ts @@ -7,9 +7,8 @@ */ import { subj as testSubjSelector } from '@kbn/test-subj-selector'; -import { WebElementWrapper } from '../lib/web_element_wrapper'; +import { WebElementWrapper, type TimeoutOpt } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../../ftr_provider_context'; -import { TimeoutOpt } from './types'; interface ExistsOptions { timeout?: number; diff --git a/test/functional/services/dashboard/expectations.ts b/test/functional/services/dashboard/expectations.ts index a7993286d80f4..476ffb49f13ee 100644 --- a/test/functional/services/dashboard/expectations.ts +++ b/test/functional/services/dashboard/expectations.ts @@ -7,8 +7,8 @@ */ import expect from '@kbn/expect'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../../ftr_provider_context'; -import { WebElementWrapper } from '../lib/web_element_wrapper'; export class DashboardExpectService extends FtrService { private readonly log = this.ctx.getService('log'); diff --git a/test/functional/services/dashboard/panel_actions.ts b/test/functional/services/dashboard/panel_actions.ts index f07b0bd87177f..14c69eb6b8e2a 100644 --- a/test/functional/services/dashboard/panel_actions.ts +++ b/test/functional/services/dashboard/panel_actions.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { WebElementWrapper } from '../lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../../ftr_provider_context'; const REMOVE_PANEL_DATA_TEST_SUBJ = 'embeddablePanelAction-deletePanel'; diff --git a/test/functional/services/dashboard/panel_drilldown_actions.ts b/test/functional/services/dashboard/panel_drilldown_actions.ts index 222e55950c8be..3a240d58c983d 100644 --- a/test/functional/services/dashboard/panel_drilldown_actions.ts +++ b/test/functional/services/dashboard/panel_drilldown_actions.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../ftr_provider_context'; -import { WebElementWrapper } from '../lib/web_element_wrapper'; const CREATE_DRILLDOWN_DATA_TEST_SUBJ = 'embeddablePanelAction-OPEN_FLYOUT_ADD_DRILLDOWN'; const MANAGE_DRILLDOWNS_DATA_TEST_SUBJ = 'embeddablePanelAction-OPEN_FLYOUT_EDIT_DRILLDOWN'; diff --git a/test/functional/services/dashboard/panel_settings.ts b/test/functional/services/dashboard/panel_settings.ts index de75a9c4a7a19..36bd01b1fad0d 100644 --- a/test/functional/services/dashboard/panel_settings.ts +++ b/test/functional/services/dashboard/panel_settings.ts @@ -6,9 +6,9 @@ * Side Public License, v 1. */ +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../ftr_provider_context'; import { CommonlyUsed } from '../../page_objects/time_picker'; -import { WebElementWrapper } from '../lib/web_element_wrapper'; export function DashboardCustomizePanelProvider({ getService, getPageObject }: FtrProviderContext) { const log = getService('log'); diff --git a/test/functional/services/data_grid.ts b/test/functional/services/data_grid.ts index df5ba570cfc51..88b95fc8a4ab6 100644 --- a/test/functional/services/data_grid.ts +++ b/test/functional/services/data_grid.ts @@ -8,8 +8,8 @@ import { chunk } from 'lodash'; import { Key } from 'selenium-webdriver'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../ftr_provider_context'; -import { WebElementWrapper } from './lib/web_element_wrapper'; export interface TabbedGridData { columns: string[]; diff --git a/test/functional/services/doc_table.ts b/test/functional/services/doc_table.ts index 685f1748d56b2..9be10301019c0 100644 --- a/test/functional/services/doc_table.ts +++ b/test/functional/services/doc_table.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../ftr_provider_context'; -import { WebElementWrapper } from './lib/web_element_wrapper'; interface SelectOptions { isAnchorRow?: boolean; diff --git a/test/functional/services/index.ts b/test/functional/services/index.ts index dc151f1b243e3..de503f8ccf99a 100644 --- a/test/functional/services/index.ts +++ b/test/functional/services/index.ts @@ -13,7 +13,6 @@ import { AppsMenuService } from './apps_menu'; import { BrowserProvider, FailureDebuggingProvider, - FindProvider, PngService, ScreenshotsService, SnapshotsService, @@ -40,7 +39,6 @@ import { InspectorService } from './inspector'; import { FieldEditorService } from './field_editor'; import { ManagementMenuService } from './management'; import { QueryBarService } from './query_bar'; -import { RemoteProvider } from './remote'; import { RenderableService } from './renderable'; import { ToastsService } from './toasts'; import { DataGridService } from './data_grid'; @@ -61,10 +59,8 @@ import { DashboardSettingsProvider } from './dashboard/dashboard_settings'; export const services = { ...commonServiceProviders, ...commonFunctionalUIServices, - __webdriver__: RemoteProvider, filterBar: FilterBarService, queryBar: QueryBarService, - find: FindProvider, testSubjects: TestSubjects, docTable: DocTableService, png: PngService, diff --git a/test/functional/services/saved_objects_finder.ts b/test/functional/services/saved_objects_finder.ts index 12e06fe8a1710..98af7785852d8 100644 --- a/test/functional/services/saved_objects_finder.ts +++ b/test/functional/services/saved_objects_finder.ts @@ -7,8 +7,8 @@ */ import expect from '@kbn/expect'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../ftr_provider_context'; -import { WebElementWrapper } from './lib/web_element_wrapper'; export class SavedObjectsFinderService extends FtrService { private readonly testSubjects = this.ctx.getService('testSubjects'); diff --git a/test/functional/services/visualizations/elastic_chart.ts b/test/functional/services/visualizations/elastic_chart.ts index d87a7a0d3d061..da872eb21670c 100644 --- a/test/functional/services/visualizations/elastic_chart.ts +++ b/test/functional/services/visualizations/elastic_chart.ts @@ -9,8 +9,8 @@ import { DebugState } from '@elastic/charts'; import expect from '@kbn/expect'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../../ftr_provider_context'; -import { WebElementWrapper } from '../lib/web_element_wrapper'; declare global { interface Window { diff --git a/x-pack/test/accessibility/apps/group1/dashboard_panel_options.ts b/x-pack/test/accessibility/apps/group1/dashboard_panel_options.ts index 5f12f3600c29a..a5182a8d2ca03 100644 --- a/x-pack/test/accessibility/apps/group1/dashboard_panel_options.ts +++ b/x-pack/test/accessibility/apps/group1/dashboard_panel_options.ts @@ -5,8 +5,8 @@ * 2.0. */ +import type { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../ftr_provider_context'; -import type { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const a11y = getService('a11y'); diff --git a/x-pack/test/functional/apps/discover/visualize_field.ts b/x-pack/test/functional/apps/discover/visualize_field.ts index 428ef13c34866..bbd5e94dc4c75 100644 --- a/x-pack/test/functional/apps/discover/visualize_field.ts +++ b/x-pack/test/functional/apps/discover/visualize_field.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import { DebugState } from '@elastic/charts'; -import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { diff --git a/x-pack/test/functional/apps/infra/hosts_view.ts b/x-pack/test/functional/apps/infra/hosts_view.ts index f9932421690e0..13657713faac7 100644 --- a/x-pack/test/functional/apps/infra/hosts_view.ts +++ b/x-pack/test/functional/apps/infra/hosts_view.ts @@ -10,7 +10,7 @@ import expect from '@kbn/expect'; import { parse } from 'url'; import { enableInfrastructureHostsView } from '@kbn/observability-plugin/common'; import { ALERT_STATUS_ACTIVE, ALERT_STATUS_RECOVERED } from '@kbn/rule-data-utils'; -import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../ftr_provider_context'; import { DATES, diff --git a/x-pack/test/functional/apps/observability_log_explorer/dataset_selector.ts b/x-pack/test/functional/apps/observability_log_explorer/dataset_selector.ts index d656301a13891..98cfc79c561ad 100644 --- a/x-pack/test/functional/apps/observability_log_explorer/dataset_selector.ts +++ b/x-pack/test/functional/apps/observability_log_explorer/dataset_selector.ts @@ -5,8 +5,8 @@ * 2.0. */ import expect from '@kbn/expect'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from './config'; -import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; const initialPackageMap = { apache: 'Apache HTTP Server', diff --git a/x-pack/test/functional/page_objects/graph_page.ts b/x-pack/test/functional/page_objects/graph_page.ts index 503e8666e0bef..810048a7f144f 100644 --- a/x-pack/test/functional/page_objects/graph_page.ts +++ b/x-pack/test/functional/page_objects/graph_page.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { WebElementWrapper } from '../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../ftr_provider_context'; interface Node { 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 3fbb3d361d879..0c3004acc4fe8 100644 --- a/x-pack/test/functional/page_objects/infra_hosts_view.ts +++ b/x-pack/test/functional/page_objects/infra_hosts_view.ts @@ -6,7 +6,7 @@ */ import { AlertStatus } from '@kbn/rule-data-utils'; -import { WebElementWrapper } from '../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../ftr_provider_context'; export function InfraHostsViewProvider({ getService }: FtrProviderContext) { diff --git a/x-pack/test/functional/page_objects/infra_metrics_explorer.ts b/x-pack/test/functional/page_objects/infra_metrics_explorer.ts index e8d9f878b43c5..4e691a164cdb7 100644 --- a/x-pack/test/functional/page_objects/infra_metrics_explorer.ts +++ b/x-pack/test/functional/page_objects/infra_metrics_explorer.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { WebElementWrapper } from '../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../ftr_provider_context'; export function InfraMetricsExplorerProvider({ getService }: FtrProviderContext) { diff --git a/x-pack/test/functional/page_objects/ingest_pipelines_page.ts b/x-pack/test/functional/page_objects/ingest_pipelines_page.ts index 3e0bc23869bb7..c4800b55aa77c 100644 --- a/x-pack/test/functional/page_objects/ingest_pipelines_page.ts +++ b/x-pack/test/functional/page_objects/ingest_pipelines_page.ts @@ -6,7 +6,7 @@ */ import path from 'path'; -import { WebElementWrapper } from '../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../ftr_provider_context'; export function IngestPipelinesPageProvider({ getService, getPageObjects }: FtrProviderContext) { diff --git a/x-pack/test/functional/page_objects/lens_page.ts b/x-pack/test/functional/page_objects/lens_page.ts index ee9ad1596fbe0..2d3766c137667 100644 --- a/x-pack/test/functional/page_objects/lens_page.ts +++ b/x-pack/test/functional/page_objects/lens_page.ts @@ -9,7 +9,7 @@ import expect from '@kbn/expect'; import { setTimeout as setTimeoutAsync } from 'timers/promises'; import type { FittingFunction, XYCurveType } from '@kbn/lens-plugin/public'; import { DebugState } from '@elastic/charts'; -import { WebElementWrapper } from '../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../ftr_provider_context'; import { logWrapper } from './log_wrapper'; diff --git a/x-pack/test/functional/page_objects/navigational_search.ts b/x-pack/test/functional/page_objects/navigational_search.ts index ae27d6d68a4a5..54c1582f322cc 100644 --- a/x-pack/test/functional/page_objects/navigational_search.ts +++ b/x-pack/test/functional/page_objects/navigational_search.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { WebElementWrapper } from '../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../ftr_provider_context'; interface SearchResult { diff --git a/x-pack/test/functional/page_objects/observability_log_explorer.ts b/x-pack/test/functional/page_objects/observability_log_explorer.ts index a61682e62a8cb..07cdf818a7ae0 100644 --- a/x-pack/test/functional/page_objects/observability_log_explorer.ts +++ b/x-pack/test/functional/page_objects/observability_log_explorer.ts @@ -11,7 +11,7 @@ import { } from '@kbn/observability-log-explorer-plugin/common'; import rison from '@kbn/rison'; import querystring from 'querystring'; -import { WebElementWrapper } from '../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../ftr_provider_context'; export interface IntegrationPackage { diff --git a/x-pack/test/functional/page_objects/tag_management_page.ts b/x-pack/test/functional/page_objects/tag_management_page.ts index 5eb93aa977cf5..30c6689d87b8f 100644 --- a/x-pack/test/functional/page_objects/tag_management_page.ts +++ b/x-pack/test/functional/page_objects/tag_management_page.ts @@ -7,7 +7,7 @@ /* eslint-disable max-classes-per-file */ -import { WebElementWrapper } from '../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService, FtrProviderContext } from '../ftr_provider_context'; interface FillTagFormFields { diff --git a/x-pack/test/functional/services/cases/list.ts b/x-pack/test/functional/services/cases/list.ts index 61d588dc261ed..03d1078ccec2c 100644 --- a/x-pack/test/functional/services/cases/list.ts +++ b/x-pack/test/functional/services/cases/list.ts @@ -6,7 +6,7 @@ */ import { CaseSeverity, CaseStatuses } from '@kbn/cases-plugin/common/types/domain'; -import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../ftr_provider_context'; import { CasesCommon } from './common'; diff --git a/x-pack/test/functional/services/infra_source_configuration_form.ts b/x-pack/test/functional/services/infra_source_configuration_form.ts index 741d42ac16fda..805dfcbbc9dcb 100644 --- a/x-pack/test/functional/services/infra_source_configuration_form.ts +++ b/x-pack/test/functional/services/infra_source_configuration_form.ts @@ -5,8 +5,8 @@ * 2.0. */ +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../ftr_provider_context'; -import { WebElementWrapper } from '../../../../test/functional/services/lib/web_element_wrapper'; export function InfraSourceConfigurationFormProvider({ getService, diff --git a/x-pack/test/functional/services/logs_ui/log_entry_categories.ts b/x-pack/test/functional/services/logs_ui/log_entry_categories.ts index 0aec1cbea2210..77098bd918ea6 100644 --- a/x-pack/test/functional/services/logs_ui/log_entry_categories.ts +++ b/x-pack/test/functional/services/logs_ui/log_entry_categories.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../ftr_provider_context'; export function LogEntryCategoriesPageProvider({ getPageObjects, getService }: FtrProviderContext) { diff --git a/x-pack/test/functional/services/logs_ui/log_entry_rate.ts b/x-pack/test/functional/services/logs_ui/log_entry_rate.ts index bf58d74a06c44..f8a68f6c924e0 100644 --- a/x-pack/test/functional/services/logs_ui/log_entry_rate.ts +++ b/x-pack/test/functional/services/logs_ui/log_entry_rate.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../ftr_provider_context'; export function LogEntryRatePageProvider({ getPageObjects, getService }: FtrProviderContext) { diff --git a/x-pack/test/functional/services/logs_ui/log_stream.ts b/x-pack/test/functional/services/logs_ui/log_stream.ts index 1a068439a2d2d..160e949c84de4 100644 --- a/x-pack/test/functional/services/logs_ui/log_stream.ts +++ b/x-pack/test/functional/services/logs_ui/log_stream.ts @@ -5,8 +5,8 @@ * 2.0. */ +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../ftr_provider_context'; -import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; import { TabsParams } from '../../page_objects/infra_logs_page'; export function LogStreamPageProvider({ getPageObjects, getService }: FtrProviderContext) { diff --git a/x-pack/test/functional/services/ml/common_table_service.ts b/x-pack/test/functional/services/ml/common_table_service.ts index ac403d62b5ac8..683ac91f4e7a3 100644 --- a/x-pack/test/functional/services/ml/common_table_service.ts +++ b/x-pack/test/functional/services/ml/common_table_service.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../ftr_provider_context'; export type MlTableService = ReturnType; diff --git a/x-pack/test/functional/services/ml/common_ui.ts b/x-pack/test/functional/services/ml/common_ui.ts index dc4836ed6f34c..63a1fdf17cf4f 100644 --- a/x-pack/test/functional/services/ml/common_ui.ts +++ b/x-pack/test/functional/services/ml/common_ui.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import { ProvidedType } from '@kbn/test'; -import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../ftr_provider_context'; import type { CanvasElementColorStats } from '../canvas_element'; diff --git a/x-pack/test/functional/services/ml/data_frame_analytics_results.ts b/x-pack/test/functional/services/ml/data_frame_analytics_results.ts index 0fc99e1e032a1..17a409a082ce7 100644 --- a/x-pack/test/functional/services/ml/data_frame_analytics_results.ts +++ b/x-pack/test/functional/services/ml/data_frame_analytics_results.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../ftr_provider_context'; import type { CanvasElementColorStats } from '../canvas_element'; import type { MlCommonUI } from './common_ui'; diff --git a/x-pack/test/functional/services/ml/data_frame_analytics_table.ts b/x-pack/test/functional/services/ml/data_frame_analytics_table.ts index 2b89364644a36..c85e38cd78b8e 100644 --- a/x-pack/test/functional/services/ml/data_frame_analytics_table.ts +++ b/x-pack/test/functional/services/ml/data_frame_analytics_table.ts @@ -8,7 +8,7 @@ import expect from '@kbn/expect'; import { ProvidedType } from '@kbn/test'; -import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../ftr_provider_context'; type ExpectedSectionTableEntries = Record; diff --git a/x-pack/test/functional/services/ml/stack_management_jobs.ts b/x-pack/test/functional/services/ml/stack_management_jobs.ts index f8db28deb5092..52b8e005ac94c 100644 --- a/x-pack/test/functional/services/ml/stack_management_jobs.ts +++ b/x-pack/test/functional/services/ml/stack_management_jobs.ts @@ -14,7 +14,7 @@ import path from 'path'; import type { JobType, MlSavedObjectType } from '@kbn/ml-plugin/common/types/saved_objects'; import type { Job, Datafeed } from '@kbn/ml-plugin/common/types/anomaly_detection_jobs'; import type { DataFrameAnalyticsConfig } from '@kbn/ml-data-frame-analytics-utils'; -import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import type { FtrProviderContext } from '../../ftr_provider_context'; type SyncFlyoutObjectType = diff --git a/x-pack/test/functional/services/ml/swim_lane.ts b/x-pack/test/functional/services/ml/swim_lane.ts index 54895918a6d0d..d9ad1dd44d98a 100644 --- a/x-pack/test/functional/services/ml/swim_lane.ts +++ b/x-pack/test/functional/services/ml/swim_lane.ts @@ -9,8 +9,8 @@ import expect from '@kbn/expect'; import { ProvidedType } from '@kbn/test'; import { DebugState } from '@elastic/charts'; import { DebugStateAxis } from '@elastic/charts/dist/state/types'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../ftr_provider_context'; -import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; type HeatmapDebugState = Required>; diff --git a/x-pack/test/functional/services/ml/trained_models_table.ts b/x-pack/test/functional/services/ml/trained_models_table.ts index a186c531703be..4ea56286de4fd 100644 --- a/x-pack/test/functional/services/ml/trained_models_table.ts +++ b/x-pack/test/functional/services/ml/trained_models_table.ts @@ -9,7 +9,7 @@ import expect from '@kbn/expect'; import { ProvidedType } from '@kbn/test'; import { upperFirst } from 'lodash'; -import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import type { FtrProviderContext } from '../../ftr_provider_context'; import type { MlCommonUI } from './common_ui'; import { MappedInputParams, MappedOutput, ModelType, TrainedModelsActions } from './trained_models'; diff --git a/x-pack/test/functional/services/observability/alerts/common.ts b/x-pack/test/functional/services/observability/alerts/common.ts index 57403ef8c3ab3..617fadcf25e28 100644 --- a/x-pack/test/functional/services/observability/alerts/common.ts +++ b/x-pack/test/functional/services/observability/alerts/common.ts @@ -8,8 +8,8 @@ import expect from '@kbn/expect'; import { chunk } from 'lodash'; import { ALERT_STATUS_ACTIVE, ALERT_STATUS_RECOVERED, AlertStatus } from '@kbn/rule-data-utils'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../../ftr_provider_context'; -import { WebElementWrapper } from '../../../../../../test/functional/services/lib/web_element_wrapper'; // Based on the x-pack/test/functional/es_archives/observability/alerts archive. const DATE_WITH_DATA = { diff --git a/x-pack/test/functional/services/search_sessions.ts b/x-pack/test/functional/services/search_sessions.ts index a22e635742686..cd0b60d321279 100644 --- a/x-pack/test/functional/services/search_sessions.ts +++ b/x-pack/test/functional/services/search_sessions.ts @@ -9,7 +9,7 @@ import { ELASTIC_HTTP_VERSION_HEADER } from '@kbn/core-http-common'; import { INITIAL_SEARCH_SESSION_REST_VERSION } from '@kbn/data-plugin/server'; import expect from '@kbn/expect'; import { SavedObjectsFindResponse } from '@kbn/core/server'; -import { WebElementWrapper } from '../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../ftr_provider_context'; const SEARCH_SESSION_INDICATOR_TEST_SUBJ = 'searchSessionIndicator'; diff --git a/x-pack/test/functional/services/transform/transform_table.ts b/x-pack/test/functional/services/transform/transform_table.ts index 665b04b058106..7a5f303ba155b 100644 --- a/x-pack/test/functional/services/transform/transform_table.ts +++ b/x-pack/test/functional/services/transform/transform_table.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; -import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../ftr_provider_context'; diff --git a/x-pack/test/functional_enterprise_search/page_objects/app_search.ts b/x-pack/test/functional_enterprise_search/page_objects/app_search.ts index 8c02cdb705272..75fe3da03ed1e 100644 --- a/x-pack/test/functional_enterprise_search/page_objects/app_search.ts +++ b/x-pack/test/functional_enterprise_search/page_objects/app_search.ts @@ -5,9 +5,9 @@ * 2.0. */ +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../ftr_provider_context'; import { TestSubjects } from '../../../../test/functional/services/common'; -import { WebElementWrapper } from '../../../../test/functional/services/lib/web_element_wrapper'; export function AppSearchPageProvider({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['common']); diff --git a/x-pack/test/functional_with_es_ssl/page_objects/triggers_actions_ui_page.ts b/x-pack/test/functional_with_es_ssl/page_objects/triggers_actions_ui_page.ts index f72677bff7f05..cdffa758420c0 100644 --- a/x-pack/test/functional_with_es_ssl/page_objects/triggers_actions_ui_page.ts +++ b/x-pack/test/functional_with_es_ssl/page_objects/triggers_actions_ui_page.ts @@ -6,10 +6,7 @@ */ import expect from '@kbn/expect'; -import { - CustomCheerio, - CustomCheerioStatic, -} from '../../../../test/functional/services/lib/web_element_wrapper/custom_cheerio_api'; +import type { CustomCheerio, CustomCheerioStatic } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../ftr_provider_context'; const ENTER_KEY = '\uE007'; diff --git a/x-pack/test/plugin_functional/test_suites/resolver/index.ts b/x-pack/test/plugin_functional/test_suites/resolver/index.ts index edc5d25971077..51fa158672623 100644 --- a/x-pack/test/plugin_functional/test_suites/resolver/index.ts +++ b/x-pack/test/plugin_functional/test_suites/resolver/index.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import { panAnimationDuration } from '@kbn/security-solution-plugin/public/resolver/store/camera/scaling_constants'; -import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../ftr_provider_context'; diff --git a/x-pack/test/security_solution_endpoint/apps/integrations/endpoint_exceptions.ts b/x-pack/test/security_solution_endpoint/apps/integrations/endpoint_exceptions.ts index 539101c795047..8647d418a6395 100644 --- a/x-pack/test/security_solution_endpoint/apps/integrations/endpoint_exceptions.ts +++ b/x-pack/test/security_solution_endpoint/apps/integrations/endpoint_exceptions.ts @@ -11,7 +11,7 @@ import { IndexedHostsAndAlertsResponse } from '@kbn/security-solution-plugin/com import { EXCEPTION_LIST_ITEM_URL } from '@kbn/securitysolution-list-constants'; import { ArtifactElasticsearchProperties } from '@kbn/fleet-plugin/server/services'; import { FoundExceptionListItemSchema } from '@kbn/securitysolution-io-ts-list-types'; -import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../ftr_provider_context'; import { targetTags } from '../../target_tags'; diff --git a/x-pack/test/security_solution_endpoint/page_objects/endpoint_page.ts b/x-pack/test/security_solution_endpoint/page_objects/endpoint_page.ts index ec3eaf97eb81b..ceea71593a95e 100644 --- a/x-pack/test/security_solution_endpoint/page_objects/endpoint_page.ts +++ b/x-pack/test/security_solution_endpoint/page_objects/endpoint_page.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { WebElementWrapper } from '../../../../test/functional/services/lib/web_element_wrapper'; +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../ftr_provider_context'; export function EndpointPageProvider({ getService, getPageObjects }: FtrProviderContext) { diff --git a/x-pack/test/security_solution_endpoint/page_objects/ingest_manager_create_package_policy_page.ts b/x-pack/test/security_solution_endpoint/page_objects/ingest_manager_create_package_policy_page.ts index 913d1e18d1dc7..acdb58460cbbd 100644 --- a/x-pack/test/security_solution_endpoint/page_objects/ingest_manager_create_package_policy_page.ts +++ b/x-pack/test/security_solution_endpoint/page_objects/ingest_manager_create_package_policy_page.ts @@ -5,8 +5,8 @@ * 2.0. */ +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../ftr_provider_context'; -import { WebElementWrapper } from '../../../../test/functional/services/lib/web_element_wrapper'; export function IngestManagerCreatePackagePolicy({ getService, diff --git a/x-pack/test/security_solution_endpoint/page_objects/page_utils.ts b/x-pack/test/security_solution_endpoint/page_objects/page_utils.ts index 69cb8e455b152..d14846f8583ed 100644 --- a/x-pack/test/security_solution_endpoint/page_objects/page_utils.ts +++ b/x-pack/test/security_solution_endpoint/page_objects/page_utils.ts @@ -5,8 +5,8 @@ * 2.0. */ +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../ftr_provider_context'; -import { WebElementWrapper } from '../../../../test/functional/services/lib/web_element_wrapper'; export function EndpointPageUtils({ getService }: FtrProviderContext) { const testSubjects = getService('testSubjects'); diff --git a/x-pack/test/security_solution_ftr/page_objects/detections/index.ts b/x-pack/test/security_solution_ftr/page_objects/detections/index.ts index a8ff43a8e06bf..e45fa7f7a5eb7 100644 --- a/x-pack/test/security_solution_ftr/page_objects/detections/index.ts +++ b/x-pack/test/security_solution_ftr/page_objects/detections/index.ts @@ -5,8 +5,8 @@ * 2.0. */ +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../../../functional/ftr_provider_context'; -import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; const ALERT_TABLE_ROW_CSS_SELECTOR = '[data-test-subj="alertsTable"] .euiDataGridRow'; diff --git a/x-pack/test/security_solution_ftr/page_objects/hosts/index.ts b/x-pack/test/security_solution_ftr/page_objects/hosts/index.ts index 0d80db3141214..50e232a8693e1 100644 --- a/x-pack/test/security_solution_ftr/page_objects/hosts/index.ts +++ b/x-pack/test/security_solution_ftr/page_objects/hosts/index.ts @@ -5,8 +5,8 @@ * 2.0. */ +import { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrService } from '../../../functional/ftr_provider_context'; -import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper'; export class HostsPageObject extends FtrService { private readonly pageObjects = this.ctx.getPageObjects(['common', 'header']); diff --git a/x-pack/test/tsconfig.json b/x-pack/test/tsconfig.json index 894d4c8039946..4ca836a475546 100644 --- a/x-pack/test/tsconfig.json +++ b/x-pack/test/tsconfig.json @@ -165,5 +165,6 @@ "@kbn/log-explorer-plugin", "@kbn/security-plugin-types-common", "@kbn/typed-react-router-config", + "@kbn/ftr-common-functional-ui-services", ] } diff --git a/x-pack/test/upgrade/services/rules_upgrade_services.ts b/x-pack/test/upgrade/services/rules_upgrade_services.ts index 188f41bcddc9d..54780fbe5adfb 100644 --- a/x-pack/test/upgrade/services/rules_upgrade_services.ts +++ b/x-pack/test/upgrade/services/rules_upgrade_services.ts @@ -6,11 +6,8 @@ */ import expect from '@kbn/expect'; +import type { CustomCheerio, CustomCheerioStatic } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../ftr_provider_context'; -import { - CustomCheerio, - CustomCheerioStatic, -} from '../../../../test/functional/services/lib/web_element_wrapper/custom_cheerio_api'; export function RulesHelper({ getPageObjects, getService }: FtrProviderContext) { const find = getService('find'); diff --git a/x-pack/test_serverless/functional/page_objects/svl_common_navigation.ts b/x-pack/test_serverless/functional/page_objects/svl_common_navigation.ts index 93b5dea4f0495..9a91f5da1240d 100644 --- a/x-pack/test_serverless/functional/page_objects/svl_common_navigation.ts +++ b/x-pack/test_serverless/functional/page_objects/svl_common_navigation.ts @@ -16,8 +16,8 @@ import type { NavigationID as DevNavId } from '@kbn/default-nav-devtools'; // use this for nicer type suggestions, but allow any string anyway type NavigationId = MlNavId | AlNavId | MgmtNavId | DevNavId | string; +import type { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import type { FtrProviderContext } from '../ftr_provider_context'; -import type { WebElementWrapper } from '../../../../test/functional/services/lib/web_element_wrapper'; const getSectionIdTestSubj = (sectionId: NavigationId) => `~nav-item-${sectionId}`; diff --git a/x-pack/test_serverless/functional/page_objects/svl_triggers_actions_ui_page.ts b/x-pack/test_serverless/functional/page_objects/svl_triggers_actions_ui_page.ts index 589544cca9c5e..e9f407c06753f 100644 --- a/x-pack/test_serverless/functional/page_objects/svl_triggers_actions_ui_page.ts +++ b/x-pack/test_serverless/functional/page_objects/svl_triggers_actions_ui_page.ts @@ -6,10 +6,7 @@ */ import expect from '@kbn/expect'; -import type { - CustomCheerio, - CustomCheerioStatic, -} from '../../../../test/functional/services/lib/web_element_wrapper/custom_cheerio_api'; +import type { CustomCheerio, CustomCheerioStatic } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../ftr_provider_context'; const ENTER_KEY = '\uE007'; diff --git a/x-pack/test_serverless/functional/test_suites/common/discover/x_pack/visualize_field.ts b/x-pack/test_serverless/functional/test_suites/common/discover/x_pack/visualize_field.ts index ab1ad279b886b..e412fea58df57 100644 --- a/x-pack/test_serverless/functional/test_suites/common/discover/x_pack/visualize_field.ts +++ b/x-pack/test_serverless/functional/test_suites/common/discover/x_pack/visualize_field.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import type { WebElementWrapper } from '../../../../../../../test/functional/services/lib/web_element_wrapper'; +import type { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { diff --git a/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts b/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts index a254cb753c864..43ec250ff9967 100644 --- a/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts +++ b/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts @@ -8,7 +8,7 @@ import type { estypes } from '@elastic/elasticsearch'; import expect from '@kbn/expect'; import assert from 'assert'; -import type { WebElementWrapper } from '../../../../../../../test/functional/services/lib/web_element_wrapper'; +import type { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import type { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { diff --git a/x-pack/test_serverless/functional/test_suites/common/management/index_management/component_templates.ts b/x-pack/test_serverless/functional/test_suites/common/management/index_management/component_templates.ts index 9e044667692cf..e70470582b2b5 100644 --- a/x-pack/test_serverless/functional/test_suites/common/management/index_management/component_templates.ts +++ b/x-pack/test_serverless/functional/test_suites/common/management/index_management/component_templates.ts @@ -7,8 +7,8 @@ import expect from '@kbn/expect'; +import type { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../../../ftr_provider_context'; -import type { WebElementWrapper } from '../../../../../../../test/functional/services/lib/web_element_wrapper'; export default ({ getPageObjects, getService }: FtrProviderContext) => { const pageObjects = getPageObjects(['svlCommonPage', 'common', 'indexManagement', 'header']); diff --git a/x-pack/test_serverless/functional/test_suites/common/management/index_management/index_templates.ts b/x-pack/test_serverless/functional/test_suites/common/management/index_management/index_templates.ts index 791d3c313b7ab..371ee4debe98f 100644 --- a/x-pack/test_serverless/functional/test_suites/common/management/index_management/index_templates.ts +++ b/x-pack/test_serverless/functional/test_suites/common/management/index_management/index_templates.ts @@ -7,8 +7,8 @@ import expect from '@kbn/expect'; +import type { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../../../ftr_provider_context'; -import type { WebElementWrapper } from '../../../../../../../test/functional/services/lib/web_element_wrapper'; export default ({ getPageObjects, getService }: FtrProviderContext) => { const pageObjects = getPageObjects(['svlCommonPage', 'common', 'indexManagement', 'header']); diff --git a/x-pack/test_serverless/functional/test_suites/observability/infra/hosts_page.ts b/x-pack/test_serverless/functional/test_suites/observability/infra/hosts_page.ts index 7e23b43b253c7..92dfb107dd440 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/infra/hosts_page.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/infra/hosts_page.ts @@ -7,7 +7,7 @@ import moment from 'moment'; import expect from '@kbn/expect'; -import type { WebElementWrapper } from '../../../../../../test/functional/services/lib/web_element_wrapper'; +import type { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import type { FtrProviderContext } from '../../../ftr_provider_context'; import { HOSTS_VIEW_PATH } from './constants'; diff --git a/x-pack/test_serverless/tsconfig.json b/x-pack/test_serverless/tsconfig.json index 54c1e26f069d1..c9c37a3c3f3a1 100644 --- a/x-pack/test_serverless/tsconfig.json +++ b/x-pack/test_serverless/tsconfig.json @@ -84,5 +84,6 @@ "@kbn/log-explorer-plugin", "@kbn/index-management-plugin", "@kbn/alerting-plugin", + "@kbn/ftr-common-functional-ui-services", ] } From 49886a5d79308c6367a108140c5ddea1dbaf3df6 Mon Sep 17 00:00:00 2001 From: Jonathan Budzenski Date: Thu, 4 Jan 2024 12:30:53 -0600 Subject: [PATCH 122/323] skip failing test suite (#174194, #174195) --- .../actions/assignees/edit_assignees_flyout.test.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/cases/public/components/actions/assignees/edit_assignees_flyout.test.tsx b/x-pack/plugins/cases/public/components/actions/assignees/edit_assignees_flyout.test.tsx index d6f65ff09b694..9001faa12a2a6 100644 --- a/x-pack/plugins/cases/public/components/actions/assignees/edit_assignees_flyout.test.tsx +++ b/x-pack/plugins/cases/public/components/actions/assignees/edit_assignees_flyout.test.tsx @@ -16,7 +16,9 @@ import { waitFor } from '@testing-library/react'; jest.mock('../../../containers/user_profiles/api'); -describe('EditAssigneesFlyout', () => { +// Failing: See https://github.com/elastic/kibana/issues/174194 +// Failing: See https://github.com/elastic/kibana/issues/174195 +describe.skip('EditAssigneesFlyout', () => { let appMock: AppMockRenderer; /** From 33f83681326ab05db53fcaafef382631201868a7 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Thu, 4 Jan 2024 13:33:32 -0500 Subject: [PATCH 123/323] skip failing test suite (#174204) --- .../routes/csp_benchmark_rules_bulk_update.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts b/x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts index 022ab5e3b32ff..2c7d0ce250b02 100644 --- a/x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts +++ b/x-pack/test/cloud_security_posture_api/routes/csp_benchmark_rules_bulk_update.ts @@ -93,7 +93,8 @@ export default function ({ getService }: FtrProviderContext) { log.debug('CSP plugin is initialized'); }); - describe('Verify update csp rules states API', async () => { + // Failing: See https://github.com/elastic/kibana/issues/174204 + describe.skip('Verify update csp rules states API', async () => { before(async () => { await waitForPluginInitialized(); }); From 6d909fff999da629e7886a0683c78a1ebf9e254b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yulia=20=C4=8Cech?= <6585477+yuliacech@users.noreply.github.com> Date: Thu, 4 Jan 2024 19:58:09 +0100 Subject: [PATCH 124/323] [Index Management] Fix managed data streams badge (#173408) ## Summary This PR fixes the badge "managed" missing from the data streams list. The code used to check that the data stream has both conditions for a managed data streams `meta.managed: true` and `meta.managed_by: 'ingest-manager'`. The check for `ingest-manager` is not coorect since it's been renamed to fleet. Instead of updating the check though, I decided to only leave the condition for `meta.managed : true` and I removed all mentions of "Fleet" from the Data streams tab. I believe that is more consistent for the UI, since we don't mention "Fleet-managed" anywhere else like ILM, index templates etc. ### Screenshot Screenshot 2023-12-18 at 16 11 35 --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../home/data_streams_tab.test.ts | 24 ++++--------------- .../public/application/lib/data_streams.tsx | 9 ++++--- .../data_stream_list/data_stream_badges.tsx | 6 ++--- .../data_stream_list/data_stream_list.tsx | 6 ++--- .../translations/translations/fr-FR.json | 2 -- .../translations/translations/ja-JP.json | 2 -- .../translations/translations/zh-CN.json | 2 -- .../data_streams_tab/data_streams_tab.ts | 6 ++--- .../page_objects/index_management_page.ts | 8 ++----- .../test_suites/common/management/index.ts | 6 +---- .../index_management/data_streams.ts | 6 ++--- .../management/index_management/index.ts | 19 +++++++++++++++ 12 files changed, 43 insertions(+), 53 deletions(-) create mode 100644 x-pack/test_serverless/functional/test_suites/common/management/index_management/index.ts diff --git a/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.test.ts b/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.test.ts index db38796d2ab3b..e306398c541c7 100644 --- a/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.test.ts +++ b/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.test.ts @@ -71,7 +71,7 @@ describe('Data Streams tab', () => { expect(exists('emptyPrompt')).toBe(true); }); - test('when Ingest Manager is disabled, goes to index templates tab when "Get started" link is clicked', async () => { + test('when Fleet is disabled, goes to index templates tab when "Get started" link is clicked', async () => { testBed = await setup(httpSetup, { plugins: {}, url: urlServiceMock, @@ -796,7 +796,7 @@ describe('Data Streams tab', () => { _meta: { package: 'test', managed: true, - managed_by: 'ingest-manager', + managed_by: 'fleet', }, }); const nonManagedDataStream = createDataStreamPayload({ name: 'non-managed-data-stream' }); @@ -813,19 +813,12 @@ describe('Data Streams tab', () => { testBed.component.update(); }); - test('listed in the table with Fleet-managed label', () => { + test('listed in the table with managed label', () => { const { table } = testBed; const { tableCellsValues } = table.getMetaData('dataStreamTable'); expect(tableCellsValues).toEqual([ - [ - '', - `managed-data-stream${nonBreakingSpace}Fleet-managed`, - 'green', - '1', - '7 days', - 'Delete', - ], + ['', `managed-data-stream${nonBreakingSpace}Managed`, 'green', '1', '7 days', 'Delete'], ['', 'non-managed-data-stream', 'green', '1', '7 days', 'Delete'], ]); }); @@ -835,14 +828,7 @@ describe('Data Streams tab', () => { let { tableCellsValues } = table.getMetaData('dataStreamTable'); expect(tableCellsValues).toEqual([ - [ - '', - `managed-data-stream${nonBreakingSpace}Fleet-managed`, - 'green', - '1', - '7 days', - 'Delete', - ], + ['', `managed-data-stream${nonBreakingSpace}Managed`, 'green', '1', '7 days', 'Delete'], ['', 'non-managed-data-stream', 'green', '1', '7 days', 'Delete'], ]); diff --git a/x-pack/plugins/index_management/public/application/lib/data_streams.tsx b/x-pack/plugins/index_management/public/application/lib/data_streams.tsx index c16b28f73410a..44852c5dc3230 100644 --- a/x-pack/plugins/index_management/public/application/lib/data_streams.tsx +++ b/x-pack/plugins/index_management/public/application/lib/data_streams.tsx @@ -12,9 +12,8 @@ import { EuiIcon, EuiToolTip } from '@elastic/eui'; import { splitSizeAndUnits, DataStream } from '../../../common'; import { timeUnits, extraTimeUnits } from '../constants/time_units'; -export const isFleetManaged = (dataStream: DataStream): boolean => { - // TODO check if the wording will change to 'fleet' - return Boolean(dataStream._meta?.managed && dataStream._meta?.managed_by === 'ingest-manager'); +export const isManaged = (dataStream: DataStream): boolean => { + return Boolean(dataStream._meta?.managed); }; export const filterDataStreams = ( @@ -23,13 +22,13 @@ export const filterDataStreams = ( ): DataStream[] => { return dataStreams.filter((dataStream: DataStream) => { // include all data streams that are neither hidden nor managed - if (!dataStream.hidden && !isFleetManaged(dataStream)) { + if (!dataStream.hidden && !isManaged(dataStream)) { return true; } if (dataStream.hidden && visibleTypes.includes('hidden')) { return true; } - return isFleetManaged(dataStream) && visibleTypes.includes('managed'); + return isManaged(dataStream) && visibleTypes.includes('managed'); }); }; diff --git a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_badges.tsx b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_badges.tsx index 39c6f61e75dde..2f98b6ac357a4 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_badges.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_badges.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { EuiBadge, EuiBadgeGroup } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { DataStream } from '../../../../../common'; -import { isFleetManaged } from '../../../lib/data_streams'; +import { isManaged } from '../../../lib/data_streams'; interface Props { dataStream: DataStream; @@ -17,12 +17,12 @@ interface Props { export const DataStreamsBadges: React.FunctionComponent = ({ dataStream }) => { const badges = []; - if (isFleetManaged(dataStream)) { + if (isManaged(dataStream)) { badges.push( ); diff --git a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_list.tsx b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_list.tsx index fa4efa61bf548..125f676897ffb 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_list.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_list.tsx @@ -84,7 +84,7 @@ export const DataStreamList: React.FunctionComponent>({ managed: { name: i18n.translate('xpack.idxMgmt.dataStreamList.viewManagedLabel', { - defaultMessage: 'Fleet-managed data streams', + defaultMessage: 'Managed data streams', }), checked: 'on', }, @@ -226,7 +226,7 @@ export const DataStreamList: React.FunctionComponent {i18n.translate( - 'xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIngestManagerLink', + 'xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaFleetLink', { defaultMessage: 'Fleet', } diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index cbbd515a86e1b..e7fa92aa02a3c 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -18390,7 +18390,6 @@ "xpack.idxMgmt.createIndex.successfullyCreatedIndexMessage": "Création réussie de l'index : {indexName}", "xpack.idxMgmt.dataStreamList.dataStreamsDescription": "Les flux de données conservent des données de séries temporelles sur plusieurs index. {learnMoreLink}", "xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIndexTemplateMessage": "Lancez-vous avec les flux de données en créant un {link}.", - "xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIngestManagerMessage": "Lancez-vous avec les flux de données dans {link}.", "xpack.idxMgmt.dataStreamList.table.deleteDataStreamsButtonLabel": "Supprimer {count, plural, one {le flux de données} many {flux de données} other {flux de données}}", "xpack.idxMgmt.deleteDataStreamsConfirmationModal.confirmButtonLabel": "Supprimer {dataStreamsCount, plural, one {le flux de données} many {flux de données} other {flux de données}}", "xpack.idxMgmt.deleteDataStreamsConfirmationModal.deleteDescription": "Vous êtes sur le point de supprimer {dataStreamsCount, plural, one {ce flux de données} many {ces flux de données} other {ces flux de données}} :", @@ -18687,7 +18686,6 @@ "xpack.idxMgmt.dataStreamDetailPanel.timestampFieldTitle": "Champ d'horodatage", "xpack.idxMgmt.dataStreamDetailPanel.timestampFieldToolTip": "Champ d'horodatage partagé par tous les documents du flux de données.", "xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIndexTemplateLink": "modèle d'index composable", - "xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIngestManagerLink": "Fleet", "xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsDescription": "Les flux de données conservent des données de séries temporelles sur plusieurs index.", "xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsTitle": "Vous n'avez pas encore de flux de données", "xpack.idxMgmt.dataStreamList.loadingDataStreamsDescription": "Chargement des flux de données en cours…", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index f0575cc0496fb..4a23239256f53 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -18403,7 +18403,6 @@ "xpack.idxMgmt.createIndex.successfullyCreatedIndexMessage": "インデックスの作成が正常に完了しました:{indexName}", "xpack.idxMgmt.dataStreamList.dataStreamsDescription": "データストリームは複数のインデックスの時系列データを格納します。{learnMoreLink}", "xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIndexTemplateMessage": "{link}を作成して、データストリームを開始します。", - "xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIngestManagerMessage": "{link}でデータストリームを開始します。", "xpack.idxMgmt.dataStreamList.table.deleteDataStreamsButtonLabel": "{count, plural, other {データストリーム}}削除", "xpack.idxMgmt.deleteDataStreamsConfirmationModal.confirmButtonLabel": "{dataStreamsCount, plural, other {データストリーム}}削除", "xpack.idxMgmt.deleteDataStreamsConfirmationModal.deleteDescription": "{dataStreamsCount, plural, other {これらのデータストリーム}}を削除しようとしています:", @@ -18700,7 +18699,6 @@ "xpack.idxMgmt.dataStreamDetailPanel.timestampFieldTitle": "タイムスタンプフィールド", "xpack.idxMgmt.dataStreamDetailPanel.timestampFieldToolTip": "タイムスタンプフィールドはデータストリームのすべてのドキュメントで共有されます。", "xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIndexTemplateLink": "作成可能なインデックステンプレート", - "xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIngestManagerLink": "Fleet", "xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsDescription": "データストリームは複数のインデックスの時系列データを格納します。", "xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsTitle": "まだデータストリームがありません", "xpack.idxMgmt.dataStreamList.loadingDataStreamsDescription": "データストリームを読み込んでいます…", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 2a5c081a8d014..ccce90db35aaf 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -18470,7 +18470,6 @@ "xpack.idxMgmt.createIndex.successfullyCreatedIndexMessage": "已成功创建索引:{indexName}", "xpack.idxMgmt.dataStreamList.dataStreamsDescription": "数据流在多个索引上存储时序数据。{learnMoreLink}", "xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIndexTemplateMessage": "通过创建 {link} 来开始使用数据流。", - "xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIngestManagerMessage": "开始使用 {link} 中的数据流。", "xpack.idxMgmt.dataStreamList.table.deleteDataStreamsButtonLabel": "删除 {count, plural, other {数据流}}", "xpack.idxMgmt.deleteDataStreamsConfirmationModal.confirmButtonLabel": "删除 {dataStreamsCount, plural, other {数据流}}", "xpack.idxMgmt.deleteDataStreamsConfirmationModal.deleteDescription": "您即将删除{dataStreamsCount, plural, other {以下数据流}}:", @@ -18767,7 +18766,6 @@ "xpack.idxMgmt.dataStreamDetailPanel.timestampFieldTitle": "时间戳字段", "xpack.idxMgmt.dataStreamDetailPanel.timestampFieldToolTip": "时间戳字段由数据流中的所有文档共享。", "xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIndexTemplateLink": "可组合索引模板", - "xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIngestManagerLink": "Fleet", "xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsDescription": "数据流存储多个索引的时序数据。", "xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsTitle": "您尚未有任何数据流", "xpack.idxMgmt.dataStreamList.loadingDataStreamsDescription": "正在加载数据流……", diff --git a/x-pack/test/functional/apps/index_management/data_streams_tab/data_streams_tab.ts b/x-pack/test/functional/apps/index_management/data_streams_tab/data_streams_tab.ts index 9d3da94fead4a..4480063da220b 100644 --- a/x-pack/test/functional/apps/index_management/data_streams_tab/data_streams_tab.ts +++ b/x-pack/test/functional/apps/index_management/data_streams_tab/data_streams_tab.ts @@ -78,7 +78,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('shows the details flyout when clicking on a data stream', async () => { // Open details flyout - await pageObjects.indexManagement.clickDataStreamAt(0); + await pageObjects.indexManagement.clickDataStreamNameLink(TEST_DS_NAME); // Verify url is stateful const url = await browser.getCurrentUrl(); expect(url).to.contain(`/data_streams/${TEST_DS_NAME}`); @@ -90,7 +90,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('allows to update data retention', async () => { // Open details flyout - await pageObjects.indexManagement.clickDataStreamAt(0); + await pageObjects.indexManagement.clickDataStreamNameLink(TEST_DS_NAME); // Open the edit retention dialog await testSubjects.click('manageDataStreamButton'); await testSubjects.click('editDataRetentionButton'); @@ -112,7 +112,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('allows to disable data retention', async () => { // Open details flyout - await pageObjects.indexManagement.clickDataStreamAt(0); + await pageObjects.indexManagement.clickDataStreamNameLink(TEST_DS_NAME); // Open the edit retention dialog await testSubjects.click('manageDataStreamButton'); await testSubjects.click('editDataRetentionButton'); diff --git a/x-pack/test/functional/page_objects/index_management_page.ts b/x-pack/test/functional/page_objects/index_management_page.ts index 9dc9d30fd375d..19eb3f2824f3a 100644 --- a/x-pack/test/functional/page_objects/index_management_page.ts +++ b/x-pack/test/functional/page_objects/index_management_page.ts @@ -22,9 +22,6 @@ export function IndexManagementPageProvider({ getService }: FtrProviderContext) async reloadIndicesButton() { return await testSubjects.find('reloadIndicesButton'); }, - async toggleRollupIndices() { - await testSubjects.click('checkboxToggles-rollupToggle'); - }, async toggleHiddenIndices() { await testSubjects.click('indexTableIncludeHiddenIndicesToggle'); }, @@ -34,9 +31,8 @@ export function IndexManagementPageProvider({ getService }: FtrProviderContext) await policyDetailsLinks[indexOfRow].click(); }, - async clickDataStreamAt(indexOfRow: number): Promise { - const dataStreamLinks = await testSubjects.findAll('nameLink'); - await dataStreamLinks[indexOfRow].click(); + async clickDataStreamNameLink(name: string): Promise { + await find.clickByLinkText(name); }, async clickDeleteEnrichPolicyAt(indexOfRow: number): Promise { diff --git a/x-pack/test_serverless/functional/test_suites/common/management/index.ts b/x-pack/test_serverless/functional/test_suites/common/management/index.ts index 3291f50dc6bc8..e523e27c3cf00 100644 --- a/x-pack/test_serverless/functional/test_suites/common/management/index.ts +++ b/x-pack/test_serverless/functional/test_suites/common/management/index.ts @@ -9,11 +9,7 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default ({ loadTestFile }: FtrProviderContext) => { describe('Serverless Common UI - Management', function () { - loadTestFile(require.resolve('./index_management/index_templates')); - loadTestFile(require.resolve('./index_management/indices')); - loadTestFile(require.resolve('./index_management/create_enrich_policy')); - loadTestFile(require.resolve('./index_management/enrich_policies')); - loadTestFile(require.resolve('./index_management/component_templates')); + loadTestFile(require.resolve('./index_management')); loadTestFile(require.resolve('./transforms/search_bar_features')); loadTestFile(require.resolve('./transforms/transform_list')); loadTestFile(require.resolve('./advanced_settings')); diff --git a/x-pack/test_serverless/functional/test_suites/common/management/index_management/data_streams.ts b/x-pack/test_serverless/functional/test_suites/common/management/index_management/data_streams.ts index bbf55e359d360..4bd839e2c9ebb 100644 --- a/x-pack/test_serverless/functional/test_suites/common/management/index_management/data_streams.ts +++ b/x-pack/test_serverless/functional/test_suites/common/management/index_management/data_streams.ts @@ -88,7 +88,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('shows the details flyout when clicking on a data stream', async () => { // Open details flyout - await pageObjects.indexManagement.clickDataStreamAt(0); + await pageObjects.indexManagement.clickDataStreamNameLink(TEST_DS_NAME); // Verify url is stateful const url = await browser.getCurrentUrl(); expect(url).to.contain(`/data_streams/${TEST_DS_NAME}`); @@ -100,7 +100,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('allows to update data retention', async () => { // Open details flyout - await pageObjects.indexManagement.clickDataStreamAt(0); + await pageObjects.indexManagement.clickDataStreamNameLink(TEST_DS_NAME); // Open the edit retention dialog await testSubjects.click('manageDataStreamButton'); await testSubjects.click('editDataRetentionButton'); @@ -122,7 +122,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('allows to disable data retention', async () => { // Open details flyout - await pageObjects.indexManagement.clickDataStreamAt(0); + await pageObjects.indexManagement.clickDataStreamNameLink(TEST_DS_NAME); // Open the edit retention dialog await testSubjects.click('manageDataStreamButton'); await testSubjects.click('editDataRetentionButton'); diff --git a/x-pack/test_serverless/functional/test_suites/common/management/index_management/index.ts b/x-pack/test_serverless/functional/test_suites/common/management/index_management/index.ts new file mode 100644 index 0000000000000..0df628a2ba587 --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/management/index_management/index.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default ({ loadTestFile }: FtrProviderContext) => { + describe('Index Management', function () { + loadTestFile(require.resolve('./component_templates')); + loadTestFile(require.resolve('./create_enrich_policy')); + loadTestFile(require.resolve('./data_streams')); + loadTestFile(require.resolve('./enrich_policies')); + loadTestFile(require.resolve('./index_templates')); + loadTestFile(require.resolve('./indices')); + }); +}; From 46a58541fa8ce21f86a32408cbc759c1bf22487b Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Thu, 4 Jan 2024 14:51:46 -0500 Subject: [PATCH 125/323] skip failing test suite (#173558) --- .../common/management/data_views/_runtime_fields.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test_serverless/functional/test_suites/common/management/data_views/_runtime_fields.ts b/x-pack/test_serverless/functional/test_suites/common/management/data_views/_runtime_fields.ts index f900329539e69..b7bc99d9aecb1 100644 --- a/x-pack/test_serverless/functional/test_suites/common/management/data_views/_runtime_fields.ts +++ b/x-pack/test_serverless/functional/test_suites/common/management/data_views/_runtime_fields.ts @@ -16,7 +16,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['settings', 'common']); const testSubjects = getService('testSubjects'); - describe('runtime fields', function () { + // Failing: See https://github.com/elastic/kibana/issues/173558 + describe.skip('runtime fields', function () { this.tags(['skipFirefox']); before(async function () { From 133016850fabf44f3f527496a67eab5d102443b4 Mon Sep 17 00:00:00 2001 From: Hannah Mudge Date: Thu, 4 Jan 2024 14:39:44 -0700 Subject: [PATCH 126/323] [Dashboard Usability] Conditionally auto focus on title input in panel settings flyout (#173777) Closes https://github.com/elastic/kibana/issues/170786 ## Summary Currently, in order to change a panel title, the most efficient way to do this (assuming the dashboard is already in edit mode) is to click on the panel title -> click on the title input in the flyout -> click save at the bottom of the flyout. Notice that this process currently takes **three** clicks, which can start to add up if you need to change multiple titles in one session - so, in order to remove one click from this process, I've made it so that the title input is **auto focused** on when opening the settings flyout through the panel title (and not when it is opened from the context menu). > [!NOTE] > I chose to make this auto-focus behaviour conditional on how the flyout was opened because, from an a11y perspective, it can be jarring to have your focus taken out of the natural element order (as noted in the [EUI docs](https://eui.elastic.co/#/layout/popover#setting-an-initial-focus)). It feels natural that, in order to change the panel title, you click on it - so, auto focusing on the title input makes sense, even when using keyboard controls. However, if you are opening the settings flyout via the context menu, it is **less likely** that the goal is to change the title - so, forcing the focus could feel unnatural in this case. I added tests for this new auto focus behaviour and, since I was interested in learning a bit more about RTL, I also added a few other tests for the dashboard panel components. As part of this, I migrated a few functional tests to unit tests, since this is a faster and more reliable way to test certain rendering conditionals. ### Video https://github.com/elastic/kibana/assets/8698078/229c1303-c81d-46b8-a567-76885361d9fa ### Checklist - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [x] Any UI touched in this PR is usable by keyboard only (learn more about [keyboard accessibility](https://webaim.org/techniques/keyboard/)) - [x] Any UI touched in this PR does not create any new axe failures (run axe in browser: [FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/), [Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US)) - [x] This was checked for [cross-browser compatibility](https://www.elastic.co/support/matrix#matrix_browsers) ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../embeddable_panel/embeddable_panel.tsx | 29 +-- .../can_inherit_time_range.ts | 2 +- .../custom_time_range_badge.test.ts | 31 +-- .../custom_time_range_badge.tsx | 12 +- .../customize_panel_action.test.ts | 15 +- .../customize_panel_action.tsx | 114 +--------- .../customize_panel_editor.test.tsx | 200 ++++++++++++++++++ .../customize_panel_editor.tsx | 55 +++-- .../does_inherit_time_range.ts | 4 +- .../filters_details.tsx | 3 + .../open_customize_panel.tsx | 75 +++++++ .../time_range_helpers.ts | 53 +++++ .../embeddable_panel_header.test.tsx | 171 +++++++++++++++ .../panel_header/embeddable_panel_header.tsx | 4 +- .../panel_header/embeddable_panel_title.tsx | 29 ++- src/plugins/embeddable/public/plugin.tsx | 11 +- src/plugins/embeddable/tsconfig.json | 3 +- .../apps/dashboard/group2/panel_time_range.ts | 15 -- .../apps/dashboard/group2/panel_titles.ts | 38 ---- 19 files changed, 601 insertions(+), 263 deletions(-) create mode 100644 src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_editor.test.tsx create mode 100644 src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/open_customize_panel.tsx create mode 100644 src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/time_range_helpers.ts create mode 100644 src/plugins/embeddable/public/embeddable_panel/panel_header/embeddable_panel_header.test.tsx diff --git a/src/plugins/embeddable/public/embeddable_panel/embeddable_panel.tsx b/src/plugins/embeddable/public/embeddable_panel/embeddable_panel.tsx index c24383ff9fb18..134b65efc9d86 100644 --- a/src/plugins/embeddable/public/embeddable_panel/embeddable_panel.tsx +++ b/src/plugins/embeddable/public/embeddable_panel/embeddable_panel.tsx @@ -6,20 +6,23 @@ * Side Public License, v 1. */ -import { isNil } from 'lodash'; +import { EuiFlexGroup, EuiFlexItem, EuiPanel, htmlIdGenerator } from '@elastic/eui'; import classNames from 'classnames'; -import { distinct, map } from 'rxjs'; +import { isNil } from 'lodash'; import React, { ReactNode, useEffect, useMemo, useState } from 'react'; -import { EuiFlexGroup, EuiFlexItem, EuiPanel, htmlIdGenerator } from '@elastic/eui'; +import { distinct, map } from 'rxjs'; -import { UI_SETTINGS } from '@kbn/data-plugin/common'; import { PanelLoader } from '@kbn/panel-loader'; +import { core, embeddableStart, inspector } from '../kibana_services'; +import { EmbeddableErrorHandler, EmbeddableOutput, ViewMode } from '../lib'; +import { EmbeddablePanelError } from './embeddable_panel_error'; import { + CustomizePanelAction, EditPanelAction, - RemovePanelAction, InspectPanelAction, - CustomizePanelAction, + RemovePanelAction, } from './panel_actions'; +import { EmbeddablePanelHeader } from './panel_header/embeddable_panel_header'; import { EmbeddablePhase, EmbeddablePhaseEvent, @@ -30,10 +33,6 @@ import { useSelectFromEmbeddableInput, useSelectFromEmbeddableOutput, } from './use_select_from_embeddable'; -import { EmbeddablePanelError } from './embeddable_panel_error'; -import { core, embeddableStart, inspector } from '../kibana_services'; -import { ViewMode, EmbeddableErrorHandler, EmbeddableOutput } from '../lib'; -import { EmbeddablePanelHeader } from './panel_header/embeddable_panel_header'; const getEventStatus = (output: EmbeddableOutput): EmbeddablePhase => { if (!isNil(output.error)) { @@ -61,8 +60,6 @@ export const EmbeddablePanel = (panelProps: UnwrappedEmbeddablePanelProps) => { * bypass the trigger registry. */ const universalActions = useMemo(() => { - const commonlyUsedRanges = core.uiSettings.get(UI_SETTINGS.TIMEPICKER_QUICK_RANGES); - const dateFormat = core.uiSettings.get(UI_SETTINGS.DATE_FORMAT); const stateTransfer = embeddableStart.getStateTransfer(); const editPanel = new EditPanelAction( embeddableStart.getEmbeddableFactory, @@ -71,13 +68,7 @@ export const EmbeddablePanel = (panelProps: UnwrappedEmbeddablePanelProps) => { ); const actions: PanelUniversalActions = { - customizePanel: new CustomizePanelAction( - core.overlays, - core.theme, - editPanel, - commonlyUsedRanges, - dateFormat - ), + customizePanel: new CustomizePanelAction(editPanel), removePanel: new RemovePanelAction(), editPanel, }; diff --git a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/can_inherit_time_range.ts b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/can_inherit_time_range.ts index 139933c8d9390..f2c1a3b7a9aac 100644 --- a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/can_inherit_time_range.ts +++ b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/can_inherit_time_range.ts @@ -8,8 +8,8 @@ import type { TimeRange } from '@kbn/es-query'; -import { TimeRangeInput } from './customize_panel_action'; import { Embeddable, IContainer, ContainerInput } from '../../..'; +import { TimeRangeInput } from './time_range_helpers'; interface ContainerTimeRangeInput extends ContainerInput { timeRange: TimeRange; diff --git a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/custom_time_range_badge.test.ts b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/custom_time_range_badge.test.ts index 454c92a602691..1c1b7226b7f30 100644 --- a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/custom_time_range_badge.test.ts +++ b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/custom_time_range_badge.test.ts @@ -6,16 +6,13 @@ * Side Public License, v 1. */ -import { themeServiceMock } from '@kbn/core-theme-browser-mocks'; -import { overlayServiceMock } from '@kbn/core-overlays-browser-mocks'; - import { - TimeRangeEmbeddable, TimeRangeContainer, + TimeRangeEmbeddable, TIME_RANGE_EMBEDDABLE, } from '../../../lib/test_samples/embeddables'; -import { CustomTimeRangeBadge } from './custom_time_range_badge'; import { EditPanelAction } from '../edit_panel_action/edit_panel_action'; +import { CustomTimeRangeBadge } from './custom_time_range_badge'; const editPanelAction = { execute: jest.fn(), @@ -42,13 +39,7 @@ test(`badge is not compatible with embeddable that inherits from parent`, async const child = container.getChild('1'); - const compatible = await new CustomTimeRangeBadge( - overlayServiceMock.createStartContract(), - themeServiceMock.createStartContract(), - editPanelAction, - [], - 'MM YYYY' - ).isCompatible({ + const compatible = await new CustomTimeRangeBadge(editPanelAction, 'MM YYYY').isCompatible({ embeddable: child, }); expect(compatible).toBe(false); @@ -76,13 +67,7 @@ test(`badge is compatible with embeddable that has custom time range`, async () const child = container.getChild('1'); - const compatible = await new CustomTimeRangeBadge( - overlayServiceMock.createStartContract(), - themeServiceMock.createStartContract(), - editPanelAction, - [], - 'MM YYYY' - ).isCompatible({ + const compatible = await new CustomTimeRangeBadge(editPanelAction, 'MM YYYY').isCompatible({ embeddable: child, }); expect(compatible).toBe(true); @@ -109,13 +94,7 @@ test('Attempting to execute on incompatible embeddable throws an error', async ( const child = container.getChild('1'); - const badge = await new CustomTimeRangeBadge( - overlayServiceMock.createStartContract(), - themeServiceMock.createStartContract(), - editPanelAction, - [], - 'MM YYYY' - ); + const badge = await new CustomTimeRangeBadge(editPanelAction, 'MM YYYY'); async function check() { await badge.execute({ embeddable: child }); diff --git a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/custom_time_range_badge.tsx b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/custom_time_range_badge.tsx index 08e864b76b1ab..5866c3b5ec195 100644 --- a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/custom_time_range_badge.tsx +++ b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/custom_time_range_badge.tsx @@ -11,9 +11,10 @@ import { PrettyDuration } from '@elastic/eui'; import { renderToString } from 'react-dom/server'; import { Action } from '@kbn/ui-actions-plugin/public'; -import { Embeddable } from '../../..'; +import { EditPanelAction, Embeddable } from '../../..'; import { doesInheritTimeRange } from './does_inherit_time_range'; -import { TimeRangeInput, hasTimeRange, CustomizePanelAction } from './customize_panel_action'; +import { CustomizePanelAction } from './customize_panel_action'; +import { hasTimeRange, TimeRangeInput } from './time_range_helpers'; export const CUSTOM_TIME_RANGE_BADGE = 'CUSTOM_TIME_RANGE_BADGE'; @@ -29,6 +30,13 @@ export class CustomTimeRangeBadge public readonly id = CUSTOM_TIME_RANGE_BADGE; public order = 7; + constructor( + protected readonly editPanel: EditPanelAction, + protected readonly dateFormat?: string + ) { + super(editPanel); + } + public getDisplayName({ embeddable }: TimeBadgeActionContext) { return renderToString( { }); test('execute should open flyout', async () => { - const customizePanelAction = new CustomizePanelAction(overlays, theme, editPanelActionMock); - const spy = jest.spyOn(overlays, 'openFlyout'); - await customizePanelAction.execute({ embeddable }); + const customizePanelAction = new CustomizePanelAction(editPanelActionMock); + const spy = jest.spyOn(openCustomizePanel, 'openCustomizePanelFlyout'); + await customizePanelAction.execute({ embeddable }); expect(spy).toHaveBeenCalled(); }); diff --git a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_action.tsx b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_action.tsx index 63fc1902102b6..7f70ecf51acac 100644 --- a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_action.tsx +++ b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_action.tsx @@ -6,48 +6,16 @@ * Side Public License, v 1. */ -import React from 'react'; import { i18n } from '@kbn/i18n'; -import { TimeRange } from '@kbn/es-query'; -import { createKibanaReactContext } from '@kbn/kibana-react-plugin/public'; -import { OverlayStart, ThemeServiceStart } from '@kbn/core/public'; -import { toMountPoint } from '@kbn/react-kibana-mount'; import { Action, IncompatibleActionError } from '@kbn/ui-actions-plugin/public'; -import { core } from '../../../kibana_services'; -import { - IEmbeddable, - Embeddable, - EmbeddableInput, - EmbeddableOutput, - EditPanelAction, -} from '../../..'; -import { ViewMode, CommonlyUsedRange } from '../../../lib/types'; -import { tracksOverlays } from '../track_overlays'; -import { CustomizePanelEditor } from './customize_panel_editor'; +import { EditPanelAction, Embeddable, IEmbeddable } from '../../..'; +import { ViewMode } from '../../../lib/types'; +import { openCustomizePanelFlyout } from './open_customize_panel'; +import { isTimeRangeCompatible, TimeRangeInput } from './time_range_helpers'; export const ACTION_CUSTOMIZE_PANEL = 'ACTION_CUSTOMIZE_PANEL'; -const VISUALIZE_EMBEDDABLE_TYPE = 'visualization'; - -type VisualizeEmbeddable = IEmbeddable<{ id: string }, EmbeddableOutput & { visTypeName: string }>; - -function isVisualizeEmbeddable( - embeddable: IEmbeddable | VisualizeEmbeddable -): embeddable is VisualizeEmbeddable { - return embeddable.type === VISUALIZE_EMBEDDABLE_TYPE; -} - -export interface TimeRangeInput extends EmbeddableInput { - timeRange: TimeRange; -} - -export function hasTimeRange( - embeddable: IEmbeddable | Embeddable -): embeddable is Embeddable { - return (embeddable as Embeddable).getInput().timeRange !== undefined; -} - export interface CustomizePanelActionContext { embeddable: IEmbeddable | Embeddable; } @@ -57,35 +25,7 @@ export class CustomizePanelAction implements Action public id = ACTION_CUSTOMIZE_PANEL; public order = 40; - constructor( - protected readonly overlays: OverlayStart, - protected readonly theme: ThemeServiceStart, - protected readonly editPanel: EditPanelAction, - protected readonly commonlyUsedRanges?: CommonlyUsedRange[], - protected readonly dateFormat?: string - ) {} - - protected isTimeRangeCompatible({ embeddable }: CustomizePanelActionContext): boolean { - const isInputControl = - isVisualizeEmbeddable(embeddable) && - (embeddable as VisualizeEmbeddable).getOutput().visTypeName === 'input_control_vis'; - - const isMarkdown = - isVisualizeEmbeddable(embeddable) && - (embeddable as VisualizeEmbeddable).getOutput().visTypeName === 'markdown'; - - const isImage = embeddable.type === 'image'; - const isNavigation = embeddable.type === 'navigation'; - - return Boolean( - embeddable && - hasTimeRange(embeddable) && - !isInputControl && - !isMarkdown && - !isImage && - !isNavigation - ); - } + constructor(protected readonly editPanel: EditPanelAction) {} public getDisplayName({ embeddable }: CustomizePanelActionContext): string { return i18n.translate('embeddableApi.customizePanel.action.displayName', { @@ -100,7 +40,7 @@ export class CustomizePanelAction implements Action public async isCompatible({ embeddable }: CustomizePanelActionContext) { // It should be possible to customize just the time range in View mode return ( - embeddable.getInput().viewMode === ViewMode.EDIT || this.isTimeRangeCompatible({ embeddable }) + embeddable.getInput().viewMode === ViewMode.EDIT || isTimeRangeCompatible({ embeddable }) ); } @@ -109,46 +49,6 @@ export class CustomizePanelAction implements Action if (!isCompatible) { throw new IncompatibleActionError(); } - - // send the overlay ref to the root embeddable if it is capable of tracking overlays - const rootEmbeddable = embeddable.getRoot(); - const overlayTracker = tracksOverlays(rootEmbeddable) ? rootEmbeddable : undefined; - - const { Provider: KibanaReactContextProvider } = createKibanaReactContext({ - uiSettings: core.uiSettings, - }); - - const onEdit = () => { - this.editPanel.execute({ embeddable }); - }; - - const handle = this.overlays.openFlyout( - toMountPoint( - - { - if (overlayTracker) overlayTracker.clearOverlays(); - handle.close(); - }} - onEdit={onEdit} - /> - , - { theme: this.theme, i18n: core.i18n } - ), - { - size: 's', - 'data-test-subj': 'customizePanel', - onClose: (overlayRef) => { - if (overlayTracker) overlayTracker.clearOverlays(); - overlayRef.close(); - }, - maxWidth: true, - } - ); - overlayTracker?.openOverlay(handle); + openCustomizePanelFlyout({ editPanel: this.editPanel, embeddable }); } } diff --git a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_editor.test.tsx b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_editor.test.tsx new file mode 100644 index 0000000000000..a2ccf9782deba --- /dev/null +++ b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_editor.test.tsx @@ -0,0 +1,200 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React from 'react'; + +import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; +import '@testing-library/jest-dom'; +import { render, screen, waitFor } from '@testing-library/react'; + +import { Filter } from '@kbn/es-query'; +import { ViewMode } from '../../../../common'; +import { FilterableEmbeddable, IEmbeddable } from '../../../lib'; +import { + ContactCardEmbeddable, + ContactCardEmbeddableFactory, + ContactCardEmbeddableInput, +} from '../../../lib/test_samples'; +import { EditPanelAction } from '../edit_panel_action/edit_panel_action'; +import { CustomizePanelAction } from './customize_panel_action'; +import { CustomizePanelEditor } from './customize_panel_editor'; + +const editPanelActionMock = { execute: jest.fn() } as unknown as EditPanelAction; + +const mockEmbeddableFactory = new ContactCardEmbeddableFactory((() => null) as any, {} as any); +const customizePanelAction = new CustomizePanelAction(editPanelActionMock); +customizePanelAction.execute = jest.fn(); + +const DEFAULT_PANEL_TITLE = 'Panel title'; + +const createEmbeddable = async ( + initialInput?: Partial +): Promise => { + return await mockEmbeddableFactory.create({ + id: '20', + firstName: 'Bilbo', + lastName: 'Baggins', + title: DEFAULT_PANEL_TITLE, + ...initialInput, + }); +}; + +const DEFAULT_PROPS = { + timeRangeCompatible: true, + onClose: jest.fn(), + onEdit: jest.fn(), +}; + +describe('panel title / description', () => { + test('does not render if in view mode', async () => { + const mockEmbeddable = await createEmbeddable({ viewMode: ViewMode.VIEW }); + render( + + + + ); + + const customizePanelForm = await screen.findByTestId('customizePanelForm'); + const titleDescriptionComponent = screen.queryByTestId('customEmbeddableTitleComponent'); + expect(customizePanelForm).not.toContainElement(titleDescriptionComponent); + }); + + test('title input receives focus when `focusOnTitle` is `true`', async () => { + const mockEmbeddable = await createEmbeddable({ viewMode: ViewMode.EDIT }); + render( + + + + ); + + const customTitleComponent = await screen.findByTestId('customEmbeddablePanelTitleInput'); + expect(customTitleComponent).toHaveFocus(); + }); + + test('title input does not receive focus when `focusOnTitle` is `false`', async () => { + const mockEmbeddable = await createEmbeddable({ viewMode: ViewMode.EDIT }); + render( + + + + ); + + const customTitleComponent = await screen.findByTestId('customEmbeddablePanelTitleInput'); + expect(customTitleComponent).not.toHaveFocus(); + }); +}); + +describe('custom time picker', () => { + test('renders custom time picker if embeddable supports it', async () => { + const mockEmbeddable = await createEmbeddable({ viewMode: ViewMode.EDIT }); + render( + + + + ); + + const customTimeRangeComponent = await screen.findByTestId('customizePanelTimeRangeDatePicker'); + expect(customTimeRangeComponent).toBeDefined(); + }); + + test('does not render custom time picker if embeddable does not support it', async () => { + const mockEmbeddable = await createEmbeddable({ viewMode: ViewMode.EDIT }); + render( + + + + ); + + const customizePanelForm = await screen.findByTestId('customizePanelForm'); + const customTimeRangeComponent = screen.queryByTestId('customizePanelTimeRangeDatePicker'); + expect(customizePanelForm).not.toContainElement(customTimeRangeComponent); + }); + + test('does not render filters and/or query info if embeddable does not support it', async () => { + const mockEmbeddable = await createEmbeddable({ + viewMode: ViewMode.EDIT, + }); + + render( + + + + ); + + const customizePanelForm = await screen.findByTestId('customizePanelForm'); + const customPanelQuery = screen.queryByTestId('panelCustomQueryRow'); + expect(customizePanelForm).not.toContainElement(customPanelQuery); + const customPanelFilters = screen.queryByTestId('panelCustomFiltersRow'); + expect(customizePanelForm).not.toContainElement(customPanelFilters); + }); + + describe('filterable embeddable', () => { + test('renders custom filters, if provided', async () => { + const mockEmbeddable: FilterableEmbeddable = (await createEmbeddable({ + viewMode: ViewMode.EDIT, + })) as unknown as FilterableEmbeddable; + + mockEmbeddable.getFilters = jest.fn().mockResolvedValue([ + { + meta: {}, + query: {}, + $state: {}, + }, + ] as Filter[]); + mockEmbeddable.getQuery = jest.fn().mockResolvedValue({}); + render( + + + + ); + await waitFor(() => { + expect(screen.getByTestId('euiSkeletonLoadingAriaWrapper')).toBeInTheDocument(); + }); + const customPanelQuery = await screen.findByTestId('panelCustomFiltersRow'); + expect(customPanelQuery).toBeInTheDocument(); + }); + + test('renders a custom query, if provided', async () => { + const mockEmbeddable: FilterableEmbeddable = (await createEmbeddable({ + viewMode: ViewMode.EDIT, + })) as unknown as FilterableEmbeddable; + mockEmbeddable.getFilters = jest.fn().mockResolvedValue([]); + mockEmbeddable.getQuery = jest.fn().mockResolvedValue({ query: 'field : value' }); + render( + + + + ); + await waitFor(() => { + expect(screen.getByTestId('euiSkeletonLoadingAriaWrapper')).toBeInTheDocument(); + }); + const customPanelQuery = await screen.findByTestId('customPanelQuery'); + expect(customPanelQuery).toHaveTextContent('field : value'); + }); + }); +}); diff --git a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_editor.tsx b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_editor.tsx index be1e7df0c1057..9893e016af08b 100644 --- a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_editor.tsx +++ b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_editor.tsx @@ -6,40 +6,40 @@ * Side Public License, v 1. */ -import React, { useState } from 'react'; +import React, { useEffect, useRef, useState } from 'react'; import { - EuiFormRow, - EuiFieldText, - EuiSwitch, - EuiFlyoutHeader, - EuiTitle, - EuiFlyoutBody, - EuiForm, - EuiTextArea, - EuiFlyoutFooter, - EuiButtonEmpty, EuiButton, + EuiButtonEmpty, + EuiFieldText, EuiFlexGroup, EuiFlexItem, - EuiSuperDatePicker, + EuiFlyoutBody, + EuiFlyoutFooter, + EuiFlyoutHeader, + EuiForm, + EuiFormRow, EuiSpacer, + EuiSuperDatePicker, + EuiSwitch, + EuiTextArea, + EuiTitle, } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; import { TimeRange } from '@kbn/es-query'; +import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import { TimeRangeInput } from './customize_panel_action'; -import { canInheritTimeRange } from './can_inherit_time_range'; -import { doesInheritTimeRange } from './does_inherit_time_range'; import { - IEmbeddable, - Embeddable, CommonlyUsedRange, - ViewMode, + Embeddable, + IEmbeddable, isFilterableEmbeddable, + ViewMode, } from '../../../lib'; +import { canInheritTimeRange } from './can_inherit_time_range'; +import { doesInheritTimeRange } from './does_inherit_time_range'; import { FiltersDetails } from './filters_details'; +import { TimeRangeInput } from './time_range_helpers'; type PanelSettings = { title?: string; @@ -55,10 +55,11 @@ interface CustomizePanelProps { commonlyUsedRanges?: CommonlyUsedRange[]; onClose: () => void; onEdit: () => void; + focusOnTitle?: boolean; } export const CustomizePanelEditor = (props: CustomizePanelProps) => { - const { onClose, embeddable, dateFormat, timeRangeCompatible, onEdit } = props; + const { onClose, embeddable, dateFormat, timeRangeCompatible, onEdit, focusOnTitle } = props; const editMode = embeddable.getInput().viewMode === ViewMode.EDIT; const [hideTitle, setHideTitle] = useState(embeddable.getInput().hidePanelTitles); const [panelDescription, setPanelDescription] = useState( @@ -75,6 +76,13 @@ export const CustomizePanelEditor = (props: CustomizePanelProps) => { ? (embeddable as Embeddable).getInput().timeRange : undefined ); + const initialFocusRef = useRef(null); + + useEffect(() => { + if (focusOnTitle && initialFocusRef.current) { + initialFocusRef.current.focus(); + } + }, [initialFocusRef, focusOnTitle]); const commonlyUsedRangesForDatePicker = props.commonlyUsedRanges ? props.commonlyUsedRanges.map( @@ -108,7 +116,7 @@ export const CustomizePanelEditor = (props: CustomizePanelProps) => { if (!editMode) return null; return ( - <> +

    { } > { )} /> - +
    ); }; @@ -292,7 +301,7 @@ export const CustomizePanelEditor = (props: CustomizePanelProps) => { - + {renderCustomTitleComponent()} {renderCustomTimeRangeComponent()} {renderFilterDetails()} diff --git a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/does_inherit_time_range.ts b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/does_inherit_time_range.ts index a14ca031c9fb1..7d21a79ab9425 100644 --- a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/does_inherit_time_range.ts +++ b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/does_inherit_time_range.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ -import { Embeddable, IContainer, ContainerInput } from '../../../lib'; -import { TimeRangeInput } from './customize_panel_action'; +import { ContainerInput, Embeddable, IContainer } from '../../../lib'; +import { TimeRangeInput } from './time_range_helpers'; export function doesInheritTimeRange(embeddable: Embeddable) { if (!embeddable.parent) { diff --git a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/filters_details.tsx b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/filters_details.tsx index 2f151285fe488..300ed9253f0b9 100644 --- a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/filters_details.tsx +++ b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/filters_details.tsx @@ -89,6 +89,7 @@ export function FiltersDetails({ embeddable, editMode, onEdit }: FiltersDetailsP {queryString !== '' && ( 0 && ( ; +}) => { + // send the overlay ref to the root embeddable if it is capable of tracking overlays + const rootEmbeddable = embeddable.getRoot(); + const overlayTracker = tracksOverlays(rootEmbeddable) ? rootEmbeddable : undefined; + + const commonlyUsedRanges = core.uiSettings.get(UI_SETTINGS.TIMEPICKER_QUICK_RANGES); + const dateFormat = core.uiSettings.get(UI_SETTINGS.DATE_FORMAT); + + const { Provider: KibanaReactContextProvider } = createKibanaReactContext({ + uiSettings: core.uiSettings, + }); + + const onEdit = () => { + editPanel.execute({ embeddable }); + }; + + const handle = core.overlays.openFlyout( + toMountPoint( + + { + if (overlayTracker) overlayTracker.clearOverlays(); + handle.close(); + }} + onEdit={onEdit} + /> + , + { theme: core.theme, i18n: core.i18n } + ), + { + size: 's', + 'data-test-subj': 'customizePanel', + onClose: (overlayRef) => { + if (overlayTracker) overlayTracker.clearOverlays(); + overlayRef.close(); + }, + maxWidth: true, + } + ); + overlayTracker?.openOverlay(handle); +}; diff --git a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/time_range_helpers.ts b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/time_range_helpers.ts new file mode 100644 index 0000000000000..0b74809be8a08 --- /dev/null +++ b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/time_range_helpers.ts @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { TimeRange } from '@kbn/es-query'; + +import { Embeddable, EmbeddableInput, EmbeddableOutput, IEmbeddable } from '../../../lib'; + +const VISUALIZE_EMBEDDABLE_TYPE = 'visualization'; + +type VisualizeEmbeddable = IEmbeddable<{ id: string }, EmbeddableOutput & { visTypeName: string }>; + +function isVisualizeEmbeddable( + embeddable: IEmbeddable | VisualizeEmbeddable +): embeddable is VisualizeEmbeddable { + return embeddable.type === VISUALIZE_EMBEDDABLE_TYPE; +} + +export interface TimeRangeInput extends EmbeddableInput { + timeRange: TimeRange; +} + +export function hasTimeRange( + embeddable: IEmbeddable | Embeddable +): embeddable is Embeddable { + return (embeddable as Embeddable).getInput().timeRange !== undefined; +} + +export function isTimeRangeCompatible({ embeddable }: { embeddable: IEmbeddable }): boolean { + const isInputControl = + isVisualizeEmbeddable(embeddable) && + (embeddable as VisualizeEmbeddable).getOutput().visTypeName === 'input_control_vis'; + + const isMarkdown = + isVisualizeEmbeddable(embeddable) && + (embeddable as VisualizeEmbeddable).getOutput().visTypeName === 'markdown'; + + const isImage = embeddable.type === 'image'; + const isNavigation = embeddable.type === 'navigation'; + + return Boolean( + embeddable && + hasTimeRange(embeddable) && + !isInputControl && + !isMarkdown && + !isImage && + !isNavigation + ); +} diff --git a/src/plugins/embeddable/public/embeddable_panel/panel_header/embeddable_panel_header.test.tsx b/src/plugins/embeddable/public/embeddable_panel/panel_header/embeddable_panel_header.test.tsx new file mode 100644 index 0000000000000..770ca76edbc33 --- /dev/null +++ b/src/plugins/embeddable/public/embeddable_panel/panel_header/embeddable_panel_header.test.tsx @@ -0,0 +1,171 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React from 'react'; + +import '@testing-library/jest-dom'; +import { render, screen } from '@testing-library/react'; + +import { applicationServiceMock } from '@kbn/core-application-browser-mocks'; +import userEvent from '@testing-library/user-event'; +import { ViewMode } from '../../../common'; +import { + ContactCardEmbeddable, + ContactCardEmbeddableFactory, + ContactCardEmbeddableInput, +} from '../../lib/test_samples'; +import { EditPanelAction } from '../panel_actions'; +import * as openCustomizePanel from '../panel_actions/customize_panel_action/open_customize_panel'; +import { EmbeddablePanelHeader } from './embeddable_panel_header'; + +const getEmbeddableFactory = jest.fn(); +const application = applicationServiceMock.createStartContract(); + +const editPanelAction = new EditPanelAction(getEmbeddableFactory, application); +const mockEmbeddableFactory = new ContactCardEmbeddableFactory((() => null) as any, {} as any); +editPanelAction.execute = jest.fn(); + +const DEFAULT_PANEL_TITLE = 'Panel title'; + +const createEmbeddable = async ( + initialInput?: Partial +): Promise => { + return await mockEmbeddableFactory.create({ + id: '20', + firstName: 'Bilbo', + lastName: 'Baggins', + title: DEFAULT_PANEL_TITLE, + ...initialInput, + }); +}; + +describe('view mode', () => { + test('renders as expected', async () => { + const mockEmbeddable = await createEmbeddable({ viewMode: ViewMode.VIEW }); + render( + + ); + const titleComponent = await screen.findByTestId('dashboardPanelTitle'); + expect(titleComponent).toHaveTextContent(DEFAULT_PANEL_TITLE); + }); + + test('renders tooltip + icon when description provided', async () => { + const mockEmbeddable = await createEmbeddable({ viewMode: ViewMode.VIEW }); + mockEmbeddable.updateOutput({ description: 'This is a description ' }); + render( + + ); + + expect(await screen.findByTestId('embeddablePanelTooltipAnchor')).toBeInTheDocument(); + expect(await screen.findByTestId('embeddablePanelTitleDescriptionIcon')).toBeInTheDocument(); + }); + + test('blank titles are hidden in view mode', async () => { + const mockEmbeddable = await createEmbeddable({ title: '', viewMode: ViewMode.VIEW }); + render( + + ); + + const header = await screen.findByTestId('embeddablePanelHeading'); + const titleComponent = screen.queryByTestId('dashboardPanelTitle'); + expect(header).not.toContainElement(titleComponent); + }); + + test('hiding an individual panel title hides it in view mode', async () => { + const mockEmbeddable = await createEmbeddable({ + viewMode: ViewMode.VIEW, + hidePanelTitles: true, + }); + render( + + ); + + const header = await screen.findByTestId('embeddablePanelHeading'); + const titleComponent = screen.queryByTestId('dashboardPanelTitle'); + expect(header).not.toContainElement(titleComponent); + }); +}); + +describe('edit mode', () => { + test('renders as expected', async () => { + const mockEmbeddable = await createEmbeddable({ viewMode: ViewMode.EDIT }); + render( + + ); + const titleComponent = await screen.findByTestId('dashboardPanelTitle'); + expect(titleComponent).toHaveTextContent(DEFAULT_PANEL_TITLE); + }); + + test('blank titles render [No title] in edit mode', async () => { + const mockEmbeddable = await createEmbeddable({ title: '', viewMode: ViewMode.EDIT }); + render( + + ); + const titleComponent = await screen.findByTestId('embeddablePanelTitleInner'); + expect(titleComponent).toHaveTextContent('[No Title]'); + }); + + test('hiding an individual panel title renders **only** the context menu button in edit mode', async () => { + const mockEmbeddable = await createEmbeddable({ + viewMode: ViewMode.EDIT, + hidePanelTitles: true, + }); + render( + + ); + const titleComponent = await screen.findByTestId('embeddablePanelHeading-'); + const innerTitleComponent = await screen.findByTestId('embeddablePanelTitleInner'); + expect(innerTitleComponent).toBeEmptyDOMElement(); + const menuComponent = await screen.findByTestId('embeddablePanelToggleMenuIcon'); + expect(titleComponent).toContainElement(menuComponent); + }); + + test('clicking title opens customize panel flyout', async () => { + const mockEmbeddable = await createEmbeddable({ viewMode: ViewMode.EDIT }); + render( + + ); + const titleComponent = await screen.findByTestId('embeddablePanelTitleLink'); + + const spy = jest.spyOn(openCustomizePanel, 'openCustomizePanelFlyout'); + userEvent.click(titleComponent); + expect(spy).toHaveBeenCalled(); + }); +}); diff --git a/src/plugins/embeddable/public/embeddable_panel/panel_header/embeddable_panel_header.tsx b/src/plugins/embeddable/public/embeddable_panel/panel_header/embeddable_panel_header.tsx index ee27bbca0605a..3de27d6ad193c 100644 --- a/src/plugins/embeddable/public/embeddable_panel/panel_header/embeddable_panel_header.tsx +++ b/src/plugins/embeddable/public/embeddable_panel/panel_header/embeddable_panel_header.tsx @@ -85,7 +85,7 @@ export const EmbeddablePanelHeader = ({ if (!showPanelBar) { return ( -
    +
    {embeddablePanelContextMenu} {ariaLabelElement}
    @@ -104,7 +104,7 @@ export const EmbeddablePanelHeader = ({ hideTitle={hideTitle} embeddable={embeddable} description={description} - customizePanelAction={universalActions.customizePanel} + editPanelAction={universalActions.editPanel} /> {showBadges && badgeComponents} diff --git a/src/plugins/embeddable/public/embeddable_panel/panel_header/embeddable_panel_title.tsx b/src/plugins/embeddable/public/embeddable_panel/panel_header/embeddable_panel_title.tsx index 734b420d04052..693215a3084ca 100644 --- a/src/plugins/embeddable/public/embeddable_panel/panel_header/embeddable_panel_title.tsx +++ b/src/plugins/embeddable/public/embeddable_panel/panel_header/embeddable_panel_title.tsx @@ -11,21 +11,22 @@ import React, { useMemo } from 'react'; import { EuiIcon, EuiLink, EuiToolTip } from '@elastic/eui'; import { IEmbeddable, ViewMode } from '../../lib'; -import { CustomizePanelAction } from '../panel_actions'; import { getEditTitleAriaLabel, placeholderTitle } from '../embeddable_panel_strings'; +import { EditPanelAction } from '../panel_actions'; +import { openCustomizePanelFlyout } from '../panel_actions/customize_panel_action/open_customize_panel'; export const EmbeddablePanelTitle = ({ viewMode, hideTitle, embeddable, description, - customizePanelAction, + editPanelAction, }: { hideTitle?: boolean; viewMode?: ViewMode; description?: string; embeddable: IEmbeddable; - customizePanelAction?: CustomizePanelAction; + editPanelAction?: EditPanelAction; }) => { const title = embeddable.getTitle(); @@ -39,32 +40,44 @@ export const EmbeddablePanelTitle = ({ if (viewMode === ViewMode.VIEW) { return {title}; } - if (customizePanelAction) { + if (editPanelAction) { return ( customizePanelAction.execute({ embeddable })} + onClick={() => + openCustomizePanelFlyout({ + editPanel: editPanelAction, + embeddable, + focusOnTitle: true, + }) + } > {title || placeholderTitle} ); } return null; - }, [customizePanelAction, embeddable, title, viewMode, hideTitle]); + }, [editPanelAction, embeddable, title, viewMode, hideTitle]); const titleComponentWithDescription = useMemo(() => { - if (!description) return {titleComponent}; + if (!description) + return ( + + {titleComponent} + + ); return ( - + {titleComponent}{' '} { this.appList = appList; @@ -168,13 +167,7 @@ export class EmbeddablePublicPlugin implements Plugin { - it('should not show custom time picker in flyout', async () => { - await dashboardPanelActions.removePanel(); - await PageObjects.dashboard.waitForRenderComplete(); - await dashboardAddPanel.clickMarkdownQuickButton(); - await PageObjects.visEditor.setMarkdownTxt('I am timeless!'); - await PageObjects.visEditor.clickGo(); - await PageObjects.visualize.saveVisualizationAndReturn(); - await PageObjects.dashboard.clickQuickSave(); - await dashboardPanelActions.customizePanel(); - await dashboardCustomizePanel.expectMissingCustomTimeRange(); - }); - }); }); } diff --git a/x-pack/test/functional/apps/dashboard/group2/panel_titles.ts b/x-pack/test/functional/apps/dashboard/group2/panel_titles.ts index 2c0ac33107fea..4d7950042783a 100644 --- a/x-pack/test/functional/apps/dashboard/group2/panel_titles.ts +++ b/x-pack/test/functional/apps/dashboard/group2/panel_titles.ts @@ -78,44 +78,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(panelTitle).to.equal(EMPTY_TITLE); await PageObjects.dashboard.clearUnsavedChanges(); }); - - it('blank titles are hidden in view mode', async () => { - await PageObjects.dashboard.clickCancelOutOfEditMode(); - - const titleVisibility = (await PageObjects.dashboard.getVisibilityOfPanelTitles())[0]; - expect(titleVisibility).to.be(false); - }); - - it('custom titles are visible in view mode', async () => { - await PageObjects.dashboard.switchToEditMode(); - await dashboardPanelActions.customizePanel(); - await dashboardCustomizePanel.setCustomPanelTitle(CUSTOM_TITLE); - await dashboardCustomizePanel.clickSaveButton(); - await PageObjects.dashboard.clickQuickSave(); - await PageObjects.dashboard.clickCancelOutOfEditMode(); - - const titleVisibility = (await PageObjects.dashboard.getVisibilityOfPanelTitles())[0]; - expect(titleVisibility).to.be(true); - }); - - it('hiding an individual panel title hides it in view mode', async () => { - await PageObjects.dashboard.switchToEditMode(); - await dashboardPanelActions.customizePanel(); - await dashboardCustomizePanel.clickToggleHidePanelTitle(); - await dashboardCustomizePanel.clickSaveButton(); - await PageObjects.dashboard.clickQuickSave(); - await PageObjects.dashboard.clickCancelOutOfEditMode(); - - const titleVisibility = (await PageObjects.dashboard.getVisibilityOfPanelTitles())[0]; - expect(titleVisibility).to.be(false); - - // undo the previous hide panel toggle (i.e. make the panel visible) to keep state consistent - await PageObjects.dashboard.switchToEditMode(); - await dashboardPanelActions.customizePanel(); - await dashboardCustomizePanel.clickToggleHidePanelTitle(); - await dashboardCustomizePanel.clickSaveButton(); - await PageObjects.dashboard.clickQuickSave(); - }); }); describe('by reference', () => { From 4af36fece290263c4fd86f0e06d3e12bdb05f81b Mon Sep 17 00:00:00 2001 From: Xavier Mouligneau Date: Thu, 4 Jan 2024 16:41:30 -0500 Subject: [PATCH 127/323] [SECURITY_SOLUTIONS] Only query security alerts with current user (#174216) ## Summary We just got an [SDH#814](https://github.com/elastic/sdh-security-team/issues/814) that tell us that some feature like `KPIs` and `grouping` are not acting as they should be. @PhilippeOberti is doing an investigation to check which feature has been impacted by this bug. This bug has been introduced in this https://github.com/elastic/kibana/pull/112113 since 8.0.0 I think this simple solution should not impact any features. --- .../signals/query_signals_route.test.ts | 27 ++-- .../routes/signals/query_signals_route.ts | 7 +- .../default_license/alerts/index.ts | 1 + .../default_license/alerts/query_alerts.ts | 153 ++++++++++++++++++ 4 files changed, 176 insertions(+), 12 deletions(-) create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/alerts/query_alerts.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.test.ts index 7c88d5c9192ee..8ae230d65506b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.test.ts @@ -17,18 +17,23 @@ import { import { requestContextMock, serverMock, requestMock } from '../__mocks__'; import { querySignalsRoute } from './query_signals_route'; import { ruleRegistryMocks } from '@kbn/rule-registry-plugin/server/mocks'; +import { elasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; describe('query for signal', () => { let server: ReturnType; let { context } = requestContextMock.createTools(); - const ruleDataClient = ruleRegistryMocks.createRuleDataClient('.alerts-security.alerts'); + context.core.elasticsearch.client.asCurrentUser.search.mockResolvedValue( + elasticsearchClientMock.createSuccessTransportRequestPromise(getEmptySignalsResponse()) + ); + const ruleDataClient = ruleRegistryMocks.createRuleDataClient('.alerts-security.alerts-'); beforeEach(() => { server = serverMock.create(); ({ context } = requestContextMock.createTools()); - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - ruleDataClient.getReader().search.mockResolvedValue(getEmptySignalsResponse() as any); + context.core.elasticsearch.client.asCurrentUser.search.mockResolvedValue( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + getEmptySignalsResponse() as any + ); querySignalsRoute(server.router, ruleDataClient); }); @@ -41,7 +46,7 @@ describe('query for signal', () => { ); expect(response.status).toEqual(200); - expect(ruleDataClient.getReader().search).toHaveBeenCalledWith( + expect(context.core.elasticsearch.client.asCurrentUser.search).toHaveBeenCalledWith( expect.objectContaining({ body: typicalSignalsQuery(), }) @@ -55,9 +60,9 @@ describe('query for signal', () => { ); expect(response.status).toEqual(200); - expect(ruleDataClient.getReader).toHaveBeenCalledWith( + expect(context.core.elasticsearch.client.asCurrentUser.search).toHaveBeenCalledWith( expect.objectContaining({ - namespace: 'default', + index: '.alerts-security.alerts-default', }) ); }); @@ -69,7 +74,7 @@ describe('query for signal', () => { ); expect(response.status).toEqual(200); - expect(ruleDataClient.getReader().search).toHaveBeenCalledWith( + expect(context.core.elasticsearch.client.asCurrentUser.search).toHaveBeenCalledWith( expect.objectContaining({ body: typicalSignalsQueryAggs(), ignore_unavailable: true }) ); }); @@ -81,7 +86,7 @@ describe('query for signal', () => { ); expect(response.status).toEqual(200); - expect(ruleDataClient.getReader().search).toHaveBeenCalledWith( + expect(context.core.elasticsearch.client.asCurrentUser.search).toHaveBeenCalledWith( expect.objectContaining({ body: { ...typicalSignalsQuery(), @@ -92,7 +97,9 @@ describe('query for signal', () => { }); test('catches error if query throws error', async () => { - ruleDataClient.getReader().search.mockRejectedValue(new Error('Test error')); + context.core.elasticsearch.client.asCurrentUser.search.mockRejectedValue( + new Error('Test error') + ); const response = await server.inject( getSignalsAggsQueryRequest(), requestContextMock.convertContext(context) diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.ts index 673b6c2d85818..3bd52ebdaacda 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.ts @@ -40,6 +40,8 @@ export const querySignalsRoute = ( }, }, async (context, request, response) => { + const esClient = (await context.core).elasticsearch.client.asCurrentUser; + // eslint-disable-next-line @typescript-eslint/naming-convention const { query, aggs, _source, fields, track_total_hits, size, runtime_mappings, sort } = request.body; @@ -58,10 +60,11 @@ export const querySignalsRoute = ( body: '"value" must have at least 1 children', }); } - try { const spaceId = (await context.securitySolution).getSpaceId(); - const result = await ruleDataClient?.getReader({ namespace: spaceId }).search({ + const indexPattern = ruleDataClient?.indexNameWithNamespace(spaceId); + const result = await esClient.search({ + index: indexPattern, body: { query, // Note: I use a spread operator to please TypeScript with aggs: { ...aggs } diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/alerts/index.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/alerts/index.ts index 85e2e602a8929..81923173bf50c 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/alerts/index.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/alerts/index.ts @@ -15,5 +15,6 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./open_close_alerts')); loadTestFile(require.resolve('./set_alert_tags')); loadTestFile(require.resolve('./assignments')); + loadTestFile(require.resolve('./query_alerts')); }); } diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/alerts/query_alerts.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/alerts/query_alerts.ts new file mode 100644 index 0000000000000..6e8e312f9075a --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/alerts/query_alerts.ts @@ -0,0 +1,153 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; + +import { DETECTION_ENGINE_QUERY_SIGNALS_URL } from '@kbn/security-solution-plugin/common/constants'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +const roleToAccessSecuritySolution = { + name: 'sec_all_spaces', + privileges: { + elasticsearch: { + indices: [ + { + names: ['.alerts-security.alerts-default'], + privileges: ['all'], + }, + ], + }, + kibana: [ + { + feature: { + siem: ['all'], + }, + spaces: ['*'], + }, + ], + }, +}; +const roleToAccessSecuritySolutionWithDls = { + name: 'sec_all_spaces_with_dls', + privileges: { + elasticsearch: { + indices: [ + { + names: ['.alerts-security.alerts-default'], + privileges: ['read'], + query: + '{"wildcard" : { "kibana.alert.ancestors.index" : { "value": ".ds-kibana_does_not_exist" } } }', + }, + ], + }, + kibana: [ + { + feature: { + siem: ['all'], + }, + spaces: ['*'], + }, + ], + }, +}; +const userAllSec = { + username: 'user_all_sec', + password: 'user_all_sec', + full_name: 'userAllSec', + email: 'userAllSec@elastic.co', + roles: [roleToAccessSecuritySolution.name], +}; +const userAllSecWithDls = { + username: 'user_all_sec_with_dls', + password: 'user_all_sec_with_dls', + full_name: 'userAllSecWithDls', + email: 'userAllSecWithDls@elastic.co', + roles: [roleToAccessSecuritySolutionWithDls.name], +}; + +export default ({ getService }: FtrProviderContext) => { + const supertestWithoutAuth = getService('supertestWithoutAuth'); + const esArchiver = getService('esArchiver'); + const security = getService('security'); + + describe('find alert with/without doc level security', () => { + before(async () => { + await security.role.create( + roleToAccessSecuritySolution.name, + roleToAccessSecuritySolution.privileges + ); + await security.role.create( + roleToAccessSecuritySolutionWithDls.name, + roleToAccessSecuritySolutionWithDls.privileges + ); + await security.user.create(userAllSec.username, { + password: userAllSec.password, + roles: userAllSec.roles, + full_name: userAllSec.full_name, + email: userAllSec.email, + }); + await security.user.create(userAllSecWithDls.username, { + password: userAllSecWithDls.password, + roles: userAllSecWithDls.roles, + full_name: userAllSecWithDls.full_name, + email: userAllSecWithDls.email, + }); + + await esArchiver.load( + 'x-pack/test/functional/es_archives/security_solution/alerts/8.8.0_multiple_docs', + { + useCreate: true, + docsOnly: true, + } + ); + }); + + after(async () => { + await security.user.delete(userAllSec.username); + await security.user.delete(userAllSecWithDls.username); + await security.role.delete(roleToAccessSecuritySolution.name); + await security.role.delete(roleToAccessSecuritySolutionWithDls.name); + await esArchiver.unload( + 'x-pack/test/functional/es_archives/security_solution/alerts/8.8.0_multiple_docs' + ); + }); + + it('should return alerts with user who has access to security solution privileges', async () => { + const query = { + query: { + bool: { + should: [{ match_all: {} }], + }, + }, + }; + const { body } = await supertestWithoutAuth + .post(DETECTION_ENGINE_QUERY_SIGNALS_URL) + .auth(userAllSec.username, userAllSec.password) + .set('kbn-xsrf', 'true') + .send(query) + .expect(200); + expect(body.hits.total.value).to.eql(3); + }); + + it('should filter out alerts with user who has access to security solution privileges and document level security', async () => { + const query = { + query: { + bool: { + should: [{ match_all: {} }], + }, + }, + }; + const { body } = await supertestWithoutAuth + .post(DETECTION_ENGINE_QUERY_SIGNALS_URL) + .auth(userAllSecWithDls.username, userAllSecWithDls.password) + .set('kbn-xsrf', 'true') + .send(query) + .expect(200); + expect(body.hits.total.value).to.eql(0); + }); + }); +}; From 1021f65f1cd5ac067953bf24c90f096f6fc18c73 Mon Sep 17 00:00:00 2001 From: Ryland Herrick Date: Thu, 4 Jan 2024 15:42:24 -0600 Subject: [PATCH 128/323] [SecuritySolution][EntityAnalytics] Account for Asset Criticality in Risk Scoring (#172417) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary This PR adds asset criticality to the risk scoring calculation. While previous work was done to add the resources and client to create/read asset criticality documents, this PR builds on those to retrieve relevant criticality records and apply them to the intermediate scores calculated via elasticsearch. __Note that the code in this PR that performs the actual calculation/writing of new risk fields is behind a feature flag.__ ### Performance Since this PR adds new logic to an already tight/important code path, we need to ensure that we haven't changed behavior nor performance. I've captured that as a separate task to be done next: https://github.com/elastic/security-team/issues/8223. ### Compatibility Behaviorally, without the feature flag enabled, scoring will skip the criticality workflow and not write new fields (`criticality_level`, `criticality_modifier`). ~~I still have an outstanding task to validate whether this will be an issue until criticality is enabled, and do some smarter short-circuiting.~~ This task uncovered our need for the above feature flag. The one behavioral change introduced in this PR _not_ behind a feature flag is the normalization of our risk category scores. ### Summary of Changes - Adds an `AssetCriticalityService` which provides the API used by risk scoring to retrieve criticality records - Adds new `search` method to the `AssetCriticalityDataClient`: used to generally retrieve multiple criticality records at once - Adds functions to calculate a (currently hard-coded) modifier from a criticality level, and apply it to the risk score via bayesian update - Moves risk score level calculation into javascript (necessary because we need the level to account for criticality) - Moves some risk level code out of threat hunting code and into the `common/entity_analytics` folder - Tests and comments throughout ### TODO - [x] Add new criticality fields to risk score, address upgrade workflow - [x] Validate that code works without criticality being enabled. - [x] Bump task version to invalidate old tasks from being picked up in customer env Outcome: All three of the above are addressed with: 1. Moving the code responsible for adding new fields behind a feature flag ([71f1158](https://github.com/elastic/kibana/pull/172417/commits/71f115800b9ecca21d1c2e0e9014163f2858ece3)) 2. Addressing the upgrade path in a subsequent issue (https://github.com/elastic/security-team/issues/8012) ## How to Review 1. Enable our asset criticality feature flag: > ``` > xpack.securitySolution.enableExperimental: > - entityAnalyticsAssetCriticalityEnabled > ``` 2. Create asset criticality records (see API documentation, or follow [this test](https://github.com/elastic/kibana/pull/172417/files#diff-43f9f394fb7c8eb0f0ace3f5e75482c56a7233ae7d11d5fdb98a89e6404412c3R276) as a setup guide 3. Enable risk engine 4. Observe that new fields are written to risk scores' `_source`, but not mapped/searchable 5. (optional) Observe that the transform subsequently fails 😢 ### Checklist - [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed --------- Co-authored-by: Jared Burgett and Ryland Herrick --- .../common/api/entity_analytics/index.ts | 9 + .../entity_analytics/risk_engine/common.yml | 24 +- .../entity_analytics/risk_engine/index.ts | 1 + .../risk_engine/risk_levels.ts | 30 +++ .../entity_analytics/risk_engine/types.ts | 17 ++ .../security_solution/risk_score/all/index.ts | 15 +- .../public/entity_analytics/common/utils.ts | 9 +- .../asset_criticality_data_client.mock.ts | 1 + .../asset_criticality_data_client.test.ts | 64 ++++++ .../asset_criticality_data_client.ts | 33 ++- .../asset_criticality_service.mock.ts | 17 ++ .../asset_criticality_service.test.ts | 206 ++++++++++++++++++ .../asset_criticality_service.ts | 101 +++++++++ .../{configurations.ts => constants.ts} | 11 + .../asset_criticality/helpers.test.ts | 102 +++++++++ .../asset_criticality/helpers.ts | 88 ++++++++ .../asset_criticality/index.ts | 9 + .../calculate_and_persist_risk_scores.ts | 2 + .../risk_score/calculate_risk_scores.mock.ts | 5 +- .../risk_score/calculate_risk_scores.test.ts | 42 +++- .../risk_score/calculate_risk_scores.ts | 187 +++++++++++----- .../entity_analytics/risk_score/constants.ts | 27 +++ .../risk_engine_data_writer.test.ts | 28 +++ .../risk_score/risk_score_service.mock.ts | 4 + .../risk_score/risk_score_service.ts | 15 +- .../risk_score/risk_weights.ts | 2 +- .../risk_score/routes/calculation.test.ts | 3 +- .../risk_score/routes/calculation.ts | 14 +- .../risk_score/routes/preview.test.ts | 3 +- .../risk_score/routes/preview.ts | 14 +- .../tasks/risk_scoring_task.test.ts | 3 + .../risk_score/tasks/risk_scoring_task.ts | 26 ++- .../server/lib/entity_analytics/types.ts | 1 - .../security_solution/server/plugin.ts | 1 + .../server/request_context_factory.ts | 2 +- .../security_solution/server/routes/index.ts | 4 +- .../plugins/security_solution/server/types.ts | 2 +- .../risk_engine/risk_score_calculation.ts | 79 ++++++- .../risk_engine/risk_score_preview.ts | 114 +++++++--- .../risk_scoring_task/task_execution.ts | 67 +++++- .../utils/asset_criticality.ts | 51 ++++- .../entity_analytics/utils/index.ts | 1 + .../entity_analytics/utils/risk_engine.ts | 14 +- 43 files changed, 1303 insertions(+), 145 deletions(-) create mode 100644 x-pack/plugins/security_solution/common/api/entity_analytics/index.ts create mode 100644 x-pack/plugins/security_solution/common/entity_analytics/risk_engine/risk_levels.ts create mode 100644 x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.mock.ts create mode 100644 x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.test.ts create mode 100644 x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.ts rename x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/{configurations.ts => constants.ts} (67%) create mode 100644 x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.test.ts create mode 100644 x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.ts create mode 100644 x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/index.ts create mode 100644 x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/constants.ts diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/index.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/index.ts new file mode 100644 index 0000000000000..2dbb228a91f83 --- /dev/null +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './asset_criticality'; +export * from './risk_score'; diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/common.yml b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/common.yml index ea4bd4bd86321..4e73c51b9087f 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/common.yml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/common.yml @@ -1,4 +1,10 @@ openapi: 3.0.0 +info: + title: Risk Engine Common Schema + description: Common schema for Risk Engine APIs + version: 1.0.0 + +paths: { } components: schemas: @@ -103,11 +109,27 @@ components: category_1_score: type: number format: double - description: The contribution of Category 1 to the overall risk score (`calculated_score`). Category 1 contains Detection Engine Alerts. + description: The contribution of Category 1 to the overall risk score (`calculated_score_norm`). Category 1 contains Detection Engine Alerts. category_1_count: type: number format: integer description: The number of risk input documents that contributed to the Category 1 score (`category_1_score`). + category_2_score: + type: number + format: double + description: The contribution of Category 2 to the overall risk score (`calculated_score_norm`). Category 2 contains context from external sources. + category_2_count: + type: number + format: integer + description: The number of risk input documents that contributed to the Category 2 score (`category_2_score`). + criticality_level: + type: string + example: very_important + description: The designated criticality level of the entity. Possible values are `not_important`, `normal`, `important`, and `very_important`. + criticality_modifier: + type: number + format: double + description: The numeric modifier corresponding to the criticality level of the entity, which is used as an input to the risk score calculation. inputs: type: array description: A list of the highest-risk documents contributing to this risk score. Useful for investigative purposes. diff --git a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/index.ts b/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/index.ts index 3da0d8be4f0be..bb75e496f386b 100644 --- a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/index.ts +++ b/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/index.ts @@ -9,6 +9,7 @@ export * from './after_keys'; export * from './risk_weights'; export * from './identifier_types'; export * from './range'; +export * from './risk_levels'; export * from './types'; export * from './indices'; export * from './constants'; diff --git a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/risk_levels.ts b/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/risk_levels.ts new file mode 100644 index 0000000000000..d2e777ad710a4 --- /dev/null +++ b/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/risk_levels.ts @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { RiskLevels } from './types'; + +export const RISK_LEVEL_RANGES = { + [RiskLevels.unknown]: { start: 0, stop: 20 }, + [RiskLevels.low]: { start: 20, stop: 40 }, + [RiskLevels.moderate]: { start: 40, stop: 70 }, + [RiskLevels.high]: { start: 70, stop: 90 }, + [RiskLevels.critical]: { start: 90, stop: 100 }, +}; + +export const getRiskLevel = (riskScore: number): RiskLevels => { + if (riskScore >= RISK_LEVEL_RANGES[RiskLevels.critical].start) { + return RiskLevels.critical; + } else if (riskScore >= RISK_LEVEL_RANGES[RiskLevels.high].start) { + return RiskLevels.high; + } else if (riskScore >= RISK_LEVEL_RANGES[RiskLevels.moderate].start) { + return RiskLevels.moderate; + } else if (riskScore >= RISK_LEVEL_RANGES[RiskLevels.low].start) { + return RiskLevels.low; + } else { + return RiskLevels.unknown; + } +}; diff --git a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/types.ts b/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/types.ts index deed9767ed2cd..f803ec0ed6711 100644 --- a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/types.ts +++ b/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/types.ts @@ -38,24 +38,41 @@ export interface SimpleRiskInput { export interface EcsRiskScore { '@timestamp': string; host?: { + name: string; risk: Omit; }; user?: { + name: string; risk: Omit; }; } export type RiskInputs = SimpleRiskInput[]; +/** + * The API response object representing a risk score + */ export interface RiskScore { '@timestamp': string; id_field: string; id_value: string; + criticality_level?: string | undefined; + criticality_modifier?: number | undefined; calculated_level: string; calculated_score: number; calculated_score_norm: number; category_1_score: number; category_1_count: number; + category_2_score?: number; + category_2_count?: number; notes: string[]; inputs: RiskInputs; } + +export enum RiskLevels { + unknown = 'Unknown', + low = 'Low', + moderate = 'Moderate', + high = 'High', + critical = 'Critical', +} diff --git a/x-pack/plugins/security_solution/common/search_strategy/security_solution/risk_score/all/index.ts b/x-pack/plugins/security_solution/common/search_strategy/security_solution/risk_score/all/index.ts index f33eb664628a1..7810c29fbfbfe 100644 --- a/x-pack/plugins/security_solution/common/search_strategy/security_solution/risk_score/all/index.ts +++ b/x-pack/plugins/security_solution/common/search_strategy/security_solution/risk_score/all/index.ts @@ -8,7 +8,10 @@ import type { IEsSearchResponse } from '@kbn/data-plugin/common'; import type { Inspect, Maybe, SortField } from '../../../common'; -import type { RiskInputs } from '../../../../entity_analytics/risk_engine'; +import { + type RiskInputs, + RiskLevels as RiskSeverity, +} from '../../../../entity_analytics/risk_engine'; export interface HostsRiskScoreStrategyResponse extends IEsSearchResponse { inspect?: Maybe; @@ -30,6 +33,8 @@ export interface RiskStats { inputs?: RiskInputs; } +export { RiskSeverity }; + export interface HostRiskScore { '@timestamp': string; host: { @@ -85,14 +90,6 @@ export interface RiskScoreItem { [RiskScoreFields.alertsCount]: Maybe; } -export enum RiskSeverity { - unknown = 'Unknown', - low = 'Low', - moderate = 'Moderate', - high = 'High', - critical = 'Critical', -} - export const isUserRiskScore = (risk: HostRiskScore | UserRiskScore): risk is UserRiskScore => 'user' in risk; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts b/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts index f6009c85dbd43..b8735c2e7b6fb 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts +++ b/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts @@ -8,6 +8,7 @@ import { euiLightVars } from '@kbn/ui-theme'; import { RiskSeverity } from '../../../common/search_strategy'; import { SEVERITY_COLOR } from '../../overview/components/detection_response/utils'; +export { RISK_LEVEL_RANGES as RISK_SCORE_RANGES } from '../../../common/entity_analytics/risk_engine'; export const SEVERITY_UI_SORT_ORDER = [ RiskSeverity.unknown, @@ -25,14 +26,6 @@ export const RISK_SEVERITY_COLOUR: { [k in RiskSeverity]: string } = { [RiskSeverity.critical]: SEVERITY_COLOR.critical, }; -export const RISK_SCORE_RANGES = { - [RiskSeverity.unknown]: { start: 0, stop: 20 }, - [RiskSeverity.low]: { start: 20, stop: 40 }, - [RiskSeverity.moderate]: { start: 40, stop: 70 }, - [RiskSeverity.high]: { start: 70, stop: 90 }, - [RiskSeverity.critical]: { start: 90, stop: 100 }, -}; - type SnakeToCamelCaseString = S extends `${infer T}_${infer U}` ? `${T}${Capitalize>}` : S; diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.mock.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.mock.ts index eaf3e9a3ec22e..6b98e880ea6ab 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.mock.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.mock.ts @@ -12,6 +12,7 @@ const createAssetCriticalityDataClientMock = () => doesIndexExist: jest.fn(), getStatus: jest.fn(), init: jest.fn(), + search: jest.fn(), } as unknown as jest.Mocked); export const assetCriticalityDataClientMock = { create: createAssetCriticalityDataClientMock }; diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.test.ts index c06586516d682..83d197123303a 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.test.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.test.ts @@ -57,4 +57,68 @@ describe('AssetCriticalityDataClient', () => { }); }); }); + + describe('#search()', () => { + let esClientMock: ReturnType< + typeof elasticsearchServiceMock.createScopedClusterClient + >['asInternalUser']; + let loggerMock: ReturnType; + let subject: AssetCriticalityDataClient; + + beforeEach(() => { + esClientMock = elasticsearchServiceMock.createScopedClusterClient().asInternalUser; + loggerMock = loggingSystemMock.createLogger(); + subject = new AssetCriticalityDataClient({ + esClient: esClientMock, + logger: loggerMock, + namespace: 'default', + }); + }); + + it('searches in the asset criticality index', async () => { + subject.search({ query: { match_all: {} } }); + + expect(esClientMock.search).toHaveBeenCalledWith( + expect.objectContaining({ index: '.asset-criticality.asset-criticality-default' }) + ); + }); + + it('requires a query parameter', async () => { + subject.search({ query: { match_all: {} } }); + + expect(esClientMock.search).toHaveBeenCalledWith( + expect.objectContaining({ body: { query: { match_all: {} } } }) + ); + }); + + it('accepts a size parameter', async () => { + subject.search({ query: { match_all: {} }, size: 100 }); + + expect(esClientMock.search).toHaveBeenCalledWith(expect.objectContaining({ size: 100 })); + }); + + it('defaults to the default query size', async () => { + subject.search({ query: { match_all: {} } }); + const defaultSize = 1_000; + + expect(esClientMock.search).toHaveBeenCalledWith( + expect.objectContaining({ size: defaultSize }) + ); + }); + + it('caps the size to the maximum query size', async () => { + subject.search({ query: { match_all: {} }, size: 999999 }); + const maxSize = 100_000; + + expect(esClientMock.search).toHaveBeenCalledWith(expect.objectContaining({ size: maxSize })); + }); + + it('ignores an index_not_found_exception if the criticality index does not exist', async () => { + subject.search({ query: { match_all: {} } }); + + expect(esClientMock.search).toHaveBeenCalledWith( + expect.objectContaining({ ignore_unavailable: true }) + ); + }); + }); }); diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.ts index afddfd6893240..3ac20360bcae0 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.ts @@ -4,12 +4,14 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import type { ESFilter } from '@kbn/es-types'; +import type { SearchResponse } from '@elastic/elasticsearch/lib/api/types'; import type { Logger, ElasticsearchClient } from '@kbn/core/server'; import { mappingFromFieldMap } from '@kbn/alerting-plugin/common'; -import type { AssetCriticalityRecord } from '../../../../common/api/entity_analytics/asset_criticality'; +import type { AssetCriticalityRecord } from '../../../../common/api/entity_analytics'; import { createOrUpdateIndex } from '../utils/create_or_update_index'; import { getAssetCriticalityIndex } from '../../../../common/entity_analytics/asset_criticality'; -import { assetCriticalityFieldMap } from './configurations'; +import { assetCriticalityFieldMap } from './constants'; interface AssetCriticalityClientOpts { logger: Logger; @@ -25,7 +27,11 @@ interface AssetCriticalityUpsert { type AssetCriticalityIdParts = Pick; +const MAX_CRITICALITY_RESPONSE_SIZE = 100_000; +const DEFAULT_CRITICALITY_RESPONSE_SIZE = 1_000; + const createId = ({ idField, idValue }: AssetCriticalityIdParts) => `${idField}:${idValue}`; + export class AssetCriticalityDataClient { constructor(private readonly options: AssetCriticalityClientOpts) {} /** @@ -43,6 +49,29 @@ export class AssetCriticalityDataClient { }); } + /** + * + * A general method for searching asset criticality records. + * @param query an ESL query to filter criticality results + * @param size the maximum number of records to return. Cannot exceed {@link MAX_CRITICALITY_RESPONSE_SIZE}. If unspecified, will default to {@link DEFAULT_CRITICALITY_RESPONSE_SIZE}. + * @returns criticality records matching the query + */ + public async search({ + query, + size, + }: { + query: ESFilter; + size?: number; + }): Promise> { + const response = await this.options.esClient.search({ + index: this.getIndex(), + ignore_unavailable: true, + body: { query }, + size: Math.min(size ?? DEFAULT_CRITICALITY_RESPONSE_SIZE, MAX_CRITICALITY_RESPONSE_SIZE), + }); + return response; + } + private getIndex() { return getAssetCriticalityIndex(this.options.namespace); } diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.mock.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.mock.ts new file mode 100644 index 0000000000000..9de2d8c6bae2c --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.mock.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { AssetCriticalityService } from './asset_criticality_service'; + +const buildMockAssetCriticalityService = (): jest.Mocked => ({ + getCriticalitiesByIdentifiers: jest.fn().mockResolvedValue([]), + isEnabled: jest.fn().mockReturnValue(true), +}); + +export const assetCriticalityServiceMock = { + create: buildMockAssetCriticalityService, +}; diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.test.ts new file mode 100644 index 0000000000000..7075aacfcb31d --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.test.ts @@ -0,0 +1,206 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 { SearchHit } from '@elastic/elasticsearch/lib/api/types'; + +import type { ExperimentalFeatures } from '../../../../common'; +import type { AssetCriticalityRecord } from '../../../../common/api/entity_analytics'; +import type { AssetCriticalityDataClient } from './asset_criticality_data_client'; +import { assetCriticalityDataClientMock } from './asset_criticality_data_client.mock'; +import { + type AssetCriticalityService, + assetCriticalityServiceFactory, +} from './asset_criticality_service'; + +const buildMockCriticalityHit = ( + overrides: Partial = {} +): SearchHit => ({ + _id: 'host.name:not-found', + _index: '.asset-criticality-default', + _source: { + '@timestamp': '2021-09-16T15:00:00.000Z', + id_field: 'host.name', + id_value: 'hostname', + criticality_level: 'normal', + ...overrides, + }, +}); + +describe('AssetCriticalityService', () => { + describe('#getCriticalitiesByIdentifiers()', () => { + let baseIdentifier: { id_field: string; id_value: string }; + let mockAssetCriticalityDataClient: AssetCriticalityDataClient; + let service: AssetCriticalityService; + + beforeEach(() => { + mockAssetCriticalityDataClient = assetCriticalityDataClientMock.create(); + baseIdentifier = { id_field: 'host.name', id_value: 'not-found' }; + + (mockAssetCriticalityDataClient.search as jest.Mock).mockResolvedValueOnce({ + hits: { hits: [] }, + }); + service = assetCriticalityServiceFactory({ + assetCriticalityDataClient: mockAssetCriticalityDataClient, + experimentalFeatures: {} as ExperimentalFeatures, + }); + }); + + describe('specifying a single identifier', () => { + it('returns an empty response if identifier is not found', async () => { + const result = await service.getCriticalitiesByIdentifiers([baseIdentifier]); + + expect(result).toEqual([]); + }); + + it('returns a single criticality if identifier is found', async () => { + const hits = [buildMockCriticalityHit()]; + (mockAssetCriticalityDataClient.search as jest.Mock).mockReset().mockResolvedValueOnce({ + hits: { hits }, + }); + + const result = await service.getCriticalitiesByIdentifiers([baseIdentifier]); + + expect(result).toEqual(hits.map((hit) => hit._source)); + }); + }); + + describe('specifying multiple identifiers', () => { + it('returns an empty response if identifier is not found', async () => { + const result = await service.getCriticalitiesByIdentifiers([baseIdentifier]); + + expect(result).toEqual([]); + }); + + it('generates a single terms clause for multiple identifier values on the same field', async () => { + const multipleIdentifiers = [ + { id_field: 'user.name', id_value: 'one' }, + { id_field: 'user.name', id_value: 'other' }, + ]; + + await service.getCriticalitiesByIdentifiers(multipleIdentifiers); + + expect(mockAssetCriticalityDataClient.search).toHaveBeenCalledTimes(1); + const query = (mockAssetCriticalityDataClient.search as jest.Mock).mock.calls[0][0].query; + expect(query).toMatchObject({ + bool: { + filter: { + bool: { + should: [ + { + bool: { + must: [ + { term: { id_field: 'user.name' } }, + { terms: { id_value: ['one', 'other'] } }, + ], + }, + }, + ], + }, + }, + }, + }); + }); + + it('deduplicates identifiers', async () => { + const duplicateIdentifiers = [ + { id_field: 'user.name', id_value: 'same' }, + { id_field: 'user.name', id_value: 'same' }, + ]; + await service.getCriticalitiesByIdentifiers(duplicateIdentifiers); + + expect(mockAssetCriticalityDataClient.search).toHaveBeenCalledTimes(1); + const query = (mockAssetCriticalityDataClient.search as jest.Mock).mock.calls[0][0].query; + expect(query).toMatchObject({ + bool: { + filter: { + bool: { + should: [ + { + bool: { + must: [ + { term: { id_field: 'user.name' } }, + { terms: { id_value: ['same'] } }, + ], + }, + }, + ], + }, + }, + }, + }); + }); + + it('returns multiple criticalities if identifiers are found', async () => { + const hits = [ + buildMockCriticalityHit(), + buildMockCriticalityHit({ + id_field: 'user.name', + id_value: 'username', + criticality_level: 'very_important', + }), + ]; + + (mockAssetCriticalityDataClient.search as jest.Mock).mockReset().mockResolvedValueOnce({ + hits: { + hits, + }, + }); + const result = await service.getCriticalitiesByIdentifiers([baseIdentifier]); + expect(result).toEqual(hits.map((hit) => hit._source)); + }); + }); + + describe('arguments', () => { + it('accepts a single identifier as an array', async () => { + const identifier = { id_field: 'host.name', id_value: 'foo' }; + + expect(() => service.getCriticalitiesByIdentifiers([identifier])).not.toThrow(); + }); + + it('accepts multiple identifiers', async () => { + const identifiers = [ + { id_field: 'host.name', id_value: 'foo' }, + { id_field: 'user.name', id_value: 'bar' }, + ]; + expect(() => service.getCriticalitiesByIdentifiers(identifiers)).not.toThrow(); + }); + + it('throws an error if an empty array is provided', async () => { + await expect(() => service.getCriticalitiesByIdentifiers([])).rejects.toThrowError( + 'At least one identifier must be provided' + ); + }); + + it('throws an error if no identifier values are provided', async () => { + await expect(() => + service.getCriticalitiesByIdentifiers([{ id_field: 'host.name', id_value: '' }]) + ).rejects.toThrowError('At least one identifier must contain a valid field and value'); + }); + + it('throws an error if no valid identifier field/value pair is provided', async () => { + const identifiers = [ + { id_field: '', id_value: 'foo' }, + { id_field: 'user.name', id_value: '' }, + ]; + await expect(() => service.getCriticalitiesByIdentifiers(identifiers)).rejects.toThrowError( + 'At least one identifier must contain a valid field and value' + ); + }); + }); + + describe('error conditions', () => { + it('throws an error if the client does', async () => { + (mockAssetCriticalityDataClient.search as jest.Mock) + .mockReset() + .mockRejectedValueOnce(new Error('foo')); + await expect(() => + service.getCriticalitiesByIdentifiers([baseIdentifier]) + ).rejects.toThrowError('foo'); + }); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.ts new file mode 100644 index 0000000000000..f5320ea396008 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_service.ts @@ -0,0 +1,101 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isEmpty } from 'lodash/fp'; +import type { ExperimentalFeatures } from '../../../../common'; +import type { AssetCriticalityRecord } from '../../../../common/api/entity_analytics'; +import type { AssetCriticalityDataClient } from './asset_criticality_data_client'; + +interface CriticalityIdentifier { + id_field: string; + id_value: string; +} + +interface IdentifierValuesByField { + [idField: string]: string[]; +} + +export interface AssetCriticalityService { + getCriticalitiesByIdentifiers: ( + identifiers: CriticalityIdentifier[] + ) => Promise; + isEnabled: () => boolean; +} + +const isCriticalityIdentifierValid = (identifier: CriticalityIdentifier): boolean => + !isEmpty(identifier.id_field) && !isEmpty(identifier.id_value); + +const groupIdentifierValuesByField = ( + identifiers: CriticalityIdentifier[] +): IdentifierValuesByField => + identifiers.reduce((acc, id) => { + acc[id.id_field] ??= []; + if (!acc[id.id_field].includes(id.id_value)) { + acc[id.id_field].push(id.id_value); + } + return acc; + }, {} as IdentifierValuesByField); + +const buildCriticalitiesQuery = (identifierValuesByField: IdentifierValuesByField) => ({ + bool: { + filter: { + bool: { + should: Object.keys(identifierValuesByField).map((idField) => ({ + bool: { + must: [ + { term: { id_field: idField } }, + { terms: { id_value: identifierValuesByField[idField] } }, + ], + }, + })), + }, + }, + }, +}); + +const getCriticalitiesByIdentifiers = async ({ + assetCriticalityDataClient, + identifiers, +}: { + assetCriticalityDataClient: AssetCriticalityDataClient; + identifiers: CriticalityIdentifier[]; +}): Promise => { + if (identifiers.length === 0) { + throw new Error('At least one identifier must be provided'); + } + const validIdentifiers = identifiers.filter((id) => isCriticalityIdentifierValid(id)); + + if (validIdentifiers.length === 0) { + throw new Error('At least one identifier must contain a valid field and value'); + } + + const identifierCount = validIdentifiers.length; + const identifierValuesByField = groupIdentifierValuesByField(validIdentifiers); + const criticalitiesQuery = buildCriticalitiesQuery(identifierValuesByField); + + const criticalitySearchResponse = await assetCriticalityDataClient.search({ + query: criticalitiesQuery, + size: identifierCount, + }); + + // @ts-expect-error @elastic/elasticsearch _source is optional + return criticalitySearchResponse.hits.hits.map((hit) => hit._source); +}; + +interface AssetCriticalityServiceFactoryOptions { + assetCriticalityDataClient: AssetCriticalityDataClient; + experimentalFeatures: ExperimentalFeatures; +} + +export const assetCriticalityServiceFactory = ({ + assetCriticalityDataClient, + experimentalFeatures, +}: AssetCriticalityServiceFactoryOptions): AssetCriticalityService => ({ + getCriticalitiesByIdentifiers: (identifiers: CriticalityIdentifier[]) => + getCriticalitiesByIdentifiers({ assetCriticalityDataClient, identifiers }), + isEnabled: () => experimentalFeatures.entityAnalyticsAssetCriticalityEnabled, +}); diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/configurations.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/constants.ts similarity index 67% rename from x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/configurations.ts rename to x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/constants.ts index c1b309c3a2f44..536230b865a8a 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/configurations.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/constants.ts @@ -5,6 +5,7 @@ * 2.0. */ import type { FieldMap } from '@kbn/alerts-as-data-utils'; +import type { AssetCriticalityRecord } from '../../../../common/api/entity_analytics'; export const assetCriticalityFieldMap: FieldMap = { '@timestamp': { @@ -33,3 +34,13 @@ export const assetCriticalityFieldMap: FieldMap = { required: false, }, } as const; + +/** + * CriticalityModifiers are used to adjust the risk score based on the criticality of the asset. + */ +export const CriticalityModifiers: Record = { + very_important: 2, + important: 1.5, + normal: 1, + not_important: 0.5, +}; diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.test.ts new file mode 100644 index 0000000000000..9ec395223c937 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.test.ts @@ -0,0 +1,102 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { applyCriticalityToScore, normalize } from './helpers'; + +describe('applyCriticalityToScore', () => { + describe('integer scores', () => { + it('returns the original score if the modifier is undefined', () => { + const result = applyCriticalityToScore({ modifier: undefined, score: 90 }); + expect(result).toEqual(90); + }); + + it('returns the original score if the modifier is 1', () => { + const result = applyCriticalityToScore({ modifier: 1, score: 90 }); + expect(result).toEqual(90); + }); + + it('returns an increased score if the modifier is greater than 1', () => { + const result = applyCriticalityToScore({ modifier: 1.5, score: 90 }); + expect(result).toEqual(93.10344827586206); + }); + + it('returns a decreased score if the modifier is less than 1', () => { + const result = applyCriticalityToScore({ modifier: 0.5, score: 90 }); + expect(result).toEqual(81.81818181818181); + }); + + it('does not exceed a score of 100 with a previous score of 99 and a large modifier', () => { + const result = applyCriticalityToScore({ modifier: 200, score: 99 }); + expect(result).toEqual(99.99494975001262); + }); + }); + + describe('non-integer scores', () => { + it('returns the original score if the modifier is undefined', () => { + const result = applyCriticalityToScore({ modifier: undefined, score: 90.5 }); + expect(result).toEqual(90.5); + }); + + it('returns the original score if the modifier is 1', () => { + const result = applyCriticalityToScore({ modifier: 1, score: 91.84 }); + expect(result).toEqual(91.84); + }); + it('returns an increased score if the modifier is greater than 1', () => { + const result = applyCriticalityToScore({ modifier: 1.5, score: 75.98 }); + expect(result).toEqual(82.59294151750127); + }); + + it('returns a decreased score if the modifier is less than 1', () => { + const result = applyCriticalityToScore({ modifier: 0.5, score: 44.12 }); + expect(result).toEqual(28.303823453938925); + }); + + it('does not exceed a score of 100 with a high previous score and a large modifier', () => { + const result = applyCriticalityToScore({ modifier: 200, score: 99.88 }); + expect(result).toEqual(99.9993992827436); + }); + }); +}); + +describe('normalize', () => { + it('returns 0 if the number is equal to the min', () => { + const result = normalize({ number: 0, min: 0, max: 100 }); + expect(result).toEqual(0); + }); + + it('returns 100 if the number is equal to the max', () => { + const result = normalize({ number: 100, min: 0, max: 100 }); + expect(result).toEqual(100); + }); + + it('returns 50 if the number is halfway between the min and max', () => { + const result = normalize({ number: 50, min: 0, max: 100 }); + expect(result).toEqual(50); + }); + + it('defaults to a min of 0', () => { + const result = normalize({ number: 50, max: 100 }); + expect(result).toEqual(50); + }); + + describe('when the domain is diffrent than the range', () => { + it('returns 0 if the number is equal to the min', () => { + const result = normalize({ number: 20, min: 20, max: 200 }); + expect(result).toEqual(0); + }); + + it('returns 100 if the number is equal to the max', () => { + const result = normalize({ number: 40, min: 30, max: 40 }); + expect(result).toEqual(100); + }); + + it('returns 50 if the number is halfway between the min and max', () => { + const result = normalize({ number: 20, min: 0, max: 40 }); + expect(result).toEqual(50); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.ts new file mode 100644 index 0000000000000..3c12fbc89b827 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.ts @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { AssetCriticalityRecord } from '../../../../common/api/entity_analytics'; +import { RISK_SCORING_NORMALIZATION_MAX } from '../risk_score/constants'; +import { CriticalityModifiers } from './constants'; + +/** + * Retrieves the criticality modifier for a given criticality level. + * + * @param criticalityLevel The criticality level for which to get the modifier. + * @returns The associated criticality modifier for the given criticality level. + */ +export const getCriticalityModifier = ( + criticalityLevel?: AssetCriticalityRecord['criticality_level'] +): number | undefined => { + if (criticalityLevel == null) { + return; + } + + return CriticalityModifiers[criticalityLevel]; +}; + +/** + * Applies asset criticality to a normalized risk score using bayesian inference. + * @param modifier - The criticality modifier to apply to the score. + * @param score - The normalized risk score to which the criticality modifier is applied + * + * @returns The risk score with the criticality modifier applied. + */ +export const applyCriticalityToScore = ({ + modifier, + score, +}: { + modifier: number | undefined; + score: number; +}): number => { + if (modifier == null) { + return score; + } + + return bayesianUpdate({ max: RISK_SCORING_NORMALIZATION_MAX, modifier, score }); +}; + +/** + * Updates a score with the given modifier using bayesian inference. + * @param modifier - The modifier to be applied to the score. + * @param score - The score to modifiers are applied + * @param max - The maximum value of the score. + * + * @returns The updated score with modifiers applied + */ +export const bayesianUpdate = ({ + max, + modifier, + score, +}: { + max: number; + modifier: number; + score: number; +}) => { + const priorProbability = score / (max - score); + const newProbability = priorProbability * modifier; + return (max * newProbability) / (1 + newProbability); +}; + +/** + * Normalizes a number to the range [0, 100] + * + * @param number - The number to be normalized + * @param min - The minimum possible value of the number. Defaults to 0. + * @param max - The maximum possible value of the number + * + * @returns The updated score with modifiers applied + */ +export const normalize = ({ + number, + min = 0, + max, +}: { + number: number; + min?: number; + max: number; +}) => ((number - min) / (max - min)) * 100; diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/index.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/index.ts new file mode 100644 index 0000000000000..7b8b38945dae5 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './asset_criticality_service'; +export * from './asset_criticality_data_client'; diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_and_persist_risk_scores.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_and_persist_risk_scores.ts index 77258d313034c..25bc1bddd99fa 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_and_persist_risk_scores.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_and_persist_risk_scores.ts @@ -9,10 +9,12 @@ import type { ElasticsearchClient, Logger } from '@kbn/core/server'; import type { RiskScoreDataClient } from './risk_score_data_client'; import type { CalculateAndPersistScoresParams, CalculateAndPersistScoresResponse } from '../types'; +import type { AssetCriticalityService } from '../asset_criticality/asset_criticality_service'; import { calculateRiskScores } from './calculate_risk_scores'; export const calculateAndPersistRiskScores = async ( params: CalculateAndPersistScoresParams & { + assetCriticalityService: AssetCriticalityService; esClient: ElasticsearchClient; logger: Logger; spaceId: string; diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.mock.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.mock.ts index 20db1f8d61735..fbfaaf11140d8 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.mock.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.mock.ts @@ -23,7 +23,6 @@ const buildRiskScoreBucketMock = (overrides: Partial = {}): Ris value: { score: 20, normalized_score: 30.0, - level: 'Unknown', notes: [], category_1_score: 30, category_1_count: 1, @@ -88,11 +87,15 @@ const buildResponseMock = ( '@timestamp': '2021-08-19T20:55:59.000Z', id_field: 'host.name', id_value: 'hostname', + criticality_level: 'important', + criticality_modifier: 1.5, calculated_level: 'Unknown', calculated_score: 20, calculated_score_norm: 30, category_1_score: 30, category_1_count: 12, + category_2_score: 0, + category_2_count: 0, notes: [], inputs: [ { diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.test.ts index f75fd94c42d30..30d3d2f0566ee 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.test.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.test.ts @@ -7,6 +7,7 @@ import type { ElasticsearchClient, Logger } from '@kbn/core/server'; import { elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; +import { assetCriticalityServiceMock } from '../asset_criticality/asset_criticality_service.mock'; import { calculateRiskScores } from './calculate_risk_scores'; import { calculateRiskScoresMock } from './calculate_risk_scores.mock'; @@ -21,6 +22,7 @@ describe('calculateRiskScores()', () => { logger = loggingSystemMock.createLogger(); params = { afterKeys: {}, + assetCriticalityService: assetCriticalityServiceMock.create(), esClient, logger, index: 'index', @@ -184,7 +186,7 @@ describe('calculateRiskScores()', () => { '@timestamp': expect.any(String), id_field: expect.any(String), id_value: expect.any(String), - calculated_level: 'Unknown', + calculated_level: 'Low', calculated_score: expect.any(Number), calculated_score_norm: expect.any(Number), category_1_score: expect.any(Number), @@ -217,18 +219,44 @@ describe('calculateRiskScores()', () => { }); describe('error conditions', () => { - beforeEach(() => { - // stub out a rejected response + it('raises an error if elasticsearch client rejects', async () => { (esClient.search as jest.Mock).mockRejectedValueOnce({ aggregations: calculateRiskScoresMock.buildAggregationResponse(), }); - }); - it('raises an error if elasticsearch client rejects', () => { - expect.assertions(1); - expect(() => calculateRiskScores(params)).rejects.toEqual({ + await expect(() => calculateRiskScores(params)).rejects.toEqual({ aggregations: calculateRiskScoresMock.buildAggregationResponse(), }); }); + + describe('when the asset criticality service throws an error', () => { + beforeEach(() => { + (esClient.search as jest.Mock).mockResolvedValueOnce({ + aggregations: calculateRiskScoresMock.buildAggregationResponse(), + }); + ( + params.assetCriticalityService.getCriticalitiesByIdentifiers as jest.Mock + ).mockRejectedValueOnce(new Error('foo')); + }); + + it('logs the error but proceeds if asset criticality service throws', async () => { + await expect(calculateRiskScores(params)).resolves.toEqual( + expect.objectContaining({ + scores: expect.objectContaining({ + host: expect.arrayContaining([ + expect.objectContaining({ + calculated_level: expect.any(String), + id_field: expect.any(String), + id_value: expect.any(String), + }), + ]), + }), + }) + ); + expect(logger.warn).toHaveBeenCalledWith( + 'Error retrieving criticality: Error: foo. Scoring will proceed without criticality information.' + ); + }); + }); }); }); diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.ts index a877bfd0f8e60..d9af3457d6915 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.ts @@ -17,14 +17,22 @@ import { ALERT_WORKFLOW_STATUS, EVENT_KIND, } from '@kbn/rule-registry-plugin/common/technical_rule_data_field_names'; -import type { - AfterKeys, - IdentifierType, - RiskWeights, - RiskScore, +import { + type AfterKeys, + type IdentifierType, + type RiskWeights, + type RiskScore, + getRiskLevel, + RiskCategories, } from '../../../../common/entity_analytics/risk_engine'; -import { RiskCategories } from '../../../../common/entity_analytics/risk_engine'; import { withSecuritySpan } from '../../../utils/with_security_span'; +import type { AssetCriticalityRecord } from '../../../../common/api/entity_analytics'; +import type { AssetCriticalityService } from '../asset_criticality/asset_criticality_service'; +import { + applyCriticalityToScore, + getCriticalityModifier, + normalize, +} from '../asset_criticality/helpers'; import { getAfterKeyForIdentifierType, getFieldForIdentifierAgg } from './helpers'; import { buildCategoryCountDeclarations, @@ -39,34 +47,68 @@ import type { CalculateScoresResponse, RiskScoreBucket, } from '../types'; +import { + RISK_SCORING_INPUTS_COUNT_MAX, + RISK_SCORING_SUM_MAX, + RISK_SCORING_SUM_VALUE, +} from './constants'; -const bucketToResponse = ({ +const formatForResponse = ({ bucket, + criticality, now, identifierField, + includeNewFields, }: { bucket: RiskScoreBucket; + criticality?: AssetCriticalityRecord; now: string; identifierField: string; -}): RiskScore => ({ - '@timestamp': now, - id_field: identifierField, - id_value: bucket.key[identifierField], - calculated_level: bucket.risk_details.value.level, - calculated_score: bucket.risk_details.value.score, - calculated_score_norm: bucket.risk_details.value.normalized_score, - category_1_score: bucket.risk_details.value.category_1_score, - category_1_count: bucket.risk_details.value.category_1_count, - notes: bucket.risk_details.value.notes, - inputs: bucket.inputs.hits.hits.map((riskInput) => ({ - id: riskInput._id, - index: riskInput._index, - description: `Alert from Rule: ${riskInput.fields?.[ALERT_RULE_NAME]?.[0] ?? 'RULE_NOT_FOUND'}`, - category: RiskCategories.category_1, - risk_score: riskInput.fields?.[ALERT_RISK_SCORE]?.[0] ?? undefined, - timestamp: riskInput.fields?.['@timestamp']?.[0] ?? undefined, - })), -}); + includeNewFields: boolean; +}): RiskScore => { + const criticalityModifier = getCriticalityModifier(criticality?.criticality_level); + const normalizedScoreWithCriticality = applyCriticalityToScore({ + score: bucket.risk_details.value.normalized_score, + modifier: criticalityModifier, + }); + const calculatedLevel = getRiskLevel(normalizedScoreWithCriticality); + const categoryTwoScore = + normalizedScoreWithCriticality - bucket.risk_details.value.normalized_score; + const categoryTwoCount = criticalityModifier ? 1 : 0; + + const newFields = { + category_2_score: categoryTwoScore, + category_2_count: categoryTwoCount, + criticality_level: criticality?.criticality_level, + criticality_modifier: criticalityModifier, + }; + + return { + '@timestamp': now, + id_field: identifierField, + id_value: bucket.key[identifierField], + calculated_level: calculatedLevel, + calculated_score: bucket.risk_details.value.score, + calculated_score_norm: normalizedScoreWithCriticality, + category_1_score: normalize({ + number: bucket.risk_details.value.category_1_score, + max: RISK_SCORING_SUM_MAX, + }), + category_1_count: bucket.risk_details.value.category_1_count, + notes: bucket.risk_details.value.notes, + inputs: bucket.inputs.hits.hits.map((riskInput) => ({ + id: riskInput._id, + index: riskInput._index, + description: `Alert from Rule: ${ + riskInput.fields?.[ALERT_RULE_NAME]?.[0] ?? 'RULE_NOT_FOUND' + }`, + category: RiskCategories.category_1, + risk_score: riskInput.fields?.[ALERT_RISK_SCORE]?.[0] ?? undefined, + timestamp: riskInput.fields?.['@timestamp']?.[0] ?? undefined, + })), + ...(includeNewFields ? newFields : {}), + }; +}; const filterFromRange = (range: CalculateScoresParams['range']): QueryDslQueryContainer => ({ range: { '@timestamp': { lt: range.end, gte: range.start } }, @@ -108,22 +150,6 @@ const buildReduceScript = ({ results['score'] = total_score; results['normalized_score'] = score_norm; - if (score_norm < 20) { - results['level'] = 'Unknown' - } - else if (score_norm >= 20 && score_norm < 40) { - results['level'] = 'Low' - } - else if (score_norm >= 40 && score_norm < 70) { - results['level'] = 'Moderate' - } - else if (score_norm >= 70 && score_norm < 90) { - results['level'] = 'High' - } - else if (score_norm >= 90) { - results['level'] = 'Critical' - } - return results; `; }; @@ -184,9 +210,9 @@ const buildIdentifierTypeAggregation = ({ `, combine_script: 'return state;', params: { - max_risk_inputs_per_identity: 999999, - p: 1.5, - risk_cap: 261.2, + max_risk_inputs_per_identity: RISK_SCORING_INPUTS_COUNT_MAX, + p: RISK_SCORING_SUM_VALUE, + risk_cap: RISK_SCORING_SUM_MAX, }, reduce_script: buildReduceScript({ globalIdentifierTypeWeight }), }, @@ -195,8 +221,55 @@ const buildIdentifierTypeAggregation = ({ }; }; +const processScores = async ({ + assetCriticalityService, + buckets, + identifierField, + logger, + now, +}: { + assetCriticalityService: AssetCriticalityService; + buckets: RiskScoreBucket[]; + identifierField: string; + logger: Logger; + now: string; +}): Promise => { + if (buckets.length === 0) { + return []; + } + + if (!assetCriticalityService.isEnabled()) { + return buckets.map((bucket) => + formatForResponse({ bucket, now, identifierField, includeNewFields: false }) + ); + } + + const identifiers = buckets.map((bucket) => ({ + id_field: identifierField, + id_value: bucket.key[identifierField], + })); + + let criticalities: AssetCriticalityRecord[] = []; + try { + criticalities = await assetCriticalityService.getCriticalitiesByIdentifiers(identifiers); + } catch (e) { + logger.warn( + `Error retrieving criticality: ${e}. Scoring will proceed without criticality information.` + ); + } + + return buckets.map((bucket) => { + const criticality = criticalities.find( + (c) => c.id_field === identifierField && c.id_value === bucket.key[identifierField] + ); + + return formatForResponse({ bucket, criticality, identifierField, now, includeNewFields: true }); + }); +}; + export const calculateRiskScores = async ({ afterKeys: userAfterKeys, + assetCriticalityService, debug, esClient, filter: userFilter, @@ -208,6 +281,7 @@ export const calculateRiskScores = async ({ runtimeMappings, weights, }: { + assetCriticalityService: AssetCriticalityService; esClient: ElasticsearchClient; logger: Logger; } & CalculateScoresParams): Promise => @@ -274,16 +348,27 @@ export const calculateRiskScores = async ({ user: response.aggregations.user?.after_key, }; + const hostScores = await processScores({ + assetCriticalityService, + buckets: hostBuckets, + identifierField: 'host.name', + logger, + now, + }); + const userScores = await processScores({ + assetCriticalityService, + buckets: userBuckets, + identifierField: 'user.name', + logger, + now, + }); + return { ...(debug ? { request, response } : {}), after_keys: afterKeys, scores: { - host: hostBuckets.map((bucket) => - bucketToResponse({ bucket, identifierField: 'host.name', now }) - ), - user: userBuckets.map((bucket) => - bucketToResponse({ bucket, identifierField: 'user.name', now }) - ), + host: hostScores, + user: userScores, }, }; }); diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/constants.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/constants.ts new file mode 100644 index 0000000000000..57e67960f96e2 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/constants.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. + */ + +/** + * The risk scoring algorithm uses a Riemann zeta function to sum an entity's risk inputs to a known, finite value (@see RISK_SCORING_SUM_MAX). It does so by assigning each input a weight based on its position in the list (ordered by score) of inputs. This value represents the complex variable s of Re(s) in traditional Riemann zeta function notation. + */ +export const RISK_SCORING_SUM_VALUE = 1.5; + +/** + * Represents the maximum possible risk score sum. This value is derived from RISK_SCORING_SUM_VALUE, but we store the precomputed value here to be used more conveniently in normalization. + * @see RISK_SCORING_SUM_VALUE + */ +export const RISK_SCORING_SUM_MAX = 261.2; + +/** + * The risk scoring algorithm can only process a finite number of risk inputs per identity; this value represents the maximum number of inputs that will be processed. + */ +export const RISK_SCORING_INPUTS_COUNT_MAX = 999999; + +/** + * This value represents the maximum possible risk score after normalization. + */ +export const RISK_SCORING_NORMALIZATION_MAX = 100; diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_engine_data_writer.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_engine_data_writer.test.ts index ca2ad354320a6..271d5511e6b75 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_engine_data_writer.test.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_engine_data_writer.test.ts @@ -51,6 +51,10 @@ describe('RiskEngineDataWriter', () => { "calculated_score_norm": 85.332, "category_1_count": 12, "category_1_score": 85, + "category_2_count": 0, + "category_2_score": 0, + "criticality_level": "very_important", + "criticality_modifier": 2, "id_field": "host.name", "id_value": "hostname", "inputs": Array [], @@ -73,6 +77,10 @@ describe('RiskEngineDataWriter', () => { "calculated_score_norm": 85.332, "category_1_count": 12, "category_1_score": 85, + "category_2_count": 0, + "category_2_score": 0, + "criticality_level": "very_important", + "criticality_modifier": 2, "id_field": "host.name", "id_value": "hostname", "inputs": Array [], @@ -117,6 +125,10 @@ describe('RiskEngineDataWriter', () => { "calculated_score_norm": 85.332, "category_1_count": 12, "category_1_score": 85, + "category_2_count": 0, + "category_2_score": 0, + "criticality_level": "very_important", + "criticality_modifier": 2, "id_field": "user.name", "id_value": "username_1", "inputs": Array [], @@ -139,6 +151,10 @@ describe('RiskEngineDataWriter', () => { "calculated_score_norm": 85.332, "category_1_count": 12, "category_1_score": 85, + "category_2_count": 0, + "category_2_score": 0, + "criticality_level": "very_important", + "criticality_modifier": 2, "id_field": "user.name", "id_value": "username_2", "inputs": Array [], @@ -189,6 +205,10 @@ describe('RiskEngineDataWriter', () => { "calculated_score_norm": 85.332, "category_1_count": 12, "category_1_score": 85, + "category_2_count": 0, + "category_2_score": 0, + "criticality_level": "very_important", + "criticality_modifier": 2, "id_field": "host.name", "id_value": "hostname_1", "inputs": Array [], @@ -211,6 +231,10 @@ describe('RiskEngineDataWriter', () => { "calculated_score_norm": 85.332, "category_1_count": 12, "category_1_score": 85, + "category_2_count": 0, + "category_2_score": 0, + "criticality_level": "very_important", + "criticality_modifier": 2, "id_field": "user.name", "id_value": "username_1", "inputs": Array [], @@ -233,6 +257,10 @@ describe('RiskEngineDataWriter', () => { "calculated_score_norm": 85.332, "category_1_count": 12, "category_1_score": 85, + "category_2_count": 0, + "category_2_score": 0, + "criticality_level": "very_important", + "criticality_modifier": 2, "id_field": "user.name", "id_value": "username_2", "inputs": Array [], diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_service.mock.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_service.mock.ts index e72852f6ea47a..5353d38fcaefa 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_service.mock.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_service.mock.ts @@ -17,6 +17,10 @@ const createRiskScoreMock = (overrides: Partial = {}): RiskScore => ( calculated_score_norm: 85.332, category_1_score: 85, category_1_count: 12, + category_2_count: 0, + category_2_score: 0, + criticality_level: 'very_important', + criticality_modifier: 2, notes: [], inputs: [], ...overrides, diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_service.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_service.ts index a89835c6c7327..c62e4c3ead828 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_service.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_score_service.ts @@ -16,6 +16,7 @@ import type { import { calculateRiskScores } from './calculate_risk_scores'; import { calculateAndPersistRiskScores } from './calculate_and_persist_risk_scores'; import type { RiskEngineDataClient } from '../risk_engine/risk_engine_data_client'; +import type { AssetCriticalityService } from '../asset_criticality/asset_criticality_service'; import type { RiskScoreDataClient } from './risk_score_data_client'; import type { RiskInputsIndexResponse } from './get_risk_inputs_index'; import { scheduleLatestTransformNow } from '../utils/transforms'; @@ -31,6 +32,7 @@ export interface RiskScoreService { } export interface RiskScoreServiceFactoryParams { + assetCriticalityService: AssetCriticalityService; esClient: ElasticsearchClient; logger: Logger; riskEngineDataClient: RiskEngineDataClient; @@ -39,15 +41,24 @@ export interface RiskScoreServiceFactoryParams { } export const riskScoreServiceFactory = ({ + assetCriticalityService, esClient, logger, riskEngineDataClient, riskScoreDataClient, spaceId, }: RiskScoreServiceFactoryParams): RiskScoreService => ({ - calculateScores: (params) => calculateRiskScores({ ...params, esClient, logger }), + calculateScores: (params) => + calculateRiskScores({ ...params, assetCriticalityService, esClient, logger }), calculateAndPersistScores: (params) => - calculateAndPersistRiskScores({ ...params, esClient, logger, riskScoreDataClient, spaceId }), + calculateAndPersistRiskScores({ + ...params, + assetCriticalityService, + esClient, + logger, + riskScoreDataClient, + spaceId, + }), getConfiguration: async () => riskEngineDataClient.getConfiguration(), getRiskInputsIndex: async (params) => riskScoreDataClient.getRiskInputsIndex(params), scheduleLatestTransformNow: () => scheduleLatestTransformNow({ namespace: spaceId, esClient }), diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_weights.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_weights.ts index f0af4360b8631..de1754ba3de21 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_weights.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/risk_weights.ts @@ -54,7 +54,7 @@ const getWeightForIdentifierType = (weight: RiskWeight, identifierType: Identifi }; export const buildCategoryScoreDeclarations = (): string => { - return RISK_CATEGORIES.map((riskCategory) => `results['${riskCategory}_score'] = 0;`).join(''); + return RISK_CATEGORIES.map((riskCategory) => `results['${riskCategory}_score'] = 0.0;`).join(''); }; export const buildCategoryCountDeclarations = (): string => { diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/calculation.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/calculation.test.ts index 0a62695dfd680..fb5c366193cb7 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/calculation.test.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/calculation.test.ts @@ -9,6 +9,7 @@ import { riskScoreCalculationRoute } from './calculation'; import { loggerMock } from '@kbn/logging-mocks'; +import type { ExperimentalFeatures } from '../../../../../common'; import { RISK_SCORE_CALCULATION_URL } from '../../../../../common/constants'; import { serverMock, @@ -44,7 +45,7 @@ describe('risk score calculation route', () => { clients.appClient.getAlertsIndex.mockReturnValue('default-alerts-index'); (riskScoreServiceFactory as jest.Mock).mockReturnValue(mockRiskScoreService); - riskScoreCalculationRoute(server.router, logger); + riskScoreCalculationRoute(server.router, logger, {} as ExperimentalFeatures); }); const buildRequest = (overrides: object = {}) => { diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/calculation.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/calculation.ts index 1822c038b7d1d..71f4d05712d68 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/calculation.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/calculation.ts @@ -14,12 +14,18 @@ import { RISK_SCORE_CALCULATION_URL, } from '../../../../../common/constants'; import { riskScoreCalculationRequestSchema } from '../../../../../common/entity_analytics/risk_engine/risk_score_calculation/request_schema'; +import type { ExperimentalFeatures } from '../../../../../common'; import type { SecuritySolutionPluginRouter } from '../../../../types'; import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; +import { assetCriticalityServiceFactory } from '../../asset_criticality'; import { riskScoreServiceFactory } from '../risk_score_service'; import { getRiskInputsIndex } from '../get_risk_inputs_index'; -export const riskScoreCalculationRoute = (router: SecuritySolutionPluginRouter, logger: Logger) => { +export const riskScoreCalculationRoute = ( + router: SecuritySolutionPluginRouter, + logger: Logger, + experimentalFeatures: ExperimentalFeatures +) => { router.versioned .post({ path: RISK_SCORE_CALCULATION_URL, @@ -42,8 +48,14 @@ export const riskScoreCalculationRoute = (router: SecuritySolutionPluginRouter, const spaceId = securityContext.getSpaceId(); const riskEngineDataClient = securityContext.getRiskEngineDataClient(); const riskScoreDataClient = securityContext.getRiskScoreDataClient(); + const assetCriticalityDataClient = securityContext.getAssetCriticalityDataClient(); + const assetCriticalityService = assetCriticalityServiceFactory({ + assetCriticalityDataClient, + experimentalFeatures, + }); const riskScoreService = riskScoreServiceFactory({ + assetCriticalityService, esClient, logger, riskEngineDataClient, diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.test.ts index 9a525a5bae0d5..71d108058a10d 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.test.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.test.ts @@ -7,6 +7,7 @@ import { loggerMock } from '@kbn/logging-mocks'; +import type { ExperimentalFeatures } from '../../../../../common'; import { RISK_SCORE_PREVIEW_URL } from '../../../../../common/constants'; import { RiskCategories, @@ -48,7 +49,7 @@ describe('POST risk_engine/preview route', () => { clients.appClient.getAlertsIndex.mockReturnValue('default-alerts-index'); (riskScoreServiceFactory as jest.Mock).mockReturnValue(mockRiskScoreService); - riskScorePreviewRoute(server.router, logger); + riskScorePreviewRoute(server.router, logger, {} as ExperimentalFeatures); }); const buildRequest = (body: object = {}) => diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.ts index 13f3ee8a9df07..db11cf84e9049 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.ts @@ -15,12 +15,18 @@ import { RISK_SCORE_PREVIEW_URL, } from '../../../../../common/constants'; import { riskScorePreviewRequestSchema } from '../../../../../common/entity_analytics/risk_engine/risk_score_preview/request_schema'; +import type { ExperimentalFeatures } from '../../../../../common'; import type { SecuritySolutionPluginRouter } from '../../../../types'; import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; +import { assetCriticalityServiceFactory } from '../../asset_criticality'; import { riskScoreServiceFactory } from '../risk_score_service'; import { getRiskInputsIndex } from '../get_risk_inputs_index'; -export const riskScorePreviewRoute = (router: SecuritySolutionPluginRouter, logger: Logger) => { +export const riskScorePreviewRoute = ( + router: SecuritySolutionPluginRouter, + logger: Logger, + experimentalFeatures: ExperimentalFeatures +) => { router.versioned .post({ access: 'internal', @@ -43,8 +49,14 @@ export const riskScorePreviewRoute = (router: SecuritySolutionPluginRouter, logg const spaceId = securityContext.getSpaceId(); const riskEngineDataClient = securityContext.getRiskEngineDataClient(); const riskScoreDataClient = securityContext.getRiskScoreDataClient(); + const assetCriticalityDataClient = securityContext.getAssetCriticalityDataClient(); + const assetCriticalityService = assetCriticalityServiceFactory({ + assetCriticalityDataClient, + experimentalFeatures, + }); const riskScoreService = riskScoreServiceFactory({ + assetCriticalityService, esClient, logger, riskEngineDataClient, diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts index 45562ac8d38a9..bc3d5054980dc 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts @@ -11,6 +11,7 @@ import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks'; import { loggerMock } from '@kbn/logging-mocks'; import type { AnalyticsServiceSetup } from '@kbn/core/public'; +import type { ExperimentalFeatures } from '../../../../../common'; import type { RiskScoreService } from '../risk_score_service'; import { riskScoreServiceMock } from '../risk_score_service.mock'; import { riskScoringTaskMock } from './risk_scoring_task.mock'; @@ -47,6 +48,7 @@ describe('Risk Scoring Task', () => { it('registers the task with TaskManager', () => { expect(mockTaskManagerSetup.registerTaskDefinitions).not.toHaveBeenCalled(); registerRiskScoringTask({ + experimentalFeatures: {} as ExperimentalFeatures, getStartServices: mockCore.getStartServices, kibanaVersion: '8.10.0', taskManager: mockTaskManagerSetup, @@ -59,6 +61,7 @@ describe('Risk Scoring Task', () => { it('does nothing if TaskManager is not available', () => { expect(mockTaskManagerSetup.registerTaskDefinitions).not.toHaveBeenCalled(); registerRiskScoringTask({ + experimentalFeatures: {} as ExperimentalFeatures, getStartServices: mockCore.getStartServices, kibanaVersion: '8.10.0', taskManager: undefined, diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts index a1539167bbaf4..421fb4092b928 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts @@ -18,7 +18,11 @@ import type { TaskManagerStartContract, } from '@kbn/task-manager-plugin/server'; import type { AnalyticsServiceSetup } from '@kbn/core-analytics-server'; -import type { AfterKeys, IdentifierType } from '../../../../../common/entity_analytics/risk_engine'; +import { + type AfterKeys, + type IdentifierType, + RiskScoreEntity, +} from '../../../../../common/entity_analytics/risk_engine'; import type { StartPlugins } from '../../../../plugin'; import { type RiskScoreService, riskScoreServiceFactory } from '../risk_score_service'; import { RiskEngineDataClient } from '../../risk_engine/risk_engine_data_client'; @@ -31,12 +35,16 @@ import { } from './state'; import { INTERVAL, SCOPE, TIMEOUT, TYPE, VERSION } from './constants'; import { buildScopedInternalSavedObjectsClientUnsafe, convertRangeToISO } from './helpers'; -import { RiskScoreEntity } from '../../../../../common/entity_analytics/risk_engine/types'; +import type { ExperimentalFeatures } from '../../../../../common'; import { RISK_SCORE_EXECUTION_SUCCESS_EVENT, RISK_SCORE_EXECUTION_ERROR_EVENT, RISK_SCORE_EXECUTION_CANCELLATION_EVENT, } from '../../../telemetry/event_based/events'; +import { + AssetCriticalityDataClient, + assetCriticalityServiceFactory, +} from '../../asset_criticality'; const logFactory = (logger: Logger, taskId: string) => @@ -50,12 +58,14 @@ const getTaskId = (namespace: string): string => `${TYPE}:${namespace}:${VERSION type GetRiskScoreService = (namespace: string) => Promise; export const registerRiskScoringTask = ({ + experimentalFeatures, getStartServices, kibanaVersion, logger, taskManager, telemetry, }: { + experimentalFeatures: ExperimentalFeatures; getStartServices: StartServicesAccessor; kibanaVersion: string; logger: Logger; @@ -71,6 +81,17 @@ export const registerRiskScoringTask = ({ getStartServices().then(([coreStart, _]) => { const esClient = coreStart.elasticsearch.client.asInternalUser; const soClient = buildScopedInternalSavedObjectsClientUnsafe({ coreStart, namespace }); + + const assetCriticalityDataClient = new AssetCriticalityDataClient({ + esClient, + logger, + namespace, + }); + const assetCriticalityService = assetCriticalityServiceFactory({ + assetCriticalityDataClient, + experimentalFeatures, + }); + const riskEngineDataClient = new RiskEngineDataClient({ logger, kibanaVersion, @@ -87,6 +108,7 @@ export const registerRiskScoringTask = ({ }); return riskScoreServiceFactory({ + assetCriticalityService, esClient, logger, riskEngineDataClient, diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/types.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/types.ts index acdb1982011d2..ea2464b8058a7 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/types.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/types.ts @@ -117,7 +117,6 @@ export interface RiskScoreBucket { score: number; normalized_score: number; notes: string[]; - level: string; category_1_score: number; category_1_count: number; }; diff --git a/x-pack/plugins/security_solution/server/plugin.ts b/x-pack/plugins/security_solution/server/plugin.ts index 53141fc1751ce..01154dc06f5f6 100644 --- a/x-pack/plugins/security_solution/server/plugin.ts +++ b/x-pack/plugins/security_solution/server/plugin.ts @@ -183,6 +183,7 @@ export class Plugin implements ISecuritySolutionPlugin { if (experimentalFeatures.riskScoringPersistence) { registerRiskScoringTask({ + experimentalFeatures, getStartServices: core.getStartServices, kibanaVersion: pluginContext.env.packageInfo.version, logger: this.logger, diff --git a/x-pack/plugins/security_solution/server/request_context_factory.ts b/x-pack/plugins/security_solution/server/request_context_factory.ts index 3deaaa103caa6..3f1d9f818e431 100644 --- a/x-pack/plugins/security_solution/server/request_context_factory.ts +++ b/x-pack/plugins/security_solution/server/request_context_factory.ts @@ -27,7 +27,7 @@ import type { EndpointAuthz } from '../common/endpoint/types/authz'; import type { EndpointAppContextService } from './endpoint/endpoint_app_context_services'; import { RiskEngineDataClient } from './lib/entity_analytics/risk_engine/risk_engine_data_client'; import { RiskScoreDataClient } from './lib/entity_analytics/risk_score/risk_score_data_client'; -import { AssetCriticalityDataClient } from './lib/entity_analytics/asset_criticality/asset_criticality_data_client'; +import { AssetCriticalityDataClient } from './lib/entity_analytics/asset_criticality'; export interface IRequestContextFactory { create( diff --git a/x-pack/plugins/security_solution/server/routes/index.ts b/x-pack/plugins/security_solution/server/routes/index.ts index ce863fb861076..b32543ad7612d 100644 --- a/x-pack/plugins/security_solution/server/routes/index.ts +++ b/x-pack/plugins/security_solution/server/routes/index.ts @@ -159,8 +159,8 @@ export const initRoutes = ( } if (config.experimentalFeatures.riskScoringRoutesEnabled) { - riskScorePreviewRoute(router, logger); - riskScoreCalculationRoute(router, logger); + riskScorePreviewRoute(router, logger, config.experimentalFeatures); + riskScoreCalculationRoute(router, logger, config.experimentalFeatures); riskEngineStatusRoute(router); riskEngineInitRoute(router, getStartServices); riskEngineEnableRoute(router, getStartServices); diff --git a/x-pack/plugins/security_solution/server/types.ts b/x-pack/plugins/security_solution/server/types.ts index a44572ae07eae..7833c1dff6b8a 100644 --- a/x-pack/plugins/security_solution/server/types.ts +++ b/x-pack/plugins/security_solution/server/types.ts @@ -31,7 +31,7 @@ import type { EndpointAuthz } from '../common/endpoint/types/authz'; import type { EndpointInternalFleetServicesInterface } from './endpoint/services/fleet'; import type { RiskEngineDataClient } from './lib/entity_analytics/risk_engine/risk_engine_data_client'; import type { RiskScoreDataClient } from './lib/entity_analytics/risk_score/risk_score_data_client'; -import type { AssetCriticalityDataClient } from './lib/entity_analytics/asset_criticality/asset_criticality_data_client'; +import type { AssetCriticalityDataClient } from './lib/entity_analytics/asset_criticality'; export { AppClient }; export interface SecuritySolutionApiRequestHandlerContext { diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_score_calculation.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_score_calculation.ts index 03f7734e42628..d4f5be1eff225 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_score_calculation.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_score_calculation.ts @@ -23,6 +23,9 @@ import { readRiskScores, normalizeScores, waitForRiskScoresToBePresent, + assetCriticalityRouteHelpersFactory, + cleanAssetCriticality, + waitForAssetCriticalityToBePresent, } from '../../utils'; import { FtrProviderContext } from '../../../../ftr_provider_context'; @@ -116,17 +119,17 @@ export default ({ getService }: FtrProviderContext): void => { const scores = await readRiskScores(es); expect(scores.length).to.eql(1); - expect(normalizeScores(scores)).to.eql([ - { - calculated_level: 'Unknown', - calculated_score: 21, - calculated_score_norm: 8.039816232771823, - category_1_score: 21, - category_1_count: 1, - id_field: 'host.name', - id_value: 'host-1', - }, - ]); + const [score] = normalizeScores(scores); + + expect(score).to.eql({ + calculated_level: 'Unknown', + calculated_score: 21, + calculated_score_norm: 8.039816232771823, + category_1_score: 8.039816232771821, + category_1_count: 1, + id_field: 'host.name', + id_value: 'host-1', + }); }); describe('paging through calculations', () => { @@ -269,6 +272,60 @@ export default ({ getService }: FtrProviderContext): void => { expect(scores.length).to.eql(10); }); }); + + describe('@skipInServerless with asset criticality data', () => { + const assetCriticalityRoutes = assetCriticalityRouteHelpersFactory(supertest); + + beforeEach(async () => { + await assetCriticalityRoutes.upsert({ + id_field: 'host.name', + id_value: 'host-1', + criticality_level: 'important', + }); + }); + + afterEach(async () => { + await cleanAssetCriticality({ log, es }); + }); + + it('calculates and persists risk scores with additional criticality metadata and modifiers', async () => { + const documentId = uuidv4(); + await indexListOfDocuments([buildDocument({ host: { name: 'host-1' } }, documentId)]); + await waitForAssetCriticalityToBePresent({ es, log }); + + const results = await calculateRiskScoreAfterRuleCreationAndExecution(documentId); + expect(results).to.eql({ + after_keys: { host: { 'host.name': 'host-1' } }, + errors: [], + scores_written: 1, + }); + + await waitForRiskScoresToBePresent({ es, log }); + const scores = await readRiskScores(es); + expect(scores.length).to.eql(1); + + const [score] = normalizeScores(scores); + expect(score).to.eql({ + criticality_level: 'important', + criticality_modifier: 1.5, + calculated_level: 'Unknown', + calculated_score: 21, + calculated_score_norm: 11.59366948840633, + category_1_score: 8.039816232771821, + category_1_count: 1, + id_field: 'host.name', + id_value: 'host-1', + }); + const [rawScore] = scores; + + expect( + rawScore.host?.risk.category_1_score! + rawScore.host?.risk.category_2_score! + ).to.be.within( + score.calculated_score_norm! - 0.000000000000001, + score.calculated_score_norm! + 0.000000000000001 + ); + }); + }); }); }); }; diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_score_preview.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_score_preview.ts index e4284cdb5b837..bfb415bac02a8 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_score_preview.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_score_preview.ts @@ -18,10 +18,13 @@ import { dataGeneratorFactory, } from '../../../detections_response/utils'; import { + assetCriticalityRouteHelpersFactory, buildDocument, + cleanAssetCriticality, createAndSyncRuleAndAlertsFactory, deleteAllRiskScores, sanitizeScores, + waitForAssetCriticalityToBePresent, } from '../../utils'; import { FtrProviderContext } from '../../../../ftr_provider_context'; @@ -99,18 +102,23 @@ export default ({ getService }: FtrProviderContext): void => { await indexListOfDocuments([buildDocument({ host: { name: 'host-1' } }, documentId)]); const body = await getRiskScoreAfterRuleCreationAndExecution(documentId); + const [score] = sanitizeScores(body.scores.host!); + const [rawScore] = body.scores.host!; + + expect(score).to.eql({ + calculated_level: 'Unknown', + calculated_score: 21, + calculated_score_norm: 8.039816232771823, + category_1_count: 1, + category_1_score: 8.039816232771821, + id_field: 'host.name', + id_value: 'host-1', + }); - expect(sanitizeScores(body.scores.host!)).to.eql([ - { - calculated_level: 'Unknown', - calculated_score: 21, - calculated_score_norm: 8.039816232771823, - category_1_count: 1, - category_1_score: 21, - id_field: 'host.name', - id_value: 'host-1', - }, - ]); + expect(rawScore.category_1_score! + rawScore.category_2_score!).to.be.within( + score.calculated_score_norm! - 0.000000000000001, + score.calculated_score_norm! + 0.000000000000001 + ); }); it('calculates risk from two alerts, each representing a unique host', async () => { @@ -130,7 +138,7 @@ export default ({ getService }: FtrProviderContext): void => { calculated_score: 21, calculated_score_norm: 8.039816232771823, category_1_count: 1, - category_1_score: 21, + category_1_score: 8.039816232771821, id_field: 'host.name', id_value: 'host-1', }, @@ -139,7 +147,7 @@ export default ({ getService }: FtrProviderContext): void => { calculated_score: 21, calculated_score_norm: 8.039816232771823, category_1_count: 1, - category_1_score: 21, + category_1_score: 8.039816232771821, id_field: 'host.name', id_value: 'host-2', }, @@ -163,7 +171,7 @@ export default ({ getService }: FtrProviderContext): void => { calculated_score: 28.42462120245875, calculated_score_norm: 10.88232052161514, category_1_count: 2, - category_1_score: 28, + category_1_score: 10.882320521615142, id_field: 'host.name', id_value: 'host-1', }, @@ -185,7 +193,7 @@ export default ({ getService }: FtrProviderContext): void => { calculated_score: 47.25513506055279, calculated_score_norm: 18.091552473412246, category_1_count: 30, - category_1_score: 37, + category_1_score: 18.091552473412246, id_field: 'host.name', id_value: 'host-1', }, @@ -210,7 +218,7 @@ export default ({ getService }: FtrProviderContext): void => { calculated_score: 47.25513506055279, calculated_score_norm: 18.091552473412246, category_1_count: 30, - category_1_score: 37, + category_1_score: 18.091552473412246, id_field: 'host.name', id_value: 'host-1', }, @@ -219,7 +227,7 @@ export default ({ getService }: FtrProviderContext): void => { calculated_score: 21, calculated_score_norm: 8.039816232771823, category_1_count: 1, - category_1_score: 21, + category_1_score: 8.039816232771821, id_field: 'host.name', id_value: 'host-2', }, @@ -241,7 +249,7 @@ export default ({ getService }: FtrProviderContext): void => { calculated_score: 50.67035607277805, calculated_score_norm: 19.399064346392823, category_1_count: 100, - category_1_score: 37, + category_1_score: 19.399064346392823, id_field: 'host.name', id_value: 'host-1', }, @@ -266,7 +274,7 @@ export default ({ getService }: FtrProviderContext): void => { calculated_score: 241.2874098703716, calculated_score_norm: 92.37649688758484, category_1_count: 100, - category_1_score: 209, + category_1_score: 92.37649688758484, id_field: 'host.name', id_value: 'host-1', }, @@ -297,7 +305,7 @@ export default ({ getService }: FtrProviderContext): void => { calculated_score: 254.91456029175757, calculated_score_norm: 97.59362951445543, category_1_count: 1000, - category_1_score: 209, + category_1_score: 97.59362951445543, id_field: 'host.name', id_value: 'host-1', }, @@ -393,7 +401,7 @@ export default ({ getService }: FtrProviderContext): void => { calculated_score: 225.1106801442913, calculated_score_norm: 86.18326192354185, category_1_count: 100, - category_1_score: 203, + category_1_score: 86.18326192354185, id_field: 'host.name', id_value: 'host-1', }, @@ -422,7 +430,7 @@ export default ({ getService }: FtrProviderContext): void => { calculated_score: 120.6437049351858, calculated_score_norm: 46.18824844379242, category_1_count: 100, - category_1_score: 209, + category_1_score: 92.37649688758484, id_field: 'host.name', id_value: 'host-1', }, @@ -449,7 +457,7 @@ export default ({ getService }: FtrProviderContext): void => { calculated_score: 168.9011869092601, calculated_score_norm: 64.66354782130938, category_1_count: 100, - category_1_score: 209, + category_1_score: 92.37649688758484, id_field: 'user.name', id_value: 'user-1', }, @@ -478,7 +486,7 @@ export default ({ getService }: FtrProviderContext): void => { calculated_score: 93.23759116471251, calculated_score_norm: 35.695861854790394, category_1_count: 50, - category_1_score: 209, + category_1_score: 89.23965463697598, id_field: 'host.name', id_value: 'host-1', }, @@ -490,7 +498,7 @@ export default ({ getService }: FtrProviderContext): void => { calculated_score: 186.47518232942502, calculated_score_norm: 71.39172370958079, category_1_count: 50, - category_1_score: 209, + category_1_score: 89.23965463697598, id_field: 'user.name', id_value: 'user-1', }, @@ -527,7 +535,7 @@ export default ({ getService }: FtrProviderContext): void => { calculated_level: 'Low', calculated_score: 93.2375911647125, calculated_score_norm: 35.695861854790394, - category_1_score: 77, + category_1_score: 35.69586185479039, category_1_count: 50, id_field: 'host.name', id_value: 'host-1', @@ -539,7 +547,7 @@ export default ({ getService }: FtrProviderContext): void => { calculated_level: 'High', calculated_score: 186.475182329425, calculated_score_norm: 71.39172370958079, - category_1_score: 165, + category_1_score: 71.39172370958077, category_1_count: 50, id_field: 'user.name', id_value: 'user-1', @@ -547,6 +555,58 @@ export default ({ getService }: FtrProviderContext): void => { ]); }); }); + + describe('@skipInServerless with asset criticality data', () => { + const assetCriticalityRoutes = assetCriticalityRouteHelpersFactory(supertest); + + beforeEach(async () => { + await assetCriticalityRoutes.upsert({ + id_field: 'host.name', + id_value: 'host-1', + criticality_level: 'very_important', + }); + }); + + afterEach(async () => { + await cleanAssetCriticality({ log, es }); + }); + + it('calculates and persists risk scores with additional criticality metadata and modifiers', async () => { + const documentId = uuidv4(); + await indexListOfDocuments([ + buildDocument({ host: { name: 'host-1' } }, documentId), + buildDocument({ host: { name: 'host-2' } }, documentId), + ]); + await waitForAssetCriticalityToBePresent({ es, log }); + + const body = await getRiskScoreAfterRuleCreationAndExecution(documentId, { + alerts: 2, + }); + + expect(sanitizeScores(body.scores.host!)).to.eql([ + { + criticality_level: 'very_important', + criticality_modifier: 2.0, + calculated_level: 'Unknown', + calculated_score: 21, + calculated_score_norm: 14.8830616583983, + category_1_count: 1, + category_1_score: 8.039816232771821, + id_field: 'host.name', + id_value: 'host-1', + }, + { + calculated_level: 'Unknown', + calculated_score: 21, + calculated_score_norm: 8.039816232771823, + category_1_count: 1, + category_1_score: 8.039816232771821, + id_field: 'host.name', + id_value: 'host-2', + }, + ]); + }); + }); }); }); }; diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_scoring_task/task_execution.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_scoring_task/task_execution.ts index 7ebfb568e8cd3..1f9c886b932f8 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_scoring_task/task_execution.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/risk_scoring_task/task_execution.ts @@ -23,6 +23,9 @@ import { getRiskEngineTask, waitForRiskEngineTaskToBeGone, cleanRiskEngine, + assetCriticalityRouteHelpersFactory, + cleanAssetCriticality, + waitForAssetCriticalityToBePresent, } from '../../../utils'; import { FtrProviderContext } from '../../../../../ftr_provider_context'; @@ -157,7 +160,8 @@ export default ({ getService }: FtrProviderContext): void => { await riskEngineRoutes.disable(); }); - describe('when task interval is modified', () => { + // Temporary, expected failure: See https://github.com/elastic/security-team/issues/8012 + describe.skip('when task interval is modified', () => { beforeEach(async () => { await updateRiskEngineConfigSO({ attributes: { @@ -179,8 +183,7 @@ export default ({ getService }: FtrProviderContext): void => { }); }); - // FLAKY: https://github.com/elastic/kibana/issues/171132 - describe.skip('with some alerts containing hosts and others containing users', () => { + describe('with some alerts containing hosts and others containing users', () => { let hostId: string; let userId: string; @@ -212,20 +215,68 @@ export default ({ getService }: FtrProviderContext): void => { alerts: 20, riskScore: 40, }); - - await riskEngineRoutes.init(); }); it('@skipInQA calculates and persists risk scores for both types of entities', async () => { + await riskEngineRoutes.init(); await waitForRiskScoresToBePresent({ es, log, scoreCount: 20 }); const riskScores = await readRiskScores(es); - expect(riskScores.length).to.eql(20); + expect(riskScores.length).to.be.greaterThan(0); const scoredIdentifiers = normalizeScores(riskScores).map( ({ id_field: idField }) => idField ); - expect(scoredIdentifiers.includes('host.name')).to.be(true); - expect(scoredIdentifiers.includes('user.name')).to.be(true); + expect(scoredIdentifiers).to.contain('host.name'); + expect(scoredIdentifiers).to.contain('user.name'); + }); + + context('@skipInServerless with asset criticality data', () => { + const assetCriticalityRoutes = assetCriticalityRouteHelpersFactory(supertest); + + beforeEach(async () => { + await assetCriticalityRoutes.upsert({ + id_field: 'host.name', + id_value: 'host-1', + criticality_level: 'very_important', + }); + }); + + afterEach(async () => { + await cleanAssetCriticality({ log, es }); + }); + + it('calculates risk scores with asset criticality data', async () => { + await waitForAssetCriticalityToBePresent({ es, log }); + await riskEngineRoutes.init(); + await waitForRiskScoresToBePresent({ es, log, scoreCount: 20 }); + const riskScores = await readRiskScores(es); + + expect(riskScores.length).to.be.greaterThan(0); + const assetCriticalityLevels = riskScores.map( + (riskScore) => riskScore.host?.risk.criticality_level + ); + const assetCriticalityModifiers = riskScores.map( + (riskScore) => riskScore.host?.risk.criticality_modifier + ); + + expect(assetCriticalityLevels).to.contain('very_important'); + expect(assetCriticalityModifiers).to.contain(2); + + const scoreWithCriticality = riskScores.find((score) => score.host?.name === 'host-1'); + expect(normalizeScores([scoreWithCriticality!])).to.eql([ + { + id_field: 'host.name', + id_value: 'host-1', + criticality_level: 'very_important', + criticality_modifier: 2, + calculated_level: 'Moderate', + calculated_score: 79.81345973382406, + calculated_score_norm: 46.809565696393314, + category_1_count: 10, + category_1_score: 30.55645472198471, + }, + ]); + }); }); }); }); diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/asset_criticality.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/asset_criticality.ts index b745d1d0f705f..6abcb908f6083 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/asset_criticality.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/asset_criticality.ts @@ -15,10 +15,11 @@ import { ASSET_CRITICALITY_URL, ASSET_CRITICALITY_PRIVILEGES_URL, } from '@kbn/security-solution-plugin/common/constants'; +import type { AssetCriticalityRecord } from '@kbn/security-solution-plugin/common/api/entity_analytics'; import type { Client } from '@elastic/elasticsearch'; import type { ToolingLog } from '@kbn/tooling-log'; import querystring from 'querystring'; -import { routeWithNamespace } from '../../detections_response/utils'; +import { routeWithNamespace, waitFor } from '../../detections_response/utils'; export const getAssetCriticalityIndex = (namespace?: string) => `.asset-criticality.asset-criticality-${namespace ?? 'default'}`; @@ -123,3 +124,51 @@ export const assetCriticalityRouteHelpersFactoryNoAuth = ( .send() .expect(200), }); + +/** + * Function to read asset criticality records from ES. By default, it reads from the asset criticality index in the default space, but this can be overridden with the + * `index` parameter. + * + * @param {string[]} index - the index or indices to read criticality from. + * @param {number} size - the size parameter of the query + */ +export const readAssetCriticality = async ( + es: Client, + index: string[] = [getAssetCriticalityIndex()], + size: number = 1000 +): Promise => { + const results = await es.search({ + index, + size, + }); + return results.hits.hits.map((hit) => hit._source as AssetCriticalityRecord); +}; + +/** + * Function to read asset criticality from ES and wait for them to be + * present/readable. By default, it reads from the asset criticality index in the + * default space, but this can be overridden with the `index` parameter. + * + * @param {string[]} index - the index or indices to read asset criticality from. + * @param {number} docCount - the number of asset criticality docs to wait for. Defaults to 1. + */ +export const waitForAssetCriticalityToBePresent = async ({ + es, + log, + index = [getAssetCriticalityIndex()], + docCount = 1, +}: { + es: Client; + log: ToolingLog; + index?: string[]; + docCount?: number; +}): Promise => { + await waitFor( + async () => { + const criticalities = await readAssetCriticality(es, index, docCount + 10); + return criticalities.length >= docCount; + }, + 'waitForAssetCriticalityToBePresent', + log + ); +}; diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/index.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/index.ts index dacdf5052c912..7ff049a997da1 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/index.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/index.ts @@ -4,6 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ + export * from './risk_engine'; export * from './get_risk_engine_stats'; export * from './asset_criticality'; diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts index 5a29900f5e8d6..fb242e72bc898 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts @@ -37,11 +37,15 @@ import { } from '../../detections_response/utils'; const sanitizeScore = (score: Partial): Partial => { - delete score['@timestamp']; - delete score.inputs; - delete score.notes; - // delete score.category_1_score; - return score; + const { + '@timestamp': timestamp, + inputs, + notes, + category_2_count: cat2Count, + category_2_score: cat2Score, + ...rest + } = score; + return rest; }; export const sanitizeScores = (scores: Array>): Array> => From 94bdc0d5212412e41e8281a5235654546e2102cb Mon Sep 17 00:00:00 2001 From: Kevin Qualters <56408403+kqualters-elastic@users.noreply.github.com> Date: Thu, 4 Jan 2024 17:26:32 -0500 Subject: [PATCH 129/323] [Security Solution] [Timelines] Fix FilterManager being undefined when opening timeline from url (#171443) ## Summary Filter manager is not populated within redux if a user navigates to a url with timeline opened as the first step of entering the app. InitializeTimeline action is called, but the reducer just ignores any params at all if the initialize flag is set to true. Since this is only used in 2 places, and only 1 of which has an argument other than timelineId, I think this solution is fine. Should only ever result in fixing this bug it seems, as filterManager is either created anew or comes directly from the model. Issue: https://github.com/elastic/kibana/issues/171437 ### Checklist - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --- .../public/timelines/store/helpers.ts | 8 ++- .../investigations/timelines/filters.cy.ts | 52 +++++++++++++++++++ .../cypress/screens/timeline.ts | 6 +++ 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/filters.cy.ts diff --git a/x-pack/plugins/security_solution/public/timelines/store/helpers.ts b/x-pack/plugins/security_solution/public/timelines/store/helpers.ts index 3206bb96e89ad..456d716f529f5 100644 --- a/x-pack/plugins/security_solution/public/timelines/store/helpers.ts +++ b/x-pack/plugins/security_solution/public/timelines/store/helpers.ts @@ -1475,7 +1475,13 @@ export const setInitializeTimelineSettings = ({ initialized: true, }, } - : timelineById; + : { + ...timelineById, + [id]: { + ...timeline, + ...timelineSettingsProps, + }, + }; }; interface ApplyDeltaToTableColumnWidth { diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/filters.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/filters.cy.ts new file mode 100644 index 0000000000000..d87639a231f58 --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/filters.cy.ts @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { login } from '../../../tasks/login'; +import { visitWithTimeRange } from '../../../tasks/navigation'; +import { + createNewTimeline, + addNameAndDescriptionToTimeline, + populateTimeline, +} from '../../../tasks/timeline'; +import { openTimelineUsingToggle } from '../../../tasks/security_main'; +import { ALERTS_URL } from '../../../urls/navigation'; +import { getTimeline } from '../../../objects/timeline'; +import { + GET_TIMELINE_GRID_CELL, + TIMELINE_FILTER_FOR, + TIMELINE_FILTER_OUT, + TIMELINE_EVENT, + TIMELINE_FILTER_BADGE_ENABLED, +} from '../../../screens/timeline'; + +describe( + `timleine cell actions`, + { + tags: ['@ess'], + }, + () => { + beforeEach(() => { + login(); + visitWithTimeRange(ALERTS_URL); + openTimelineUsingToggle(); + createNewTimeline(); + addNameAndDescriptionToTimeline(getTimeline()); + populateTimeline(); + }); + it('filter in', () => { + cy.get(GET_TIMELINE_GRID_CELL('event.category')).trigger('mouseover'); + cy.get(TIMELINE_FILTER_FOR).should('be.visible').click(); + cy.get(TIMELINE_FILTER_BADGE_ENABLED).should('be.visible'); + }); + + it('filter out', () => { + cy.get(GET_TIMELINE_GRID_CELL('event.category')).trigger('mouseover'); + cy.get(TIMELINE_FILTER_OUT).should('be.visible').click(); + cy.get(TIMELINE_EVENT).should('not.exist'); + }); + } +); diff --git a/x-pack/test/security_solution_cypress/cypress/screens/timeline.ts b/x-pack/test/security_solution_cypress/cypress/screens/timeline.ts index b498d3d6bc32b..2794a111e94c2 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/timeline.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/timeline.ts @@ -284,6 +284,12 @@ export const HOVER_ACTIONS = { SHOW_TOP: '[data-test-subj=show-top-field]', }; +export const TIMELINE_FILTER_OUT = '[data-test-subj="filter-out-value"]'; + +export const TIMELINE_FILTER_FOR = '[data-test-subj="filter-for-value"]'; + +export const TIMELINE_FILTER_BADGE_ENABLED = '[data-test-subj~="filter-enabled"]'; + export const GET_TIMELINE_HEADER = (fieldName: string) => { return `[data-test-subj="timeline"] [data-test-subj="header-text-${fieldName}"]`; }; From 2fcbea2d7cff47e0911096c311bb63ce43036ad7 Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Thu, 4 Jan 2024 15:30:17 -0700 Subject: [PATCH 130/323] [geo_containment alert] replace alertFactory with alertsClient (#173867) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes https://github.com/elastic/kibana/issues/167321 PR does not provide any custom fields for payload because geo containment alert has very little usage and will be [disabled in serverless](https://github.com/elastic/kibana/pull/174121), with the goal of deprecating and removing geo containment alert in the future. --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Mike Côté --- .../geo_containment/executor.test.ts | 86 ++++++-------- .../rule_types/geo_containment/executor.ts | 18 ++- .../get_entities_and_generate_alerts.test.ts | 107 +++++++----------- .../lib/get_entities_and_generate_alerts.ts | 12 +- .../rule_types/geo_containment/rule_type.ts | 3 + 5 files changed, 97 insertions(+), 129 deletions(-) diff --git a/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/executor.test.ts b/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/executor.test.ts index cec83d2cf9e71..cb0606594c093 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/executor.test.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/executor.test.ts @@ -5,50 +5,16 @@ * 2.0. */ -import _ from 'lodash'; import { elasticsearchServiceMock } from '@kbn/core/server/mocks'; import { RuleExecutorServicesMock, alertsMock } from '@kbn/alerting-plugin/server/mocks'; import sampleAggsJsonResponse from './tests/es_sample_response.json'; import sampleShapesJsonResponse from './tests/es_sample_response_shapes.json'; import { executor } from './executor'; -import type { - GeoContainmentRuleParams, - GeoContainmentAlertInstanceState, - GeoContainmentAlertInstanceContext, -} from './types'; +import type { GeoContainmentRuleParams, GeoContainmentAlertInstanceContext } from './types'; -const alertFactory = (contextKeys: unknown[], testAlertActionArr: unknown[]) => ({ - create: (instanceId: string) => { - const alertInstance = alertsMock.createAlertFactory.create< - GeoContainmentAlertInstanceState, - GeoContainmentAlertInstanceContext - >(); - (alertInstance.scheduleActions as jest.Mock).mockImplementation( - (actionGroupId: string, context?: GeoContainmentAlertInstanceContext) => { - // Check subset of alert for comparison to expected results - // @ts-ignore - const contextSubset = _.pickBy(context, (v, k) => contextKeys.includes(k)); - testAlertActionArr.push({ - actionGroupId, - instanceId, - context: contextSubset, - }); - } - ); - return alertInstance; - }, - alertLimit: { - getValue: () => 1000, - setLimitReached: () => {}, - }, - done: () => ({ getRecoveredAlerts: () => [] }), -}); - -describe('getGeoContainmentExecutor', () => { - // Params needed for all tests - const expectedAlertResults = [ +describe('executor', () => { + const expectedAlerts = [ { - actionGroupId: 'Tracked entity contained', context: { containingBoundaryId: 'kFATGXkBsFLYN2Tj6AAk', entityDocumentId: 'ZVBoGXkBsFLYN2Tj1wmV', @@ -58,7 +24,6 @@ describe('getGeoContainmentExecutor', () => { instanceId: '0-kFATGXkBsFLYN2Tj6AAk', }, { - actionGroupId: 'Tracked entity contained', context: { containingBoundaryId: 'kFATGXkBsFLYN2Tj6AAk', entityDocumentId: 'ZlBoGXkBsFLYN2Tj1wmV', @@ -68,7 +33,7 @@ describe('getGeoContainmentExecutor', () => { instanceId: '1-kFATGXkBsFLYN2Tj6AAk', }, ]; - const testAlertActionArr: unknown[] = []; + const previousStartedAt = new Date('2021-04-27T16:56:11.923Z'); const startedAt = new Date('2021-04-29T16:56:11.923Z'); const geoContainmentParams: GeoContainmentRuleParams = { @@ -99,7 +64,6 @@ describe('getGeoContainmentExecutor', () => { // Boundary test mocks const boundaryCall = jest.fn(); const esAggCall = jest.fn(); - const contextKeys = Object.keys(expectedAlertResults[0].context); const esClient = elasticsearchServiceMock.createElasticsearchClient(); // @ts-ignore incomplete return type esClient.search.mockResponseImplementation(({ index }) => { @@ -112,10 +76,26 @@ describe('getGeoContainmentExecutor', () => { } }); - const alertServicesWithSearchMock: RuleExecutorServicesMock = { + const alerts: unknown[] = []; + const servicesMock: RuleExecutorServicesMock = { ...alertsMock.createRuleExecutorServices(), // @ts-ignore - alertFactory: alertFactory(contextKeys, testAlertActionArr), + alertsClient: { + getRecoveredAlerts: () => { + return []; + }, + report: ({ id, context }: { id: string; context: GeoContainmentAlertInstanceContext }) => { + alerts.push({ + context: { + containingBoundaryId: context.containingBoundaryId, + entityDocumentId: context.entityDocumentId, + entityId: context.entityId, + entityLocation: context.entityLocation, + }, + instanceId: id, + }); + }, + }, // @ts-ignore scopedClusterClient: { asCurrentUser: esClient, @@ -124,7 +104,7 @@ describe('getGeoContainmentExecutor', () => { beforeEach(() => { jest.clearAllMocks(); - testAlertActionArr.length = 0; + alerts.length = 0; }); test('should query for shapes if state does not contain shapes', async () => { @@ -132,7 +112,7 @@ describe('getGeoContainmentExecutor', () => { previousStartedAt, startedAt, // @ts-ignore - services: alertServicesWithSearchMock, + services: servicesMock, params: geoContainmentParams, // @ts-ignore rule: { @@ -145,7 +125,7 @@ describe('getGeoContainmentExecutor', () => { expect(boundaryCall.mock.calls.length).toBe(1); expect(esAggCall.mock.calls.length).toBe(1); } - expect(testAlertActionArr).toMatchObject(expectedAlertResults); + expect(alerts).toMatchObject(expectedAlerts); }); test('should query for shapes if boundaries request meta changes', async () => { @@ -153,7 +133,7 @@ describe('getGeoContainmentExecutor', () => { previousStartedAt, startedAt, // @ts-ignore - services: alertServicesWithSearchMock, + services: servicesMock, params: geoContainmentParams, // @ts-ignore rule: { @@ -172,7 +152,7 @@ describe('getGeoContainmentExecutor', () => { expect(boundaryCall.mock.calls.length).toBe(1); expect(esAggCall.mock.calls.length).toBe(1); } - expect(testAlertActionArr).toMatchObject(expectedAlertResults); + expect(alerts).toMatchObject(expectedAlerts); }); test('should not query for shapes if state contains shapes', async () => { @@ -180,7 +160,7 @@ describe('getGeoContainmentExecutor', () => { previousStartedAt, startedAt, // @ts-ignore - services: alertServicesWithSearchMock, + services: servicesMock, params: geoContainmentParams, // @ts-ignore rule: { @@ -192,7 +172,7 @@ describe('getGeoContainmentExecutor', () => { expect(boundaryCall.mock.calls.length).toBe(0); expect(esAggCall.mock.calls.length).toBe(1); } - expect(testAlertActionArr).toMatchObject(expectedAlertResults); + expect(alerts).toMatchObject(expectedAlerts); }); test('should carry through shapes filters in state to next call unmodified', async () => { @@ -200,7 +180,7 @@ describe('getGeoContainmentExecutor', () => { previousStartedAt, startedAt, // @ts-ignore - services: alertServicesWithSearchMock, + services: servicesMock, params: geoContainmentParams, // @ts-ignore rule: { @@ -211,7 +191,7 @@ describe('getGeoContainmentExecutor', () => { if (executionResult && executionResult.state.shapesFilters) { expect(executionResult.state.shapesFilters).toEqual(geoContainmentState.shapesFilters); } - expect(testAlertActionArr).toMatchObject(expectedAlertResults); + expect(alerts).toMatchObject(expectedAlerts); }); test('should return previous locations map', async () => { @@ -239,7 +219,7 @@ describe('getGeoContainmentExecutor', () => { previousStartedAt, startedAt, // @ts-ignore - services: alertServicesWithSearchMock, + services: servicesMock, params: geoContainmentParams, // @ts-ignore rule: { @@ -250,6 +230,6 @@ describe('getGeoContainmentExecutor', () => { if (executionResult && executionResult.state.prevLocationMap) { expect(executionResult.state.prevLocationMap).toEqual(expectedPrevLocationMap); } - expect(testAlertActionArr).toMatchObject(expectedAlertResults); + expect(alerts).toMatchObject(expectedAlerts); }); }); diff --git a/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/executor.ts b/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/executor.ts index e7681eb4dee2d..b6462aec32497 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/executor.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/executor.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { AlertsClientError } from '@kbn/alerting-plugin/server'; import { RuleExecutorOptions } from '../../types'; import { canSkipBoundariesFetch, @@ -45,6 +46,11 @@ export async function executor({ boundaryNameField: params.boundaryNameField, boundaryIndexQuery: params.boundaryIndexQuery, }; + + if (!services.alertsClient) { + throw new AlertsClientError(); + } + const { shapesFilters, shapesIdsNamesMap } = state.shapesFilters && canSkipBoundariesFetch(boundariesRequestMeta, state.boundariesRequestMeta) @@ -82,14 +88,13 @@ export async function executor({ const { activeEntities, inactiveEntities } = getEntitiesAndGenerateAlerts( prevLocationMap, currLocationMap, - services.alertFactory, + services.alertsClient, shapesIdsNamesMap, windowEnd ); - const { getRecoveredAlerts } = services.alertFactory.done(); - for (const recoveredAlert of getRecoveredAlerts()) { - const recoveredAlertId = recoveredAlert.getId(); + for (const recoveredAlert of services.alertsClient.getRecoveredAlerts()) { + const recoveredAlertId = recoveredAlert.alert.getId(); try { const context = getRecoveredAlertContext({ alertId: recoveredAlertId, @@ -98,7 +103,10 @@ export async function executor({ windowEnd, }); if (context) { - recoveredAlert.setContext(context); + services.alertsClient?.setAlertData({ + id: recoveredAlertId, + context, + }); } } catch (e) { logger.warn(`Unable to set alert context for recovered alert, error: ${e.message}`); diff --git a/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/lib/get_entities_and_generate_alerts.test.ts b/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/lib/get_entities_and_generate_alerts.test.ts index 339e53b03056b..c8e8dd8faa4d5 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/lib/get_entities_and_generate_alerts.test.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/lib/get_entities_and_generate_alerts.test.ts @@ -5,47 +5,28 @@ * 2.0. */ -import _ from 'lodash'; -import { alertsMock } from '@kbn/alerting-plugin/server/mocks'; import { getEntitiesAndGenerateAlerts } from './get_entities_and_generate_alerts'; import { OTHER_CATEGORY } from '../constants'; -import type { - GeoContainmentAlertInstanceState, - GeoContainmentAlertInstanceContext, -} from '../types'; - -const alertFactory = (contextKeys: unknown[], testAlertActionArr: unknown[]) => ({ - create: (instanceId: string) => { - const alertInstance = alertsMock.createAlertFactory.create< - GeoContainmentAlertInstanceState, - GeoContainmentAlertInstanceContext - >(); - (alertInstance.scheduleActions as jest.Mock).mockImplementation( - (actionGroupId: string, context?: GeoContainmentAlertInstanceContext) => { - // Check subset of alert for comparison to expected results - // @ts-ignore - const contextSubset = _.pickBy(context, (v, k) => contextKeys.includes(k)); - testAlertActionArr.push({ - actionGroupId, - instanceId, - context: contextSubset, - }); - } - ); - return alertInstance; - }, - alertLimit: { - getValue: () => 1000, - setLimitReached: () => {}, - }, - done: () => ({ getRecoveredAlerts: () => [] }), -}); +import type { GeoContainmentAlertInstanceContext } from '../types'; describe('getEntitiesAndGenerateAlerts', () => { - const testAlertActionArr: unknown[] = []; + const alerts: unknown[] = []; + const mockAlertsClient = { + report: ({ id, context }: { id: string; context: GeoContainmentAlertInstanceContext }) => { + alerts.push({ + context: { + containingBoundaryId: context.containingBoundaryId, + entityDocumentId: context.entityDocumentId, + entityId: context.entityId, + entityLocation: context.entityLocation, + }, + instanceId: id, + }); + }, + } as any; // eslint-disable-line @typescript-eslint/no-explicit-any + beforeEach(() => { - jest.clearAllMocks(); - testAlertActionArr.length = 0; + alerts.length = 0; }); const currLocationMap = new Map([ @@ -87,9 +68,8 @@ describe('getEntitiesAndGenerateAlerts', () => { ], ]); - const expectedAlertResults = [ + const expectedAlerts = [ { - actionGroupId: 'Tracked entity contained', context: { containingBoundaryId: '123', entityDocumentId: 'docId1', @@ -99,7 +79,6 @@ describe('getEntitiesAndGenerateAlerts', () => { instanceId: 'a-123', }, { - actionGroupId: 'Tracked entity contained', context: { containingBoundaryId: '456', entityDocumentId: 'docId2', @@ -109,7 +88,6 @@ describe('getEntitiesAndGenerateAlerts', () => { instanceId: 'b-456', }, { - actionGroupId: 'Tracked entity contained', context: { containingBoundaryId: '789', entityDocumentId: 'docId3', @@ -119,7 +97,6 @@ describe('getEntitiesAndGenerateAlerts', () => { instanceId: 'c-789', }, ]; - const contextKeys = Object.keys(expectedAlertResults[0].context); const emptyShapesIdsNamesMap = {}; const currentDateTime = new Date(); @@ -129,12 +106,12 @@ describe('getEntitiesAndGenerateAlerts', () => { const { activeEntities } = getEntitiesAndGenerateAlerts( emptyPrevLocationMap, currLocationMap, - alertFactory(contextKeys, testAlertActionArr), + mockAlertsClient, emptyShapesIdsNamesMap, currentDateTime ); expect(activeEntities).toEqual(currLocationMap); - expect(testAlertActionArr).toMatchObject(expectedAlertResults); + expect(alerts).toMatchObject(expectedAlerts); }); test('should overwrite older identical entity entries', () => { @@ -155,12 +132,12 @@ describe('getEntitiesAndGenerateAlerts', () => { const { activeEntities } = getEntitiesAndGenerateAlerts( prevLocationMapWithIdenticalEntityEntry, currLocationMap, - alertFactory(contextKeys, testAlertActionArr), + mockAlertsClient, emptyShapesIdsNamesMap, currentDateTime ); expect(activeEntities).toEqual(currLocationMap); - expect(testAlertActionArr).toMatchObject(expectedAlertResults); + expect(alerts).toMatchObject(expectedAlerts); }); test('should preserve older non-identical entity entries', () => { @@ -178,30 +155,28 @@ describe('getEntitiesAndGenerateAlerts', () => { ], ], ]); - const expectedAlertResultsPlusD = [ - { - actionGroupId: 'Tracked entity contained', - context: { - containingBoundaryId: '999', - entityDocumentId: 'docId7', - entityId: 'd', - entityLocation: 'POINT (0 0)', - }, - instanceId: 'd-999', - }, - ...expectedAlertResults, - ]; const { activeEntities } = getEntitiesAndGenerateAlerts( prevLocationMapWithNonIdenticalEntityEntry, currLocationMap, - alertFactory(contextKeys, testAlertActionArr), + mockAlertsClient, emptyShapesIdsNamesMap, currentDateTime ); expect(activeEntities).not.toEqual(currLocationMap); expect(activeEntities.has('d')).toBeTruthy(); - expect(testAlertActionArr).toMatchObject(expectedAlertResultsPlusD); + expect(alerts).toMatchObject([ + { + context: { + containingBoundaryId: '999', + entityDocumentId: 'docId7', + entityId: 'd', + entityLocation: 'POINT (0 0)', + }, + instanceId: 'd-999', + }, + ...expectedAlerts, + ]); }); test('should remove "other" entries and schedule the expected number of actions', () => { @@ -219,7 +194,7 @@ describe('getEntitiesAndGenerateAlerts', () => { const { activeEntities, inactiveEntities } = getEntitiesAndGenerateAlerts( emptyPrevLocationMap, currLocationMapWithOther, - alertFactory(contextKeys, testAlertActionArr), + mockAlertsClient, emptyShapesIdsNamesMap, currentDateTime ); @@ -240,7 +215,7 @@ describe('getEntitiesAndGenerateAlerts', () => { ], ]) ); - expect(testAlertActionArr).toMatchObject(expectedAlertResults); + expect(alerts).toMatchObject(expectedAlerts); }); test('should generate multiple alerts per entity if found in multiple shapes in interval', () => { @@ -271,7 +246,7 @@ describe('getEntitiesAndGenerateAlerts', () => { getEntitiesAndGenerateAlerts( emptyPrevLocationMap, currLocationMapWithThreeMore, - alertFactory(contextKeys, testAlertActionArr), + mockAlertsClient, emptyShapesIdsNamesMap, currentDateTime ); @@ -279,7 +254,7 @@ describe('getEntitiesAndGenerateAlerts', () => { currLocationMapWithThreeMore.forEach((v) => { numEntitiesInShapes += v.length; }); - expect(testAlertActionArr.length).toEqual(numEntitiesInShapes); + expect(alerts.length).toEqual(numEntitiesInShapes); }); test('should not return entity as active entry if most recent location is "other"', () => { @@ -311,7 +286,7 @@ describe('getEntitiesAndGenerateAlerts', () => { const { activeEntities } = getEntitiesAndGenerateAlerts( emptyPrevLocationMap, currLocationMapWithOther, - alertFactory(contextKeys, testAlertActionArr), + mockAlertsClient, emptyShapesIdsNamesMap, currentDateTime ); @@ -346,7 +321,7 @@ describe('getEntitiesAndGenerateAlerts', () => { const { activeEntities } = getEntitiesAndGenerateAlerts( emptyPrevLocationMap, currLocationMapWithOther, - alertFactory(contextKeys, testAlertActionArr), + mockAlertsClient, emptyShapesIdsNamesMap, currentDateTime ); diff --git a/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/lib/get_entities_and_generate_alerts.ts b/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/lib/get_entities_and_generate_alerts.ts index c0d372e08dced..5ec7fcedb5eed 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/lib/get_entities_and_generate_alerts.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/lib/get_entities_and_generate_alerts.ts @@ -17,11 +17,11 @@ import { getAlertId, getContainedAlertContext } from './alert_context'; export function getEntitiesAndGenerateAlerts( prevLocationMap: Map, currLocationMap: Map, - alertFactory: RuleExecutorServices< + alertsClient: RuleExecutorServices< GeoContainmentAlertInstanceState, GeoContainmentAlertInstanceContext, typeof ActionGroupId - >['alertFactory'], + >['alertsClient'], shapesIdsNamesMap: Record, windowEnd: Date ): { @@ -43,9 +43,11 @@ export function getEntitiesAndGenerateAlerts( shapesIdsNamesMap, windowEnd, }); - alertFactory - .create(getAlertId(entityName, context.containingBoundaryName)) - .scheduleActions(ActionGroupId, context); + alertsClient!.report({ + id: getAlertId(entityName, context.containingBoundaryName), + actionGroup: ActionGroupId, + context, + }); } }); diff --git a/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/rule_type.ts b/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/rule_type.ts index 832e6499dc02b..f7ea3b3601453 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/rule_type.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/rule_type.ts @@ -17,6 +17,7 @@ import type { } from './types'; import { executor } from './executor'; import { ActionGroupId, RecoveryActionGroupId, GEO_CONTAINMENT_ID } from './constants'; +import { STACK_ALERTS_AAD_CONFIG } from '../constants'; const actionVariables = { context: [ @@ -200,5 +201,7 @@ export function getRuleType(): GeoContainmentRuleType { return injectEntityAndBoundaryIds(params, references); }, }, + // @ts-ignore + alerts: STACK_ALERTS_AAD_CONFIG, }; } From 178583c11dcdbb5dbe0a09db4060fdbe92b8dd6a Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Fri, 5 Jan 2024 01:00:18 -0500 Subject: [PATCH 131/323] [api-docs] 2024-01-05 Daily api_docs build (#174318) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/573 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- .../ai_assistant_management_observability.mdx | 2 +- .../ai_assistant_management_selection.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.devdocs.json | 12 - api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/apm_data_access.mdx | 2 +- api_docs/asset_manager.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_experiments.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/dataset_quality.mdx | 2 +- api_docs/deprecations_by_api.mdx | 4 +- api_docs/deprecations_by_plugin.mdx | 3 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/elastic_assistant.mdx | 2 +- api_docs/embeddable.devdocs.json | 107 - api_docs/embeddable.mdx | 4 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_annotation_listing.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/ingest_pipelines.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_actions_types.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- .../kbn_alerting_api_integration_helpers.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerting_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- api_docs/kbn_analytics_collection_utils.mdx | 2 +- ..._analytics_shippers_elastic_v3_browser.mdx | 2 +- ...n_analytics_shippers_elastic_v3_common.mdx | 2 +- ...n_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_analytics_shippers_gainsight.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_bfetch_error.mdx | 2 +- api_docs/kbn_calculate_auto.mdx | 2 +- .../kbn_calculate_width_from_char_count.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_owners.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- .../kbn_content_management_content_editor.mdx | 2 +- ...tent_management_tabbed_table_list_view.mdx | 2 +- ...kbn_content_management_table_list_view.mdx | 2 +- ...tent_management_table_list_view_common.mdx | 2 +- ...ntent_management_table_list_view_table.mdx | 2 +- api_docs/kbn_content_management_utils.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- .../kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- .../kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- .../kbn_core_application_browser_internal.mdx | 2 +- .../kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- .../kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- .../kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- ..._core_custom_branding_browser_internal.mdx | 2 +- ...kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- ...n_core_custom_branding_server_internal.mdx | 2 +- .../kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- ...kbn_core_deprecations_browser_internal.mdx | 2 +- .../kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- .../kbn_core_deprecations_server_internal.mdx | 2 +- .../kbn_core_deprecations_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- ...e_elasticsearch_client_server_internal.mdx | 2 +- ...core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- ...kbn_core_elasticsearch_server_internal.mdx | 2 +- .../kbn_core_elasticsearch_server_mocks.mdx | 2 +- .../kbn_core_environment_server_internal.mdx | 2 +- .../kbn_core_environment_server_mocks.mdx | 2 +- .../kbn_core_execution_context_browser.mdx | 2 +- ...ore_execution_context_browser_internal.mdx | 2 +- ...n_core_execution_context_browser_mocks.mdx | 2 +- .../kbn_core_execution_context_common.mdx | 2 +- .../kbn_core_execution_context_server.mdx | 2 +- ...core_execution_context_server_internal.mdx | 2 +- ...bn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- .../kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- .../kbn_core_http_context_server_mocks.mdx | 2 +- ...re_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- ...bn_core_http_resources_server_internal.mdx | 2 +- .../kbn_core_http_resources_server_mocks.mdx | 2 +- .../kbn_core_http_router_server_internal.mdx | 2 +- .../kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- ...kbn_core_integrations_browser_internal.mdx | 2 +- .../kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- ...ore_metrics_collectors_server_internal.mdx | 2 +- ...n_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- ...bn_core_notifications_browser_internal.mdx | 2 +- .../kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- .../kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- .../kbn_core_plugins_contracts_browser.mdx | 2 +- .../kbn_core_plugins_contracts_server.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- .../kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- .../kbn_core_saved_objects_api_browser.mdx | 2 +- .../kbn_core_saved_objects_api_server.mdx | 2 +- ...bn_core_saved_objects_api_server_mocks.mdx | 2 +- ...ore_saved_objects_base_server_internal.mdx | 2 +- ...n_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- ...bn_core_saved_objects_browser_internal.mdx | 2 +- .../kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- ..._objects_import_export_server_internal.mdx | 2 +- ...ved_objects_import_export_server_mocks.mdx | 2 +- ...aved_objects_migration_server_internal.mdx | 2 +- ...e_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- ...kbn_core_saved_objects_server_internal.mdx | 2 +- .../kbn_core_saved_objects_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- ...core_test_helpers_deprecations_getters.mdx | 2 +- ...n_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- .../kbn_core_test_helpers_model_versions.mdx | 2 +- ...n_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- .../kbn_core_ui_settings_browser_internal.mdx | 2 +- .../kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- .../kbn_core_ui_settings_server_internal.mdx | 2 +- .../kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- .../kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- ...kbn_core_user_settings_server_internal.mdx | 2 +- .../kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_custom_icons.mdx | 2 +- api_docs/kbn_custom_integrations.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_data_service.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_discover_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_agent_utils.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_elastic_assistant_common.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_event_annotation_common.mdx | 2 +- api_docs/kbn_event_annotation_components.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_field_utils.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- .../kbn_ftr_common_functional_services.mdx | 2 +- ...common_functional_ui_services.devdocs.json | 10780 +++++++++++++++- .../kbn_ftr_common_functional_ui_services.mdx | 13 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- .../kbn_language_documentation_popover.mdx | 2 +- api_docs/kbn_lens_embeddable_utils.mdx | 2 +- api_docs/kbn_lens_formula_docs.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_management_cards_navigation.mdx | 2 +- .../kbn_management_settings_application.mdx | 2 +- ...ent_settings_components_field_category.mdx | 2 +- ...gement_settings_components_field_input.mdx | 2 +- ...nagement_settings_components_field_row.mdx | 2 +- ...bn_management_settings_components_form.mdx | 2 +- ...n_management_settings_field_definition.mdx | 2 +- api_docs/kbn_management_settings_ids.mdx | 2 +- ...n_management_settings_section_registry.mdx | 2 +- api_docs/kbn_management_settings_types.mdx | 2 +- .../kbn_management_settings_utilities.mdx | 2 +- api_docs/kbn_management_storybook_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_category_validator.mdx | 2 +- api_docs/kbn_ml_chi2test.mdx | 2 +- .../kbn_ml_data_frame_analytics_utils.mdx | 2 +- api_docs/kbn_ml_data_grid.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_date_utils.mdx | 2 +- api_docs/kbn_ml_error_utils.mdx | 2 +- api_docs/kbn_ml_in_memory_table.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_kibana_theme.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_ui_actions.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- .../kbn_observability_alerting_test_data.mdx | 2 +- ...ility_get_padded_alert_time_range_util.mdx | 2 +- api_docs/kbn_openapi_bundler.mdx | 2 +- api_docs/kbn_openapi_generator.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- api_docs/kbn_panel_loader.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_profiling_utils.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_react_kibana_context_common.mdx | 2 +- api_docs/kbn_react_kibana_context_render.mdx | 2 +- api_docs/kbn_react_kibana_context_root.mdx | 2 +- api_docs/kbn_react_kibana_context_styled.mdx | 2 +- api_docs/kbn_react_kibana_context_theme.mdx | 2 +- api_docs/kbn_react_kibana_mount.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_reporting_common.mdx | 2 +- api_docs/kbn_reporting_export_types_csv.mdx | 2 +- .../kbn_reporting_export_types_csv_common.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf.mdx | 2 +- .../kbn_reporting_export_types_pdf_common.mdx | 2 +- api_docs/kbn_reporting_export_types_png.mdx | 2 +- .../kbn_reporting_export_types_png_common.mdx | 2 +- api_docs/kbn_reporting_mocks_server.mdx | 2 +- api_docs/kbn_reporting_public.mdx | 2 +- api_docs/kbn_reporting_server.mdx | 2 +- api_docs/kbn_resizable_layout.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_router_utils.mdx | 2 +- api_docs/kbn_rrule.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_search_api_panels.mdx | 2 +- api_docs/kbn_search_connectors.mdx | 2 +- api_docs/kbn_search_errors.mdx | 2 +- api_docs/kbn_search_index_documents.mdx | 2 +- api_docs/kbn_search_response_warnings.mdx | 2 +- api_docs/kbn_security_plugin_types_common.mdx | 2 +- api_docs/kbn_security_plugin_types_public.mdx | 2 +- api_docs/kbn_security_plugin_types_server.mdx | 2 +- api_docs/kbn_security_solution_features.mdx | 2 +- api_docs/kbn_security_solution_navigation.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- ...kbn_security_solution_storybook_config.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- ...ritysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_grouping.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- ..._securitysolution_io_ts_alerting_types.mdx | 2 +- .../kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- .../kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_serverless_common_settings.mdx | 2 +- .../kbn_serverless_observability_settings.mdx | 2 +- api_docs/kbn_serverless_project_switcher.mdx | 2 +- api_docs/kbn_serverless_search_settings.mdx | 2 +- api_docs/kbn_serverless_security_settings.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- .../kbn_shared_ux_button_exit_full_screen.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_chrome_navigation.mdx | 2 +- api_docs/kbn_shared_ux_error_boundary.mdx | 2 +- api_docs/kbn_shared_ux_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- .../kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- .../kbn_shared_ux_page_analytics_no_data.mdx | 2 +- ...shared_ux_page_analytics_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_no_data.mdx | 2 +- ...bn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_template.mdx | 2 +- ...n_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- .../kbn_shared_ux_page_no_data_config.mdx | 2 +- ...bn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- .../kbn_shared_ux_prompt_no_data_views.mdx | 2 +- ...n_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_text_based_editor.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_triggers_actions_ui_types.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_unified_data_table.mdx | 2 +- api_docs/kbn_unified_doc_viewer.mdx | 2 +- api_docs/kbn_unified_field_list.mdx | 2 +- api_docs/kbn_unsaved_changes_badge.mdx | 2 +- api_docs/kbn_url_state.mdx | 2 +- api_docs/kbn_use_tracked_promise.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kbn_visualization_ui_components.mdx | 2 +- api_docs/kbn_visualization_utils.mdx | 2 +- api_docs/kbn_xstate_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kbn_zod_helpers.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/links.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/log_explorer.mdx | 2 +- api_docs/logs_shared.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/metrics_data_access.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/mock_idp_plugin.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/no_data_page.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/observability_a_i_assistant.mdx | 2 +- api_docs/observability_log_explorer.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/painless_lab.mdx | 2 +- api_docs/plugin_directory.mdx | 8 +- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/profiling_data_access.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.devdocs.json | 14 +- api_docs/security_solution.mdx | 2 +- api_docs/security_solution_ess.mdx | 2 +- api_docs/security_solution_serverless.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/text_based_languages.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_doc_viewer.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/uptime.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 641 files changed, 11420 insertions(+), 789 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 175c79c8edd8f..9b6fc4e409929 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2024-01-04 +date: 2024-01-05 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 67938b9ee86c8..08df2353949dd 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_observability.mdx b/api_docs/ai_assistant_management_observability.mdx index 568c9569b3e52..c63f25666847b 100644 --- a/api_docs/ai_assistant_management_observability.mdx +++ b/api_docs/ai_assistant_management_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementObservability title: "aiAssistantManagementObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementObservability plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementObservability'] --- import aiAssistantManagementObservabilityObj from './ai_assistant_management_observability.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index ce9a17f1097c9..b60876a8b2d03 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index efe4742f812a6..15fa9e290efd9 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.devdocs.json b/api_docs/alerting.devdocs.json index 5fd8e35e631a9..1c8c1df0579bf 100644 --- a/api_docs/alerting.devdocs.json +++ b/api_docs/alerting.devdocs.json @@ -3573,18 +3573,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts" }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/server/rule_types/geo_containment/lib/get_entities_and_generate_alerts.ts" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/server/rule_types/geo_containment/executor.ts" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/server/rule_types/geo_containment/executor.ts" - }, { "plugin": "synthetics", "path": "x-pack/plugins/synthetics/server/alert_rules/common.ts" diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index e38c25b1345d7..28e361099ddaa 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 97004593fa23a..8a11d4b792ef3 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index 0967e55be0f9f..486a985442330 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index 1cd598a4a0787..3aa9b422a8787 100644 --- a/api_docs/asset_manager.mdx +++ b/api_docs/asset_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetManager title: "assetManager" image: https://source.unsplash.com/400x175/?github description: API docs for the assetManager plugin -date: 2024-01-04 +date: 2024-01-05 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 fcfe454cd2efb..933a72cbfb56f 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2024-01-04 +date: 2024-01-05 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 42b81bc4929d3..08752e5f08ccf 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github description: API docs for the bfetch plugin -date: 2024-01-04 +date: 2024-01-05 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 569b7601fc2e4..789f5a2e2ad18 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index b3d7095d46904..50dee46bbc175 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 1b368f3d45354..904d7ad0d6eae 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2024-01-04 +date: 2024-01-05 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 1b9f49f8192d6..de6eb53830687 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index 2f280ede33377..f8df5d8b1d7fc 100644 --- a/api_docs/cloud_data_migration.mdx +++ b/api_docs/cloud_data_migration.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration title: "cloudDataMigration" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDataMigration plugin -date: 2024-01-04 +date: 2024-01-05 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 e5983addb5003..a3e3efcff6aa3 100644 --- a/api_docs/cloud_defend.mdx +++ b/api_docs/cloud_defend.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend title: "cloudDefend" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDefend plugin -date: 2024-01-04 +date: 2024-01-05 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 6974034289448..fa3d2ba58b0c0 100644 --- a/api_docs/cloud_experiments.mdx +++ b/api_docs/cloud_experiments.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments title: "cloudExperiments" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudExperiments plugin -date: 2024-01-04 +date: 2024-01-05 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 28df21b79fb93..884584688fcdf 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2024-01-04 +date: 2024-01-05 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 9da7224fcc9dc..1b98439c1e0d5 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2024-01-04 +date: 2024-01-05 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 644a576b9a31b..f9dba5f904033 100644 --- a/api_docs/content_management.mdx +++ b/api_docs/content_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement title: "contentManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the contentManagement plugin -date: 2024-01-04 +date: 2024-01-05 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 6d149d7f848d3..6dfd5cfbce66f 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2024-01-04 +date: 2024-01-05 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 6c513a57370b2..066b2ad67f52a 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2024-01-04 +date: 2024-01-05 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 8b12f4b0b3825..3aaf1a73398e3 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2024-01-04 +date: 2024-01-05 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 ceed4cf64c766..cf0fbc962179b 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 59da5a91e2c55..908a26ac7ca09 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 57b16fdff130c..e8ed44d73684f 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 62cd1bbac7289..14d4d5b20d10d 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 299c8ec4f418a..482b412c91fcc 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2024-01-04 +date: 2024-01-05 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 426a400c774fd..75fc42ef61f62 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2024-01-04 +date: 2024-01-05 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 d6991202136d4..6e49fa6c26ff0 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index a0cdcce02e887..f8ac9c9b24ca5 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index bacd296a40466..d27868ff533f8 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index 79815bf40637e..51c627244fdc7 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 4ce5183771c88..b5602a70aa9a1 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -17,7 +17,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Referencing plugin(s) | Remove By | | ---------------|-----------|-----------| | | ml, stackAlerts | - | -| | ruleRegistry, observability, ml, infra, monitoring, securitySolution, stackAlerts, synthetics, transform, uptime | - | +| | ruleRegistry, observability, ml, infra, monitoring, securitySolution, synthetics, transform, uptime | - | | | share, uiActions, guidedOnboarding, home, serverless, management, spaces, savedObjects, indexManagement, visualizations, dashboard, savedObjectsTagging, expressionXY, lens, expressionMetricVis, expressionGauge, security, alerting, triggersActionsUi, cases, aiops, advancedSettings, licenseManagement, maps, dataVisualizer, ml, exploratoryView, fleet, metricsDataAccess, osquery, ingestPipelines, profiling, apm, expressionImage, expressionMetric, expressionError, expressionRevealImage, expressionRepeatImage, expressionShape, crossClusterReplication, graph, grokdebugger, indexLifecycleManagement, infra, logstash, monitoring, observabilityOnboarding, devTools, painlessLab, remoteClusters, rollup, searchprofiler, newsfeed, securitySolution, snapshotRestore, synthetics, transform, upgradeAssistant, uptime, ux, watcher, cloudDataMigration, console, filesManagement, kibanaOverview, visDefaultEditor, expressionHeatmap, expressionLegacyMetricVis, expressionPartitionVis, expressionTagcloud, visTypeTable, visTypeTimelion, visTypeTimeseries, visTypeVega, visTypeVislib | - | | | encryptedSavedObjects, actions, data, ml, logstash, securitySolution, cloudChat | - | | | actions, ml, savedObjectsTagging, enterpriseSearch | - | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index b55449facaff7..fb5eb527d5e65 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -1419,7 +1419,6 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/stack_alerts/public/rule_types/es_query/index.ts#:~:text=registerNavigation), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/stack_alerts/public/rule_types/es_query/index.ts#:~:text=registerNavigation), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/stack_alerts/public/rule_types/es_query/index.ts#:~:text=registerNavigation), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/stack_alerts/public/rule_types/es_query/index.ts#:~:text=registerNavigation), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/stack_alerts/public/rule_types/es_query/index.ts#:~:text=registerNavigation) | - | -| | [get_entities_and_generate_alerts.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/lib/get_entities_and_generate_alerts.ts#:~:text=alertFactory), [executor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/executor.ts#:~:text=alertFactory), [executor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/stack_alerts/server/rule_types/geo_containment/executor.ts#:~:text=alertFactory) | - | | | [fetch_search_source_query.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_search_source_query.ts#:~:text=fetch), [rule_type.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.test.ts#:~:text=fetch), [rule_type.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/stack_alerts/server/rule_types/es_query/rule_type.test.ts#:~:text=fetch) | - | | | [data_view_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/stack_alerts/public/rule_types/geo_containment/rule_form/data_view_select.tsx#:~:text=indexPatterns), [boundary_form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/stack_alerts/public/rule_types/geo_containment/rule_form/boundary_form.tsx#:~:text=indexPatterns), [boundary_form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/stack_alerts/public/rule_types/geo_containment/rule_form/boundary_form.tsx#:~:text=indexPatterns), [entity_form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/stack_alerts/public/rule_types/geo_containment/rule_form/entity_form.tsx#:~:text=indexPatterns), [entity_form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/stack_alerts/public/rule_types/geo_containment/rule_form/entity_form.tsx#:~:text=indexPatterns) | - | | | [expression.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/stack_alerts/public/rule_types/threshold/expression.tsx#:~:text=fieldFormats) | - | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 5c49d1c2111f5..50a0f24b90d18 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index c34d797770737..2eb27ed7d537f 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2024-01-04 +date: 2024-01-05 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 47dfbf70d346e..0401920b1678b 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2024-01-04 +date: 2024-01-05 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 caa873b92b456..8d3d79e298cbe 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2024-01-04 +date: 2024-01-05 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 49056bd1bf759..821e5c3e07aa1 100644 --- a/api_docs/ecs_data_quality_dashboard.mdx +++ b/api_docs/ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard title: "ecsDataQualityDashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the ecsDataQualityDashboard plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index dfb7d99f0c30a..c9b0a42d493d1 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.devdocs.json b/api_docs/embeddable.devdocs.json index c840f13b2782e..12da9ef05339c 100644 --- a/api_docs/embeddable.devdocs.json +++ b/api_docs/embeddable.devdocs.json @@ -1746,48 +1746,6 @@ "id": "def-public.CustomizePanelAction.Unnamed.$1", "type": "Object", "tags": [], - "label": "overlays", - "description": [], - "signature": [ - { - "pluginId": "@kbn/core-overlays-browser", - "scope": "common", - "docId": "kibKbnCoreOverlaysBrowserPluginApi", - "section": "def-common.OverlayStart", - "text": "OverlayStart" - } - ], - "path": "src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_action.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.CustomizePanelAction.Unnamed.$2", - "type": "Object", - "tags": [], - "label": "theme", - "description": [], - "signature": [ - { - "pluginId": "@kbn/core-theme-browser", - "scope": "common", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-common.ThemeServiceSetup", - "text": "ThemeServiceSetup" - } - ], - "path": "src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_action.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.CustomizePanelAction.Unnamed.$3", - "type": "Object", - "tags": [], "label": "editPanel", "description": [], "signature": [ @@ -1803,71 +1761,6 @@ "deprecated": false, "trackAdoption": false, "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.CustomizePanelAction.Unnamed.$4", - "type": "Array", - "tags": [], - "label": "commonlyUsedRanges", - "description": [], - "signature": [ - "CommonlyUsedRange", - "[] | undefined" - ], - "path": "src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_action.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.CustomizePanelAction.Unnamed.$5", - "type": "string", - "tags": [], - "label": "dateFormat", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_action.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.CustomizePanelAction.isTimeRangeCompatible", - "type": "Function", - "tags": [], - "label": "isTimeRangeCompatible", - "description": [], - "signature": [ - "({ embeddable }: ", - "CustomizePanelActionContext", - ") => boolean" - ], - "path": "src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_action.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.CustomizePanelAction.isTimeRangeCompatible.$1", - "type": "Object", - "tags": [], - "label": "{ embeddable }", - "description": [], - "signature": [ - "CustomizePanelActionContext" - ], - "path": "src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_action.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true } ], "returnComment": [] diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 7b0b5851dd68e..76eae0e07b40d 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2024-01-04 +date: 2024-01-05 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 | |-------------------|-----------|------------------------|-----------------| -| 547 | 1 | 446 | 8 | +| 541 | 1 | 440 | 7 | ## Client diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 9918254100888..548174d7de37d 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2024-01-04 +date: 2024-01-05 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 daa6d36a96145..352efa1e656ac 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2024-01-04 +date: 2024-01-05 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 9474de5f81979..bd1c4bdaf32a6 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2024-01-04 +date: 2024-01-05 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 8320de7c77f9f..6c760ef1be96c 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 3bc7ef1e9dd79..89cf436a8d03f 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index 4f01a013f6552..4285b824b2865 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index dc3c20ed884e9..0f598efcc8e83 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index 1086207ae79e0..eddcfa9df88b8 100644 --- a/api_docs/exploratory_view.mdx +++ b/api_docs/exploratory_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView title: "exploratoryView" image: https://source.unsplash.com/400x175/?github description: API docs for the exploratoryView plugin -date: 2024-01-04 +date: 2024-01-05 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 ec4f95d64f91b..498a0ab179633 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2024-01-04 +date: 2024-01-05 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 fdf929c6a59cb..a58ef618b1988 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 38d225279672a..53f605f27359f 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2024-01-04 +date: 2024-01-05 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 27e04629ee41c..8ffa228f761ea 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2024-01-04 +date: 2024-01-05 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 dee6029f3cb90..3339ac65b98da 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2024-01-04 +date: 2024-01-05 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 3096059ad7670..d5053bdf2009c 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2024-01-04 +date: 2024-01-05 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 2a20d57c3b137..b4df1088239a3 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2024-01-04 +date: 2024-01-05 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 04ecc8db49661..94b1732f35b83 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2024-01-04 +date: 2024-01-05 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 b6b0ac67a9cb9..1875640df8d15 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2024-01-04 +date: 2024-01-05 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 e5ab37d98ab79..ac5b410ac3c51 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2024-01-04 +date: 2024-01-05 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 a07ed74186ff5..6c36c1616bbb5 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2024-01-04 +date: 2024-01-05 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 2aa729e87260e..7080b06bdcad3 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2024-01-04 +date: 2024-01-05 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 0b10fe16fe0f6..9c93e19857dbd 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2024-01-04 +date: 2024-01-05 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 b65dc56d93d76..7e6becdb5e3ba 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2024-01-04 +date: 2024-01-05 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 9dd6158563493..4e9cddb8f0c95 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2024-01-04 +date: 2024-01-05 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 04e8add44042c..83dc20b9d14f7 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2024-01-04 +date: 2024-01-05 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 4c98ec2a3d91b..05805282482bc 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 492b70d6729b6..0a106848874eb 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2024-01-04 +date: 2024-01-05 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 34f47024dfd71..c41633bb5c407 100644 --- a/api_docs/files_management.mdx +++ b/api_docs/files_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement title: "filesManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the filesManagement plugin -date: 2024-01-04 +date: 2024-01-05 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 71082e7d6c850..d023bf23660db 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2024-01-04 +date: 2024-01-05 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 f145084416fb0..f1c3cfb571376 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2024-01-04 +date: 2024-01-05 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 69906278ddaf4..67e293184baf7 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2024-01-04 +date: 2024-01-05 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 24aa7c9926bda..e15635e437a35 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2024-01-04 +date: 2024-01-05 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 f0e8319806226..269c949a2b510 100644 --- a/api_docs/image_embeddable.mdx +++ b/api_docs/image_embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable title: "imageEmbeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the imageEmbeddable plugin -date: 2024-01-04 +date: 2024-01-05 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 e180f0d1641dc..673edd6fc9991 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexLifecycleManagement plugin -date: 2024-01-04 +date: 2024-01-05 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 5d41b96d012ee..d7047ed6918cb 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2024-01-04 +date: 2024-01-05 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 f5c39b03aca7f..306a2dd4f1836 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/ingest_pipelines.mdx b/api_docs/ingest_pipelines.mdx index 6e9aff3bfba06..604704f4a4644 100644 --- a/api_docs/ingest_pipelines.mdx +++ b/api_docs/ingest_pipelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ingestPipelines title: "ingestPipelines" image: https://source.unsplash.com/400x175/?github description: API docs for the ingestPipelines plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ingestPipelines'] --- import ingestPipelinesObj from './ingest_pipelines.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 03c65d44f35e7..c031e57df940c 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2024-01-04 +date: 2024-01-05 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 0086ac4ce9e8e..2c4f4409c50e6 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2024-01-04 +date: 2024-01-05 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 be92db311d961..58c8dd293a89a 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ace plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index ea6042678334b..67732f9450a66 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 0fceae2c6aa5b..99efb29fa1878 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 0c572f58a1412..7c4d66e6a79be 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-utils plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index 48cae6747c964..5d97cbcef983e 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 7109d9c5de8c6..ea31276702c82 100644 --- a/api_docs/kbn_alerting_state_types.mdx +++ b/api_docs/kbn_alerting_state_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types title: "@kbn/alerting-state-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-state-types plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index 81baf5ce3dea1..9c0634d2f5fac 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 9e2d04708b8dd..d13f7538c6f18 100644 --- a/api_docs/kbn_alerts_as_data_utils.mdx +++ b/api_docs/kbn_alerts_as_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils title: "@kbn/alerts-as-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-as-data-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 b835cdf345430..dd820870f56ae 100644 --- a/api_docs/kbn_alerts_ui_shared.mdx +++ b/api_docs/kbn_alerts_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared title: "@kbn/alerts-ui-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-ui-shared plugin -date: 2024-01-04 +date: 2024-01-05 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 bb47843b82e3e..07f4f676b6482 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 3b5f66fe191c9..aa6359d944086 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-client plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index a5ebd4cabb524..26f300afff2f9 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index 4ad36ce3266e0..eecc34a7903ac 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser title: "@kbn/analytics-shippers-elastic-v3-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 2f441677caed3..12347d76060af 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common title: "@kbn/analytics-shippers-elastic-v3-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2024-01-04 +date: 2024-01-05 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 6d37607eb3780..6f8daf129a9ad 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server title: "@kbn/analytics-shippers-elastic-v3-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2024-01-04 +date: 2024-01-05 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 dbf2ed50486ea..4c7a7db8dc103 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2024-01-04 +date: 2024-01-05 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 6c2e2085a35e6..67adc5447da8c 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: 2024-01-04 +date: 2024-01-05 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 2e4da0de9fffb..fb2645ed8940b 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2024-01-04 +date: 2024-01-05 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 08be197d2f328..c5a2d9d1be71e 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2024-01-04 +date: 2024-01-05 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 57f76574a6a01..b7e5007d1daef 100644 --- a/api_docs/kbn_apm_synthtrace_client.mdx +++ b/api_docs/kbn_apm_synthtrace_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client title: "@kbn/apm-synthtrace-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace-client plugin -date: 2024-01-04 +date: 2024-01-05 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 d4f8acded8bea..19dd1cddbbb54 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 691cc29eab2b5..3b1aaa7f5bc1a 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_bfetch_error.mdx b/api_docs/kbn_bfetch_error.mdx index 6ffb7d64aa166..95e9ef9d8e2cc 100644 --- a/api_docs/kbn_bfetch_error.mdx +++ b/api_docs/kbn_bfetch_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-bfetch-error title: "@kbn/bfetch-error" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/bfetch-error plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bfetch-error'] --- import kbnBfetchErrorObj from './kbn_bfetch_error.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index bbcb29ede912a..4f9a6ae989578 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index 168799bba2c8b..8a0212183d0e7 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 1cb18fc4b85cf..3ad99c30a2135 100644 --- a/api_docs/kbn_cases_components.mdx +++ b/api_docs/kbn_cases_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components title: "@kbn/cases-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cases-components plugin -date: 2024-01-04 +date: 2024-01-05 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 af7a6aec2f060..5da6071844462 100644 --- a/api_docs/kbn_cell_actions.mdx +++ b/api_docs/kbn_cell_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions title: "@kbn/cell-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cell-actions plugin -date: 2024-01-04 +date: 2024-01-05 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 8709c69a78d2b..f99acdf51bc1e 100644 --- a/api_docs/kbn_chart_expressions_common.mdx +++ b/api_docs/kbn_chart_expressions_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common title: "@kbn/chart-expressions-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-expressions-common plugin -date: 2024-01-04 +date: 2024-01-05 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 f3d78c78a2774..99dfb9291a2c5 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2024-01-04 +date: 2024-01-05 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 fd14fa1f9cc05..8e4e8dcfeaf16 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2024-01-04 +date: 2024-01-05 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 c5160318f3046..3c1646598d3c9 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2024-01-04 +date: 2024-01-05 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 6b5d8e5811c66..9ae2a3c9cf53d 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2024-01-04 +date: 2024-01-05 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 c25eb3b034f9a..0d428a2b65c4e 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2024-01-04 +date: 2024-01-05 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 b1faf78313c5d..c979f6dc50d4f 100644 --- a/api_docs/kbn_code_editor.mdx +++ b/api_docs/kbn_code_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor title: "@kbn/code-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index 45c2f1eec850e..f226a1348df2f 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 016a50f4eed68..888e0b94e7c94 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2024-01-04 +date: 2024-01-05 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 92e2a6e6a98db..ecdf371ddfffd 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2024-01-04 +date: 2024-01-05 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 538b978f01f67..5e15a806482fd 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 7a11d031669b2..e8b490fcaa551 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2024-01-04 +date: 2024-01-05 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 a01fcd538b274..2080f7a4f5456 100644 --- a/api_docs/kbn_content_management_content_editor.mdx +++ b/api_docs/kbn_content_management_content_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor title: "@kbn/content-management-content-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-editor plugin -date: 2024-01-04 +date: 2024-01-05 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 ab99b334698e8..afa1cc531eeca 100644 --- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx +++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view title: "@kbn/content-management-tabbed-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-tabbed-table-list-view plugin -date: 2024-01-04 +date: 2024-01-05 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 ac36b039e2e28..296cdd60739d3 100644 --- a/api_docs/kbn_content_management_table_list_view.mdx +++ b/api_docs/kbn_content_management_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view title: "@kbn/content-management-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index ba7e057ea4c5e..295f28d250efb 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index 4eb648daed693..bd4a59931d367 100644 --- a/api_docs/kbn_content_management_table_list_view_table.mdx +++ b/api_docs/kbn_content_management_table_list_view_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table title: "@kbn/content-management-table-list-view-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-table plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index b93c28f3f242f..2334bbea11063 100644 --- a/api_docs/kbn_content_management_utils.mdx +++ b/api_docs/kbn_content_management_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils title: "@kbn/content-management-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-utils plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 5d321c806dae1..42c9d614c5797 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 1f543f4bf84ce..153a2c7a9152f 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 2705851553d33..b514f46a767d3 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 7c3743c1dbd8c..22a2b868300d7 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2024-01-04 +date: 2024-01-05 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 3e4b93af573ae..8e99ad34f05ad 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 13fddb27bcd44..34dc36645e8d9 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 79983ab12c2e4..003b923f10aa1 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 c96835fd136f4..6286d2cb724ec 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 0d0d8e97c742e..4129c3bcf8444 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 8448a8305a7e5..189ddf1305682 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2024-01-04 +date: 2024-01-05 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 9723b65a44983..c00e06b1d4e53 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 596f3e1409ae3..dfc0190d41a19 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 d271d9e001764..9a818b7a9cf70 100644 --- a/api_docs/kbn_core_apps_server_internal.mdx +++ b/api_docs/kbn_core_apps_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal title: "@kbn/core-apps-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 67397822cc15e..5d983edad908c 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 96261af6de97b..96380b2c5e499 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2024-01-04 +date: 2024-01-05 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 690927a8f239f..10e1fbe8f64d3 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 acdf0cea09385..8811b252d3a45 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 05311bbc8df07..3e2a93bdaa39c 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 b394f4e578b45..a43d1d79f59be 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2024-01-04 +date: 2024-01-05 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 04e0c62d9deaf..9aecb50d3630b 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2024-01-04 +date: 2024-01-05 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 4b249f1bff217..36c6be975a5db 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 5e8bdf8c5aa08..6355589137357 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 02e3a5ec0123f..9b90d0d77d1bc 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 2289372300052..36d73d21f57f4 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 fb768b7c12d3f..11c405617243b 100644 --- a/api_docs/kbn_core_custom_branding_browser.mdx +++ b/api_docs/kbn_core_custom_branding_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser title: "@kbn/core-custom-branding-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 47066277a2823..cf5f3594cacd5 100644 --- a/api_docs/kbn_core_custom_branding_browser_internal.mdx +++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal title: "@kbn/core-custom-branding-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 0557c03698a20..5efaad8b4b761 100644 --- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks title: "@kbn/core-custom-branding-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 e4c2d814ce4ce..c8d037dfb1be0 100644 --- a/api_docs/kbn_core_custom_branding_common.mdx +++ b/api_docs/kbn_core_custom_branding_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common title: "@kbn/core-custom-branding-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-common plugin -date: 2024-01-04 +date: 2024-01-05 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 47df9f6bd415c..ac3d4fee5471d 100644 --- a/api_docs/kbn_core_custom_branding_server.mdx +++ b/api_docs/kbn_core_custom_branding_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server title: "@kbn/core-custom-branding-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server plugin -date: 2024-01-04 +date: 2024-01-05 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 8f0176938100e..f394f80ac1a44 100644 --- a/api_docs/kbn_core_custom_branding_server_internal.mdx +++ b/api_docs/kbn_core_custom_branding_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal title: "@kbn/core-custom-branding-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 5c6ac50845b06..6fa595b3f7ddb 100644 --- a/api_docs/kbn_core_custom_branding_server_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks title: "@kbn/core-custom-branding-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 cb4891afb2a62..4dd8071edb617 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 2fcebc148f34f..2868afa3f6c57 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 40c40b888547e..3583323fb993a 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 276dae6fdc910..aa0538b54ed96 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2024-01-04 +date: 2024-01-05 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 06938c8a2b3d5..66613027f1595 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2024-01-04 +date: 2024-01-05 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 096e7236e1524..07f76eadc4a07 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 cc44b8b202e8f..c2eedb7775bc5 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 2f95b164db63d..7476d9890e76d 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 e001c1a7741c5..ff520667e6286 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 0dd3e339adf53..698406787e33c 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2024-01-04 +date: 2024-01-05 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 039d4286527ab..a4bfe1af57f18 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 6ae23ebdbc4f2..c6579465e4d94 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 84519ae1e6f50..50797c4a70444 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 58dc5db374275..5877335b3b4b6 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2024-01-04 +date: 2024-01-05 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 30259cc8ff033..dfd4378709eee 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 fb88fcd87870e..b3194820e611d 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 0b45eda63a4d6..9096578c4a869 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 68780da325957..d8329ab84c6fd 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 84acec6f8c4d0..c6051b14b8bb8 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 6f5cdfc30e9fb..0f4b1d809e2a9 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 dae8f7597fa85..e0335fd19b456 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 d3443180f5e37..e34ee98f08541 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2024-01-04 +date: 2024-01-05 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 9bcd85c18be25..a9cd993ef3613 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2024-01-04 +date: 2024-01-05 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 c55c66060c457..9a092dd212918 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 c02aee85f62c2..fe7dfdc0640b1 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 a370ba31b7392..ca637613e3dca 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 4cd23b56d2049..7bae8c7510fe8 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 b1d5fa2f87bf7..c0dc5ef4d8166 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 95910196e46a0..c4a4931aa224e 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 bf351d6b6045b..d5b59d087d88d 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 cf934a82ce8a1..fdaf73a8bdf94 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2024-01-04 +date: 2024-01-05 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 cf0cc09149fe9..7a13acd3b6ee4 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 c843f511ba710..3bc12db9ecfe0 100644 --- a/api_docs/kbn_core_http_request_handler_context_server.mdx +++ b/api_docs/kbn_core_http_request_handler_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server title: "@kbn/core-http-request-handler-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-request-handler-context-server plugin -date: 2024-01-04 +date: 2024-01-05 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 9b26b97d0bf25..d6d4afcb46f88 100644 --- a/api_docs/kbn_core_http_resources_server.mdx +++ b/api_docs/kbn_core_http_resources_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server title: "@kbn/core-http-resources-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server plugin -date: 2024-01-04 +date: 2024-01-05 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 3e9098cf3068b..f86eb611844b8 100644 --- a/api_docs/kbn_core_http_resources_server_internal.mdx +++ b/api_docs/kbn_core_http_resources_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal title: "@kbn/core-http-resources-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 0f301dc896f4c..fb0b69d74b6c1 100644 --- a/api_docs/kbn_core_http_resources_server_mocks.mdx +++ b/api_docs/kbn_core_http_resources_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks title: "@kbn/core-http-resources-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 4619b1f044320..8717f3484e4d2 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 1b0b50082abf7..89196d48aa807 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 1646c74c42d11..13108de8ed0b6 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2024-01-04 +date: 2024-01-05 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 95405dcd06ca7..c79302c665bd3 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 d23065a22a01e..5346aa263fbfb 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 807e09bb6a594..5dc4097c8c4dc 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 20ebff06fbca3..d5bfe62f3f7cd 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 f56413569351d..a9e8270c39be9 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2024-01-04 +date: 2024-01-05 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 31ac9457e072f..f73490a95c855 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 47ccee6e6cd15..ef90dab3f1ad8 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 2ed3ed3355a46..1b36c7da81338 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 24be40a1fc587..8597ee8c0c58a 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 e1e5c04231041..6d73ad37a3a4e 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 64ffdd809b2a6..e15a9cda86c0a 100644 --- a/api_docs/kbn_core_lifecycle_browser.mdx +++ b/api_docs/kbn_core_lifecycle_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser title: "@kbn/core-lifecycle-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 6e94acb61527b..f1a80b337c646 100644 --- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks title: "@kbn/core-lifecycle-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 fc5a818242d33..fb234bfd464e9 100644 --- a/api_docs/kbn_core_lifecycle_server.mdx +++ b/api_docs/kbn_core_lifecycle_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server title: "@kbn/core-lifecycle-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server plugin -date: 2024-01-04 +date: 2024-01-05 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 d66a001fbed30..c050429f94976 100644 --- a/api_docs/kbn_core_lifecycle_server_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks title: "@kbn/core-lifecycle-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 584b2355c3273..4a382b53f4034 100644 --- a/api_docs/kbn_core_logging_browser_mocks.mdx +++ b/api_docs/kbn_core_logging_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks title: "@kbn/core-logging-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 a1e0764981126..a1be0d78c787e 100644 --- a/api_docs/kbn_core_logging_common_internal.mdx +++ b/api_docs/kbn_core_logging_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal title: "@kbn/core-logging-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-common-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 431cd7f5a46b7..d10d6f1cb0fbf 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2024-01-04 +date: 2024-01-05 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 89e76e1e5d977..1cb9d7a42a66b 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 7706403fd0843..76e0e48e87d16 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 13f01e4c371d4..68bcc653afe36 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 1f612d9b47e42..9be45a959922a 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 a5110c2ef5806..f91bee45de346 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2024-01-04 +date: 2024-01-05 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 0794553156ba8..08fd3abf4b2f2 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 1fcb936b77402..0a1cf0c52011e 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 e9d8e7bd63339..cdf78183d3627 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 41847b2965ce1..b933d9fb7b074 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2024-01-04 +date: 2024-01-05 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 dc5608723d689..09603fc421f92 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 74e310e07bc4d..d6b92cf6550ff 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 3c89672e3fcb5..9b1954f72aea3 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 f68349b2df2bd..8c0198cc375f2 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 aa66bff4ae8c5..8321d240778a3 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 099c145770adc..dcd73424735c7 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 5ee90e5a9a9fd..f8d6214e106b7 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 aca97bed11b21..3dd3b0dfe1827 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 3ad8d49e085d4..99b2909488b72 100644 --- a/api_docs/kbn_core_plugins_browser.mdx +++ b/api_docs/kbn_core_plugins_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser title: "@kbn/core-plugins-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 7517e87c6bf45..05bb9690c66da 100644 --- a/api_docs/kbn_core_plugins_browser_mocks.mdx +++ b/api_docs/kbn_core_plugins_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks title: "@kbn/core-plugins-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index 2d32821e57a68..745e3ff7dc368 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index 3a622d5b19917..dd9290362f01e 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index e97622f466a7f..22e9bdc289907 100644 --- a/api_docs/kbn_core_plugins_server.mdx +++ b/api_docs/kbn_core_plugins_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server title: "@kbn/core-plugins-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server plugin -date: 2024-01-04 +date: 2024-01-05 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 789728222a03c..141a858f1514f 100644 --- a/api_docs/kbn_core_plugins_server_mocks.mdx +++ b/api_docs/kbn_core_plugins_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks title: "@kbn/core-plugins-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 3188532eef0c4..78745c8f8794d 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2024-01-04 +date: 2024-01-05 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 9abf502bc9841..ac0c2b312d4f0 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 1b65c430646de..2eaff65af4b9e 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 269a838711fe1..cac034b79dbb5 100644 --- a/api_docs/kbn_core_rendering_server_internal.mdx +++ b/api_docs/kbn_core_rendering_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal title: "@kbn/core-rendering-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 530d51da435ae..ab6260c4eb1db 100644 --- a/api_docs/kbn_core_rendering_server_mocks.mdx +++ b/api_docs/kbn_core_rendering_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks title: "@kbn/core-rendering-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 d88b4b65ba87f..6ee52e34d7a5f 100644 --- a/api_docs/kbn_core_root_server_internal.mdx +++ b/api_docs/kbn_core_root_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal title: "@kbn/core-root-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-root-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 405eb70d599cb..a4696878794f9 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 36f8838849be8..a2a20ce874dfe 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2024-01-04 +date: 2024-01-05 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 690c0b69d4244..315bd86bcfe8f 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 0dbdf60396e53..c6fad755d60d3 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 ea3ea08c9248e..d352c77e86b6f 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 8ea6c02a57b23..2386bbb345836 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 0819d5a1e7997..f38f8a175534d 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 4658f309b11a5..e2123b9db7fe9 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 a74bec6b40adf..a03a55579e7c8 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2024-01-04 +date: 2024-01-05 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 1a4c01991982f..d447d007c9efe 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 f37847eb15bda..e9c44ca486b15 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 be10a7df2c69e..6557ea3b88b01 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 83d236a7c90b8..ca68c544a4a84 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 073d01306e15f..528d68226c1e8 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2024-01-04 +date: 2024-01-05 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 ff992ba279e5f..53029290bbcef 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 d0c9b94683c4c..aebb6f5ffb2a1 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 9a655a53f3d2c..8de3b757d7fe7 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2024-01-04 +date: 2024-01-05 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 30d1a76ba87a6..6790c9b264fd0 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2024-01-04 +date: 2024-01-05 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 e7b9d22253332..da0ed41bb9411 100644 --- a/api_docs/kbn_core_status_common_internal.mdx +++ b/api_docs/kbn_core_status_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal title: "@kbn/core-status-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 1ced970793db3..2640368c30be9 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2024-01-04 +date: 2024-01-05 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 cb2db0211eeb1..772cd4def6a63 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 2defa9b66cd1e..8e08cf85ec1ac 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 bcd02b5b63d8f..272f643a6321b 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2024-01-04 +date: 2024-01-05 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 7c28f8c40e05c..534bbae8b4697 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 d1f7537721766..acdfb8291f5ce 100644 --- a/api_docs/kbn_core_test_helpers_kbn_server.mdx +++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server title: "@kbn/core-test-helpers-kbn-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-kbn-server plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index df6c2317422f8..8f8d5cd2f0301 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index a5d5ec6bcf424..bece1dfffd54b 100644 --- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx +++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer title: "@kbn/core-test-helpers-so-type-serializer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin -date: 2024-01-04 +date: 2024-01-05 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 3812d80d05841..03096fa4ea6b8 100644 --- a/api_docs/kbn_core_test_helpers_test_utils.mdx +++ b/api_docs/kbn_core_test_helpers_test_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils title: "@kbn/core-test-helpers-test-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-test-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 ad3d2637f65c3..10c78c84e5977 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 1c655b9d37744..8096b2c0c6b2c 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 933b7613d430e..0806dcc0e27e4 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 1759294c3ede1..591c1f9eda155 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 711277a14d313..c5ed348ea2843 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 48f92b475d5ea..c2713fdc462d8 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2024-01-04 +date: 2024-01-05 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 9ab86721089f6..fd65be4fcb46e 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2024-01-04 +date: 2024-01-05 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 a177e83347b19..cab535e4d818c 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 d82f2f595f8eb..8cd3baf2d70bd 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 c1fce322f9508..b2976124fb3ed 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2024-01-04 +date: 2024-01-05 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 420a7ba708a2f..46fe662e811a9 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 8df47910b2611..f333f187c4c1c 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 b4252ff9424a0..f95c6ea99795f 100644 --- a/api_docs/kbn_core_user_settings_server.mdx +++ b/api_docs/kbn_core_user_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server title: "@kbn/core-user-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server plugin -date: 2024-01-04 +date: 2024-01-05 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 3fcfb92e24af9..0a5de0b387e34 100644 --- a/api_docs/kbn_core_user_settings_server_internal.mdx +++ b/api_docs/kbn_core_user_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-internal title: "@kbn/core-user-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-internal plugin -date: 2024-01-04 +date: 2024-01-05 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 bcd3b45938020..a469906822a7f 100644 --- a/api_docs/kbn_core_user_settings_server_mocks.mdx +++ b/api_docs/kbn_core_user_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks title: "@kbn/core-user-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 1756c3f446e3e..62d9f95e09516 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2024-01-04 +date: 2024-01-05 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 df724db842c5a..d7ca756cce0e6 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index f2a931c88273c..a0ca9002c0700 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index 99d54015c69a1..3fcd8906bd390 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index e9a58ed538b8f..bef6cd7cc7ac4 100644 --- a/api_docs/kbn_cypress_config.mdx +++ b/api_docs/kbn_cypress_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config title: "@kbn/cypress-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cypress-config plugin -date: 2024-01-04 +date: 2024-01-05 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 643081b1d4dae..6f263e3da035f 100644 --- a/api_docs/kbn_data_service.mdx +++ b/api_docs/kbn_data_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service title: "@kbn/data-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-service plugin -date: 2024-01-04 +date: 2024-01-05 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 81c40771e0bb7..16beebc820846 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2024-01-04 +date: 2024-01-05 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 2f5c0b0c898e2..6c571e0fe0b4e 100644 --- a/api_docs/kbn_deeplinks_analytics.mdx +++ b/api_docs/kbn_deeplinks_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics title: "@kbn/deeplinks-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-analytics plugin -date: 2024-01-04 +date: 2024-01-05 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 be2b50795b6b8..2da79e7a1f597 100644 --- a/api_docs/kbn_deeplinks_devtools.mdx +++ b/api_docs/kbn_deeplinks_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools title: "@kbn/deeplinks-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-devtools plugin -date: 2024-01-04 +date: 2024-01-05 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 9a9c64b5db9b0..95bff06def67f 100644 --- a/api_docs/kbn_deeplinks_management.mdx +++ b/api_docs/kbn_deeplinks_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management title: "@kbn/deeplinks-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-management plugin -date: 2024-01-04 +date: 2024-01-05 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 7afa5a8820ef3..5a9306c0523aa 100644 --- a/api_docs/kbn_deeplinks_ml.mdx +++ b/api_docs/kbn_deeplinks_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml title: "@kbn/deeplinks-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-ml plugin -date: 2024-01-04 +date: 2024-01-05 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 f43d2395f1399..da7f8ac91cd99 100644 --- a/api_docs/kbn_deeplinks_observability.mdx +++ b/api_docs/kbn_deeplinks_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability title: "@kbn/deeplinks-observability" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-observability plugin -date: 2024-01-04 +date: 2024-01-05 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 f213317ca7a0a..8957459c87878 100644 --- a/api_docs/kbn_deeplinks_search.mdx +++ b/api_docs/kbn_deeplinks_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search title: "@kbn/deeplinks-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-search plugin -date: 2024-01-04 +date: 2024-01-05 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 2cac4b3d4fce7..0584a1becfdd9 100644 --- a/api_docs/kbn_default_nav_analytics.mdx +++ b/api_docs/kbn_default_nav_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics title: "@kbn/default-nav-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-analytics plugin -date: 2024-01-04 +date: 2024-01-05 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 6fcd2c17b24e4..d1172c422ae54 100644 --- a/api_docs/kbn_default_nav_devtools.mdx +++ b/api_docs/kbn_default_nav_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools title: "@kbn/default-nav-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-devtools plugin -date: 2024-01-04 +date: 2024-01-05 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 d6165f2f72d22..97f2b0e545f33 100644 --- a/api_docs/kbn_default_nav_management.mdx +++ b/api_docs/kbn_default_nav_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management title: "@kbn/default-nav-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-management plugin -date: 2024-01-04 +date: 2024-01-05 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 b5a858abc5056..ea8203e7807d9 100644 --- a/api_docs/kbn_default_nav_ml.mdx +++ b/api_docs/kbn_default_nav_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml title: "@kbn/default-nav-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-ml plugin -date: 2024-01-04 +date: 2024-01-05 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 ff8d6d8c74371..0bcb226be09e3 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2024-01-04 +date: 2024-01-05 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 41dc8147ad3a4..4a5e0f11ef6c5 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2024-01-04 +date: 2024-01-05 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 e4581551a701a..652c7f260d807 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2024-01-04 +date: 2024-01-05 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 d8eba73051f31..c4901a654547c 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 834b54a7cc8b5..0aebf568df0e5 100644 --- a/api_docs/kbn_discover_utils.mdx +++ b/api_docs/kbn_discover_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils title: "@kbn/discover-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-utils plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 26ad9f0b338ad..5a5b37d1782b4 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2024-01-04 +date: 2024-01-05 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 97ec6e097df36..32348f44bd009 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 69962080ec4df..9828cab37f002 100644 --- a/api_docs/kbn_dom_drag_drop.mdx +++ b/api_docs/kbn_dom_drag_drop.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop title: "@kbn/dom-drag-drop" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dom-drag-drop plugin -date: 2024-01-04 +date: 2024-01-05 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 b9a95c21a65f4..8508582482b8b 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2024-01-04 +date: 2024-01-05 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 655a8f4727802..4286c1ccfe661 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: 2024-01-04 +date: 2024-01-05 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 5f82c57739561..f96a9ec52b922 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.mdx +++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard title: "@kbn/ecs-data-quality-dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs-data-quality-dashboard plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index c37ce828a8515..f6df41c4f6dfc 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index 1d76023b58651..909678cae3168 100644 --- a/api_docs/kbn_elastic_assistant.mdx +++ b/api_docs/kbn_elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant title: "@kbn/elastic-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index dc32cd0edca70..e2e4f236a1a03 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index fef9a0cc1a18e..da45af0b343e9 100644 --- a/api_docs/kbn_es.mdx +++ b/api_docs/kbn_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es title: "@kbn/es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es plugin -date: 2024-01-04 +date: 2024-01-05 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 cb8a2c1ea7cb0..67abe05e9bf28 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2024-01-04 +date: 2024-01-05 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 211c745a6f22a..2c423d62f92f5 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2024-01-04 +date: 2024-01-05 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 74a7c73aec306..6bdb08de3efe7 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2024-01-04 +date: 2024-01-05 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 2239b14ba2ac0..0b2165aa8af4e 100644 --- a/api_docs/kbn_es_types.mdx +++ b/api_docs/kbn_es_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types title: "@kbn/es-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-types plugin -date: 2024-01-04 +date: 2024-01-05 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 a87f273b8bdd2..4791ea44d6b3a 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2024-01-04 +date: 2024-01-05 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 a78fb63d369e0..e5fcb23a65682 100644 --- a/api_docs/kbn_event_annotation_common.mdx +++ b/api_docs/kbn_event_annotation_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common title: "@kbn/event-annotation-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-common plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index 7b0106699b554..5187ac07cd6f6 100644 --- a/api_docs/kbn_event_annotation_components.mdx +++ b/api_docs/kbn_event_annotation_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components title: "@kbn/event-annotation-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-components plugin -date: 2024-01-04 +date: 2024-01-05 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 ae08844018103..8807a3ef06695 100644 --- a/api_docs/kbn_expandable_flyout.mdx +++ b/api_docs/kbn_expandable_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout title: "@kbn/expandable-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/expandable-flyout plugin -date: 2024-01-04 +date: 2024-01-05 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 cb55a29f3f27a..d30d8c4c09282 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index 06b57eb8264ed..c1a49910d999a 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 0c91dccea3f64..ef45987a7a582 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2024-01-04 +date: 2024-01-05 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 1f31375de175b..222bd8a02a9f5 100644 --- a/api_docs/kbn_ftr_common_functional_services.mdx +++ b/api_docs/kbn_ftr_common_functional_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services title: "@kbn/ftr-common-functional-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-services plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.devdocs.json b/api_docs/kbn_ftr_common_functional_ui_services.devdocs.json index 79a57d84974d8..e2f2105db52c4 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.devdocs.json +++ b/api_docs/kbn_ftr_common_functional_ui_services.devdocs.json @@ -17,10 +17,9981 @@ "objects": [] }, "common": { - "classes": [], + "classes": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper", + "type": "Class", + "tags": [], + "label": "WebElementWrapper", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.isChromium", + "type": "boolean", + "tags": [], + "label": "isChromium", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.create", + "type": "Function", + "tags": [], + "label": "create", + "description": [], + "signature": [ + "(webElement: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.WebElementWrapper", + "text": "WebElementWrapper" + }, + " | ", + "WebElement", + ", locator: ", + "By", + " | null, driver: ", + "WebDriver", + ", timeout: number, fixedHeaderHeight: number, logger: ", + { + "pluginId": "@kbn/tooling-log", + "scope": "common", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-common.ToolingLog", + "text": "ToolingLog" + }, + ", browserType: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.Browsers", + "text": "Browsers" + }, + ") => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.WebElementWrapper", + "text": "WebElementWrapper" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.create.$1", + "type": "CompoundType", + "tags": [], + "label": "webElement", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.WebElementWrapper", + "text": "WebElementWrapper" + }, + " | ", + "WebElement" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.create.$2", + "type": "CompoundType", + "tags": [], + "label": "locator", + "description": [], + "signature": [ + "By", + " | null" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.create.$3", + "type": "Object", + "tags": [], + "label": "driver", + "description": [], + "signature": [ + "WebDriver" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.create.$4", + "type": "number", + "tags": [], + "label": "timeout", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.create.$5", + "type": "number", + "tags": [], + "label": "fixedHeaderHeight", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.create.$6", + "type": "Object", + "tags": [], + "label": "logger", + "description": [], + "signature": [ + { + "pluginId": "@kbn/tooling-log", + "scope": "common", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-common.ToolingLog", + "text": "ToolingLog" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.create.$7", + "type": "Enum", + "tags": [], + "label": "browserType", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.Browsers", + "text": "Browsers" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "_webElement", + "description": [], + "signature": [ + "WebElement" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.Unnamed.$2", + "type": "CompoundType", + "tags": [], + "label": "locator", + "description": [], + "signature": [ + "By", + " | null" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.Unnamed.$3", + "type": "Object", + "tags": [], + "label": "driver", + "description": [], + "signature": [ + "WebDriver" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.Unnamed.$4", + "type": "number", + "tags": [], + "label": "timeout", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.Unnamed.$5", + "type": "number", + "tags": [], + "label": "fixedHeaderHeight", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.Unnamed.$6", + "type": "Object", + "tags": [], + "label": "logger", + "description": [], + "signature": [ + { + "pluginId": "@kbn/tooling-log", + "scope": "common", + "docId": "kibKbnToolingLogPluginApi", + "section": "def-common.ToolingLog", + "text": "ToolingLog" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.Unnamed.$7", + "type": "Enum", + "tags": [], + "label": "browserType", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.Browsers", + "text": "Browsers" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.isDisplayed", + "type": "Function", + "tags": [ + "return" + ], + "label": "isDisplayed", + "description": [ + "\nReturns whether or not the element would be visible to an actual user. This means\nthat the following types of elements are considered to be not displayed:\n\n - Elements with display: none\n - Elements with visibility: hidden\n - Elements positioned outside of the viewport that cannot be scrolled into view\n - Elements with opacity: 0\n - Elements with no offsetWidth or offsetHeight\n\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#isDisplayed\n" + ], + "signature": [ + "() => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.isEnabled", + "type": "Function", + "tags": [ + "return" + ], + "label": "isEnabled", + "description": [ + "\nTests whether this element is enabled, as dictated by the disabled attribute.\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#isEnabled\n" + ], + "signature": [ + "() => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.isSelected", + "type": "Function", + "tags": [ + "return" + ], + "label": "isSelected", + "description": [ + "\nTests whether this element is selected.\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#isSelected\n" + ], + "signature": [ + "() => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.click", + "type": "Function", + "tags": [ + "return" + ], + "label": "click", + "description": [ + "\nClicks on this element.\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#click\n" + ], + "signature": [ + "(topOffset?: number | undefined) => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.click.$1", + "type": "number", + "tags": [], + "label": "topOffset", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.focus", + "type": "Function", + "tags": [ + "return" + ], + "label": "focus", + "description": [ + "\nFocuses this element.\n" + ], + "signature": [ + "() => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.openHref", + "type": "Function", + "tags": [ + "return" + ], + "label": "openHref", + "description": [ + "\nIf possible, opens 'href' of this element directly through the URL\n" + ], + "signature": [ + "() => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.elementHasClass", + "type": "Function", + "tags": [ + "return" + ], + "label": "elementHasClass", + "description": [ + "\nCheck if webelement wrapper has a specific class.\n" + ], + "signature": [ + "(className: string) => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.elementHasClass.$1", + "type": "string", + "tags": [], + "label": "className", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.clearValue", + "type": "Function", + "tags": [ + "default" + ], + "label": "clearValue", + "description": [ + "\nClear the value of this element. This command has no effect if the underlying DOM element\nis neither a text INPUT element nor a TEXTAREA element.\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#clear\n" + ], + "signature": [ + "(options?: ClearOptions) => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.clearValue.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [ + "option to clear input with JS: `arguments[0].value=''`" + ], + "signature": [ + "ClearOptions" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.clearValueWithKeyboard", + "type": "Function", + "tags": [ + "default" + ], + "label": "clearValueWithKeyboard", + "description": [ + "\nClear the value of this element using Keyboard" + ], + "signature": [ + "(options?: TypeOptions) => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.clearValueWithKeyboard.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [ + "to input characters one by one" + ], + "signature": [ + "TypeOptions" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.selectValueWithKeyboard", + "type": "Function", + "tags": [], + "label": "selectValueWithKeyboard", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.type", + "type": "Function", + "tags": [ + "return" + ], + "label": "type", + "description": [ + "\nTypes a key sequence on the DOM element represented by this instance. Modifier keys\n(SHIFT, CONTROL, ALT, META) are stateful; once a modifier is processed in the key sequence,\nthat key state is toggled until one of the following occurs:\n\nThe modifier key is encountered again in the sequence. At this point the state of the key is\ntoggled (along with the appropriate keyup/down events).\nThe input.Key.NULL key is encountered in the sequence. When this key is encountered, all\nmodifier keys current in the down state are released (with accompanying keyup events). The NULL\nkey can be used to simulate common keyboard shortcuts.\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#sendKeys\n" + ], + "signature": [ + "(value: string | string[], options?: TypeOptions) => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.type.$1", + "type": "CompoundType", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "string | string[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.type.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "TypeOptions" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.pressKeys", + "type": "Function", + "tags": [], + "label": "pressKeys", + "description": [], + "signature": [ + "{ (keys: T | T[]): Promise; (keys: T | T[]): Promise; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.pressKeys.$1", + "type": "string", + "tags": [], + "label": "keys", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.getAttribute", + "type": "Function", + "tags": [], + "label": "getAttribute", + "description": [ + "\nRetrieves the current value of the given attribute of this element. Will return the current\nvalue, even if it has been modified after the page has been loaded. More exactly, this method\nwill return the value of the given attribute, unless that attribute is not present, in which\ncase the value of the property with the same name is returned. If neither value is set, null\nis returned (for example, the \"value\" property of a textarea element). The \"style\" attribute\nis converted as best can be to a text representation with a trailing semi-colon.\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#getAttribute\n" + ], + "signature": [ + "(name: string) => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.getAttribute.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.getComputedStyle", + "type": "Function", + "tags": [ + "return" + ], + "label": "getComputedStyle", + "description": [ + "\nRetrieves the value of a computed style property for this instance. If the element inherits\nthe named style from its parent, the parent will be queried for its value. Where possible,\ncolor values will be converted to their hex representation (e.g. #00ff00 instead of rgb(0, 255, 0)).\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#getCssValue\n" + ], + "signature": [ + "(propertyName: string) => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.getComputedStyle.$1", + "type": "string", + "tags": [], + "label": "propertyName", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.getVisibleText", + "type": "Function", + "tags": [ + "return" + ], + "label": "getVisibleText", + "description": [ + "\nGet the visible (i.e. not hidden by CSS) innerText of this element, including sub-elements,\nwithout any leading or trailing whitespace.\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#getText\n" + ], + "signature": [ + "() => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.getTagName", + "type": "Function", + "tags": [], + "label": "getTagName", + "description": [], + "signature": [ + "{ (): Promise; (): Promise; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.getPosition", + "type": "Function", + "tags": [ + "return" + ], + "label": "getPosition", + "description": [ + "\nReturns an object describing an element's location, in pixels relative to the document element,\nand the element's size in pixels.\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#getRect\n" + ], + "signature": [ + "() => Promise<{ height: number; width: number; x: number; y: number; }>" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.getSize", + "type": "Function", + "tags": [ + "return" + ], + "label": "getSize", + "description": [ + "\nReturns an object describing an element's location, in pixels relative to the document element,\nand the element's size in pixels.\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#getRect\n" + ], + "signature": [ + "() => Promise<{ height: number; width: number; x: number; y: number; }>" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.moveMouseTo", + "type": "Function", + "tags": [ + "return" + ], + "label": "moveMouseTo", + "description": [ + "\nMoves the remote environment’s mouse cursor to the current element with optional offset\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/input_exports_Actions.html#move" + ], + "signature": [ + "(options?: { xOffset: number; yOffset: number; }) => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.moveMouseTo.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "{ xOffset: number; yOffset: number; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.clickMouseButton", + "type": "Function", + "tags": [ + "return" + ], + "label": "clickMouseButton", + "description": [ + "\nInserts an action for moving the mouse to element center, unless optional offset is provided.\nThen adds an action for left-click (down/up) with the mouse.\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/input_exports_Actions.html#click\n" + ], + "signature": [ + "(options?: { xOffset: number; yOffset: number; }) => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.clickMouseButton.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "{ xOffset: number; yOffset: number; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.doubleClick", + "type": "Function", + "tags": [ + "return" + ], + "label": "doubleClick", + "description": [ + "\nInserts action for performing a double left-click with the mouse.\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/input_exports_Actions.html#doubleClick" + ], + "signature": [ + "() => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findByCssSelector", + "type": "Function", + "tags": [ + "return" + ], + "label": "findByCssSelector", + "description": [ + "\nGets the first element inside this element matching the given CSS selector.\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#findElement\n" + ], + "signature": [ + "(selector: string) => Promise<", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.WebElementWrapper", + "text": "WebElementWrapper" + }, + ">" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findByCssSelector.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findAllByCssSelector", + "type": "Function", + "tags": [ + "return" + ], + "label": "findAllByCssSelector", + "description": [ + "\nGets all elements inside this element matching the given CSS selector.\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#findElement\n" + ], + "signature": [ + "(selector: string, timeout?: number | undefined) => Promise<", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.WebElementWrapper", + "text": "WebElementWrapper" + }, + "[]>" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findAllByCssSelector.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findAllByCssSelector.$2", + "type": "number", + "tags": [], + "label": "timeout", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findByTestSubject", + "type": "Function", + "tags": [ + "return" + ], + "label": "findByTestSubject", + "description": [ + "\nGets the first element inside this element matching the given data-test-subj selector.\n" + ], + "signature": [ + "(selector: string) => Promise<", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.WebElementWrapper", + "text": "WebElementWrapper" + }, + ">" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findByTestSubject.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findAllByTestSubject", + "type": "Function", + "tags": [ + "return" + ], + "label": "findAllByTestSubject", + "description": [ + "\nGets all elements inside this element matching the given data-test-subj selector.\n" + ], + "signature": [ + "(selector: string, timeout?: number | undefined) => Promise<", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.WebElementWrapper", + "text": "WebElementWrapper" + }, + "[]>" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findAllByTestSubject.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findAllByTestSubject.$2", + "type": "number", + "tags": [], + "label": "timeout", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findByClassName", + "type": "Function", + "tags": [ + "return" + ], + "label": "findByClassName", + "description": [ + "\nGets the first element inside this element matching the given CSS class name.\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#findElement\n" + ], + "signature": [ + "(className: string) => Promise<", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.WebElementWrapper", + "text": "WebElementWrapper" + }, + ">" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findByClassName.$1", + "type": "string", + "tags": [], + "label": "className", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findAllByClassName", + "type": "Function", + "tags": [ + "return" + ], + "label": "findAllByClassName", + "description": [ + "\nGets all elements inside this element matching the given CSS class name.\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#findElement\n" + ], + "signature": [ + "(className: string, timeout?: number | undefined) => Promise<", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.WebElementWrapper", + "text": "WebElementWrapper" + }, + "[]>" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findAllByClassName.$1", + "type": "string", + "tags": [], + "label": "className", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findAllByClassName.$2", + "type": "number", + "tags": [], + "label": "timeout", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findByTagName", + "type": "Function", + "tags": [], + "label": "findByTagName", + "description": [], + "signature": [ + "{ (tagName: T): Promise<", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.WebElementWrapper", + "text": "WebElementWrapper" + }, + ">; (tagName: T): Promise<", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.WebElementWrapper", + "text": "WebElementWrapper" + }, + ">; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findByTagName.$1", + "type": "string", + "tags": [], + "label": "tagName", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findAllByTagName", + "type": "Function", + "tags": [], + "label": "findAllByTagName", + "description": [], + "signature": [ + "{ (tagName: T, timeout?: number | undefined): Promise<", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.WebElementWrapper", + "text": "WebElementWrapper" + }, + "[]>; (tagName: T, timeout?: number | undefined): Promise<", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.WebElementWrapper", + "text": "WebElementWrapper" + }, + "[]>; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findAllByTagName.$1", + "type": "string", + "tags": [], + "label": "tagName", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findAllByTagName.$2", + "type": "number", + "tags": [], + "label": "timeout", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findByXpath", + "type": "Function", + "tags": [ + "return" + ], + "label": "findByXpath", + "description": [ + "\nGets the first element inside this element matching the given XPath selector.\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#findElement\n" + ], + "signature": [ + "(selector: string) => Promise<", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.WebElementWrapper", + "text": "WebElementWrapper" + }, + ">" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findByXpath.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findAllByXpath", + "type": "Function", + "tags": [ + "return" + ], + "label": "findAllByXpath", + "description": [ + "\nGets all elements inside this element matching the given XPath selector.\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#findElement\n" + ], + "signature": [ + "(selector: string, timeout?: number | undefined) => Promise<", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.WebElementWrapper", + "text": "WebElementWrapper" + }, + "[]>" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findAllByXpath.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findAllByXpath.$2", + "type": "number", + "tags": [], + "label": "timeout", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findByPartialLinkText", + "type": "Function", + "tags": [ + "return" + ], + "label": "findByPartialLinkText", + "description": [ + "\nGets the first element inside this element matching the given partial link text.\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#findElement\n" + ], + "signature": [ + "(linkText: string) => Promise<", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.WebElementWrapper", + "text": "WebElementWrapper" + }, + ">" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findByPartialLinkText.$1", + "type": "string", + "tags": [], + "label": "linkText", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findAllByPartialLinkText", + "type": "Function", + "tags": [ + "return" + ], + "label": "findAllByPartialLinkText", + "description": [ + "\nGets all elements inside this element matching the given partial link text.\nhttps://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#findElement\n" + ], + "signature": [ + "(linkText: string, timeout?: number | undefined) => Promise<", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.WebElementWrapper", + "text": "WebElementWrapper" + }, + "[]>" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findAllByPartialLinkText.$1", + "type": "string", + "tags": [], + "label": "linkText", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.findAllByPartialLinkText.$2", + "type": "number", + "tags": [], + "label": "timeout", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.waitForDeletedByCssSelector", + "type": "Function", + "tags": [ + "return" + ], + "label": "waitForDeletedByCssSelector", + "description": [ + "\nWaits for all elements inside this element matching the given CSS selector to be destroyed.\n" + ], + "signature": [ + "(selector: string, implicitTimeout?: number) => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.waitForDeletedByCssSelector.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.waitForDeletedByCssSelector.$2", + "type": "number", + "tags": [], + "label": "implicitTimeout", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.scrollIntoView", + "type": "Function", + "tags": [ + "return" + ], + "label": "scrollIntoView", + "description": [ + "\nScroll the element into view\n" + ], + "signature": [ + "(scrollIntoViewOptions?: ScrollIntoViewOptions | undefined) => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.scrollIntoView.$1", + "type": "Object", + "tags": [], + "label": "scrollIntoViewOptions", + "description": [], + "signature": [ + "ScrollIntoViewOptions | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.scrollIntoViewIfNecessary", + "type": "Function", + "tags": [ + "nonstandard", + "return" + ], + "label": "scrollIntoViewIfNecessary", + "description": [ + "\nScroll the element into view if it is not already, avoiding the fixed header if necessary\nThis method is a variation of the scrollIntoView method, where we only scroll into an element\nif it is not part of the \"scrollable view\".\nThis implies a specific behavior, since the \"scrollable view\" of the view is identified by\nthe `document.scrollingElement`, which always results to the html or body tag.\n\nUse cases:\n- An element (a section, a footer) is not visible in the whole page and we need to scroll into it.\n- An element is covered by the fixed header and we need to scroll into it ensuring is not covered.\n\nIn case you have a scrollable list smaller that the size of the HTML document and you need\nto scroll into an element of that list, prefer using the `.scrollIntoView` method.\n" + ], + "signature": [ + "(topOffsetOrOptions?: number | { topOffset?: number | undefined; bottomOffset?: number | undefined; } | undefined) => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.scrollIntoViewIfNecessary.$1", + "type": "CompoundType", + "tags": [], + "label": "topOffsetOrOptions", + "description": [], + "signature": [ + "number | { topOffset?: number | undefined; bottomOffset?: number | undefined; } | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.parseDomContent", + "type": "Function", + "tags": [ + "nonstandard", + "return" + ], + "label": "parseDomContent", + "description": [ + "\nGets element innerHTML and wrap it up with cheerio\n" + ], + "signature": [ + "() => Promise<", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerioStatic", + "text": "CustomCheerioStatic" + }, + ">" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.WebElementWrapper.takeScreenshot", + "type": "Function", + "tags": [], + "label": "takeScreenshot", + "description": [ + "\nCreates the screenshot of the element\n" + ], + "signature": [ + "() => Promise" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/web_element_wrapper.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], "functions": [], - "interfaces": [], - "enums": [], + "interfaces": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio", + "type": "Interface", + "tags": [], + "label": "CustomCheerio", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.Unnamed", + "type": "IndexSignature", + "tags": [], + "label": "[index: number]: Element", + "description": [], + "signature": [ + "[index: number]: cheerio.Element" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.length", + "type": "number", + "tags": [], + "label": "length", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.attr", + "type": "Function", + "tags": [], + "label": "attr", + "description": [], + "signature": [ + "{ (): { [attr: string]: string; }; (name: string): string; (name: string, value: any): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.attr", + "type": "Function", + "tags": [], + "label": "attr", + "description": [], + "signature": [ + "{ (): { [attr: string]: string; }; (name: string): string; (name: string, value: any): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.attr.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.attr", + "type": "Function", + "tags": [], + "label": "attr", + "description": [], + "signature": [ + "{ (): { [attr: string]: string; }; (name: string): string; (name: string, value: any): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.attr.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.attr.$2", + "type": "Any", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "any" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.data", + "type": "Function", + "tags": [], + "label": "data", + "description": [], + "signature": [ + "{ (): any; (name: string): any; (name: string, value: any): any; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.data", + "type": "Function", + "tags": [], + "label": "data", + "description": [], + "signature": [ + "{ (): any; (name: string): any; (name: string, value: any): any; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.data.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.data", + "type": "Function", + "tags": [], + "label": "data", + "description": [], + "signature": [ + "{ (): any; (name: string): any; (name: string, value: any): any; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.data.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.data.$2", + "type": "Any", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "any" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.val", + "type": "Function", + "tags": [], + "label": "val", + "description": [], + "signature": [ + "{ (): string; (value: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.val", + "type": "Function", + "tags": [], + "label": "val", + "description": [], + "signature": [ + "{ (): string; (value: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.val.$1", + "type": "string", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.removeAttr", + "type": "Function", + "tags": [], + "label": "removeAttr", + "description": [], + "signature": [ + "(name: string) => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.removeAttr.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.has", + "type": "Function", + "tags": [], + "label": "has", + "description": [], + "signature": [ + "{ (selector: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.has.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.has", + "type": "Function", + "tags": [], + "label": "has", + "description": [], + "signature": [ + "{ (selector: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.has.$1", + "type": "CompoundType", + "tags": [], + "label": "element", + "description": [], + "signature": [ + "cheerio.Element" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.hasClass", + "type": "Function", + "tags": [], + "label": "hasClass", + "description": [], + "signature": [ + "(className: string) => boolean" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.hasClass.$1", + "type": "string", + "tags": [], + "label": "className", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.addClass", + "type": "Function", + "tags": [], + "label": "addClass", + "description": [], + "signature": [ + "(classNames: string) => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.addClass.$1", + "type": "string", + "tags": [], + "label": "classNames", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.removeClass", + "type": "Function", + "tags": [], + "label": "removeClass", + "description": [], + "signature": [ + "{ (): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (className: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (func: (index: number, className: string) => string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.removeClass", + "type": "Function", + "tags": [], + "label": "removeClass", + "description": [], + "signature": [ + "{ (): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (className: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (func: (index: number, className: string) => string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.removeClass.$1", + "type": "string", + "tags": [], + "label": "className", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.removeClass", + "type": "Function", + "tags": [], + "label": "removeClass", + "description": [], + "signature": [ + "{ (): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (className: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (func: (index: number, className: string) => string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.removeClass.$1", + "type": "Function", + "tags": [], + "label": "func", + "description": [], + "signature": [ + "(index: number, className: string) => string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.toggleClass", + "type": "Function", + "tags": [], + "label": "toggleClass", + "description": [], + "signature": [ + "{ (className: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (className: string, toggleSwitch: boolean): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (toggleSwitch?: boolean | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (func: (index: number, className: string, toggleSwitch: boolean) => string, toggleSwitch?: boolean | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.toggleClass.$1", + "type": "string", + "tags": [], + "label": "className", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.toggleClass", + "type": "Function", + "tags": [], + "label": "toggleClass", + "description": [], + "signature": [ + "{ (className: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (className: string, toggleSwitch: boolean): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (toggleSwitch?: boolean | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (func: (index: number, className: string, toggleSwitch: boolean) => string, toggleSwitch?: boolean | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.toggleClass.$1", + "type": "string", + "tags": [], + "label": "className", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.toggleClass.$2", + "type": "boolean", + "tags": [], + "label": "toggleSwitch", + "description": [], + "signature": [ + "boolean" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.toggleClass", + "type": "Function", + "tags": [], + "label": "toggleClass", + "description": [], + "signature": [ + "{ (className: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (className: string, toggleSwitch: boolean): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (toggleSwitch?: boolean | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (func: (index: number, className: string, toggleSwitch: boolean) => string, toggleSwitch?: boolean | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.toggleClass.$1", + "type": "CompoundType", + "tags": [], + "label": "toggleSwitch", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.toggleClass", + "type": "Function", + "tags": [], + "label": "toggleClass", + "description": [], + "signature": [ + "{ (className: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (className: string, toggleSwitch: boolean): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (toggleSwitch?: boolean | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (func: (index: number, className: string, toggleSwitch: boolean) => string, toggleSwitch?: boolean | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.toggleClass.$1", + "type": "Function", + "tags": [], + "label": "func", + "description": [], + "signature": [ + "(index: number, className: string, toggleSwitch: boolean) => string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.toggleClass.$2", + "type": "CompoundType", + "tags": [], + "label": "toggleSwitch", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.is", + "type": "Function", + "tags": [], + "label": "is", + "description": [], + "signature": [ + "{ (selector: string): boolean; (element: cheerio.Element): boolean; (element: cheerio.Element[]): boolean; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): boolean; (func: (index: number, element: cheerio.Element) => boolean): boolean; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.is.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.is", + "type": "Function", + "tags": [], + "label": "is", + "description": [], + "signature": [ + "{ (selector: string): boolean; (element: cheerio.Element): boolean; (element: cheerio.Element[]): boolean; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): boolean; (func: (index: number, element: cheerio.Element) => boolean): boolean; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.is.$1", + "type": "CompoundType", + "tags": [], + "label": "element", + "description": [], + "signature": [ + "cheerio.Element" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.is", + "type": "Function", + "tags": [], + "label": "is", + "description": [], + "signature": [ + "{ (selector: string): boolean; (element: cheerio.Element): boolean; (element: cheerio.Element[]): boolean; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): boolean; (func: (index: number, element: cheerio.Element) => boolean): boolean; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.is.$1", + "type": "Array", + "tags": [], + "label": "element", + "description": [], + "signature": [ + "cheerio.Element[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.is", + "type": "Function", + "tags": [], + "label": "is", + "description": [], + "signature": [ + "{ (selector: string): boolean; (element: cheerio.Element): boolean; (element: cheerio.Element[]): boolean; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): boolean; (func: (index: number, element: cheerio.Element) => boolean): boolean; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.is.$1", + "type": "Object", + "tags": [], + "label": "selection", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.is", + "type": "Function", + "tags": [], + "label": "is", + "description": [], + "signature": [ + "{ (selector: string): boolean; (element: cheerio.Element): boolean; (element: cheerio.Element[]): boolean; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): boolean; (func: (index: number, element: cheerio.Element) => boolean): boolean; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.is.$1", + "type": "Function", + "tags": [], + "label": "func", + "description": [], + "signature": [ + "(index: number, element: cheerio.Element) => boolean" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.serialize", + "type": "Function", + "tags": [], + "label": "serialize", + "description": [], + "signature": [ + "() => string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.serializeArray", + "type": "Function", + "tags": [], + "label": "serializeArray", + "description": [], + "signature": [ + "() => { name: string; value: string; }[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.find", + "type": "Function", + "tags": [], + "label": "find", + "description": [], + "signature": [ + "{ (selector: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.find.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.find", + "type": "Function", + "tags": [], + "label": "find", + "description": [], + "signature": [ + "{ (selector: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.find.$1", + "type": "Object", + "tags": [], + "label": "element", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.parent", + "type": "Function", + "tags": [], + "label": "parent", + "description": [], + "signature": [ + "(selector?: string | undefined) => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.parent.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.parents", + "type": "Function", + "tags": [], + "label": "parents", + "description": [], + "signature": [ + "(selector?: string | undefined) => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.parents.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.parentsUntil", + "type": "Function", + "tags": [], + "label": "parentsUntil", + "description": [], + "signature": [ + "{ (selector?: string | undefined, filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element, filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.parentsUntil.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.parentsUntil.$2", + "type": "string", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.parentsUntil", + "type": "Function", + "tags": [], + "label": "parentsUntil", + "description": [], + "signature": [ + "{ (selector?: string | undefined, filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element, filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.parentsUntil.$1", + "type": "CompoundType", + "tags": [], + "label": "element", + "description": [], + "signature": [ + "cheerio.Element" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.parentsUntil.$2", + "type": "string", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.parentsUntil", + "type": "Function", + "tags": [], + "label": "parentsUntil", + "description": [], + "signature": [ + "{ (selector?: string | undefined, filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element, filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.parentsUntil.$1", + "type": "Object", + "tags": [], + "label": "element", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.parentsUntil.$2", + "type": "string", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prop", + "type": "Function", + "tags": [], + "label": "prop", + "description": [], + "signature": [ + "{ (name: string): any; (name: string, value: any): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prop.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prop", + "type": "Function", + "tags": [], + "label": "prop", + "description": [], + "signature": [ + "{ (name: string): any; (name: string, value: any): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prop.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prop.$2", + "type": "Any", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "any" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.closest", + "type": "Function", + "tags": [], + "label": "closest", + "description": [], + "signature": [ + "{ (): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selector: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.closest", + "type": "Function", + "tags": [], + "label": "closest", + "description": [], + "signature": [ + "{ (): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selector: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.closest.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.next", + "type": "Function", + "tags": [], + "label": "next", + "description": [], + "signature": [ + "(selector?: string | undefined) => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.next.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.nextAll", + "type": "Function", + "tags": [], + "label": "nextAll", + "description": [], + "signature": [ + "{ (): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selector: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.nextAll", + "type": "Function", + "tags": [], + "label": "nextAll", + "description": [], + "signature": [ + "{ (): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selector: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.nextAll.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.nextUntil", + "type": "Function", + "tags": [], + "label": "nextUntil", + "description": [], + "signature": [ + "{ (selector?: string | undefined, filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element, filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.nextUntil.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.nextUntil.$2", + "type": "string", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.nextUntil", + "type": "Function", + "tags": [], + "label": "nextUntil", + "description": [], + "signature": [ + "{ (selector?: string | undefined, filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element, filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.nextUntil.$1", + "type": "CompoundType", + "tags": [], + "label": "element", + "description": [], + "signature": [ + "cheerio.Element" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.nextUntil.$2", + "type": "string", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.nextUntil", + "type": "Function", + "tags": [], + "label": "nextUntil", + "description": [], + "signature": [ + "{ (selector?: string | undefined, filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element, filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.nextUntil.$1", + "type": "Object", + "tags": [], + "label": "element", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.nextUntil.$2", + "type": "string", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prev", + "type": "Function", + "tags": [], + "label": "prev", + "description": [], + "signature": [ + "(selector?: string | undefined) => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prev.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prevAll", + "type": "Function", + "tags": [], + "label": "prevAll", + "description": [], + "signature": [ + "{ (): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selector: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prevAll", + "type": "Function", + "tags": [], + "label": "prevAll", + "description": [], + "signature": [ + "{ (): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selector: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prevAll.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prevUntil", + "type": "Function", + "tags": [], + "label": "prevUntil", + "description": [], + "signature": [ + "{ (selector?: string | undefined, filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element, filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prevUntil.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prevUntil.$2", + "type": "string", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prevUntil", + "type": "Function", + "tags": [], + "label": "prevUntil", + "description": [], + "signature": [ + "{ (selector?: string | undefined, filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element, filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prevUntil.$1", + "type": "CompoundType", + "tags": [], + "label": "element", + "description": [], + "signature": [ + "cheerio.Element" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prevUntil.$2", + "type": "string", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prevUntil", + "type": "Function", + "tags": [], + "label": "prevUntil", + "description": [], + "signature": [ + "{ (selector?: string | undefined, filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element, filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", filter?: string | undefined): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prevUntil.$1", + "type": "Object", + "tags": [], + "label": "element", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prevUntil.$2", + "type": "string", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.slice", + "type": "Function", + "tags": [], + "label": "slice", + "description": [], + "signature": [ + "(start: number, end?: number | undefined) => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.slice.$1", + "type": "number", + "tags": [], + "label": "start", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.slice.$2", + "type": "number", + "tags": [], + "label": "end", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.siblings", + "type": "Function", + "tags": [], + "label": "siblings", + "description": [], + "signature": [ + "(selector?: string | undefined) => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.siblings.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.children", + "type": "Function", + "tags": [], + "label": "children", + "description": [], + "signature": [ + "(selector?: string | undefined) => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.children.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.contents", + "type": "Function", + "tags": [], + "label": "contents", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.each", + "type": "Function", + "tags": [], + "label": "each", + "description": [], + "signature": [ + "(func: (index: number, element: cheerio.Element) => any) => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.each.$1", + "type": "Function", + "tags": [], + "label": "func", + "description": [], + "signature": [ + "(index: number, element: cheerio.Element) => any" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.map", + "type": "Function", + "tags": [], + "label": "map", + "description": [], + "signature": [ + "(func: (index: number, element: cheerio.Element) => any) => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.map.$1", + "type": "Function", + "tags": [], + "label": "func", + "description": [], + "signature": [ + "(index: number, element: cheerio.Element) => any" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.filter", + "type": "Function", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + "{ (selector: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (elements: cheerio.Element[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (func: (index: number, element: cheerio.Element) => boolean): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.filter.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.filter", + "type": "Function", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + "{ (selector: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (elements: cheerio.Element[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (func: (index: number, element: cheerio.Element) => boolean): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.filter.$1", + "type": "Object", + "tags": [], + "label": "selection", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.filter", + "type": "Function", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + "{ (selector: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (elements: cheerio.Element[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (func: (index: number, element: cheerio.Element) => boolean): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.filter.$1", + "type": "CompoundType", + "tags": [], + "label": "element", + "description": [], + "signature": [ + "cheerio.Element" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.filter", + "type": "Function", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + "{ (selector: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (elements: cheerio.Element[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (func: (index: number, element: cheerio.Element) => boolean): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.filter.$1", + "type": "Array", + "tags": [], + "label": "elements", + "description": [], + "signature": [ + "cheerio.Element[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.filter", + "type": "Function", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + "{ (selector: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (elements: cheerio.Element[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (func: (index: number, element: cheerio.Element) => boolean): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.filter.$1", + "type": "Function", + "tags": [], + "label": "func", + "description": [], + "signature": [ + "(index: number, element: cheerio.Element) => boolean" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.not", + "type": "Function", + "tags": [], + "label": "not", + "description": [], + "signature": [ + "{ (selector: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (func: (index: number, element: cheerio.Element) => boolean): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.not.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.not", + "type": "Function", + "tags": [], + "label": "not", + "description": [], + "signature": [ + "{ (selector: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (func: (index: number, element: cheerio.Element) => boolean): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.not.$1", + "type": "Object", + "tags": [], + "label": "selection", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.not", + "type": "Function", + "tags": [], + "label": "not", + "description": [], + "signature": [ + "{ (selector: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (func: (index: number, element: cheerio.Element) => boolean): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.not.$1", + "type": "CompoundType", + "tags": [], + "label": "element", + "description": [], + "signature": [ + "cheerio.Element" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.not", + "type": "Function", + "tags": [], + "label": "not", + "description": [], + "signature": [ + "{ (selector: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (func: (index: number, element: cheerio.Element) => boolean): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.not.$1", + "type": "Function", + "tags": [], + "label": "func", + "description": [], + "signature": [ + "(index: number, element: cheerio.Element) => boolean" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.first", + "type": "Function", + "tags": [], + "label": "first", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.last", + "type": "Function", + "tags": [], + "label": "last", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.eq", + "type": "Function", + "tags": [], + "label": "eq", + "description": [], + "signature": [ + "(index: number) => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.eq.$1", + "type": "number", + "tags": [], + "label": "index", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.get", + "type": "Function", + "tags": [], + "label": "get", + "description": [], + "signature": [ + "{ (): any[]; (index: number): any; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.get", + "type": "Function", + "tags": [], + "label": "get", + "description": [], + "signature": [ + "{ (): any[]; (index: number): any; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.get.$1", + "type": "number", + "tags": [], + "label": "index", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.index", + "type": "Function", + "tags": [], + "label": "index", + "description": [], + "signature": [ + "{ (): number; (selector: string): number; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): number; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.index", + "type": "Function", + "tags": [], + "label": "index", + "description": [], + "signature": [ + "{ (): number; (selector: string): number; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): number; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.index.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.index", + "type": "Function", + "tags": [], + "label": "index", + "description": [], + "signature": [ + "{ (): number; (selector: string): number; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): number; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.index.$1", + "type": "Object", + "tags": [], + "label": "selection", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.end", + "type": "Function", + "tags": [], + "label": "end", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.add", + "type": "Function", + "tags": [], + "label": "add", + "description": [], + "signature": [ + "{ (selectorOrHtml: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selector: string, context: Document): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (elements: cheerio.Element[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.add.$1", + "type": "string", + "tags": [], + "label": "selectorOrHtml", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.add", + "type": "Function", + "tags": [], + "label": "add", + "description": [], + "signature": [ + "{ (selectorOrHtml: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selector: string, context: Document): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (elements: cheerio.Element[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.add.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.add.$2", + "type": "Object", + "tags": [], + "label": "context", + "description": [], + "signature": [ + "Document" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.add", + "type": "Function", + "tags": [], + "label": "add", + "description": [], + "signature": [ + "{ (selectorOrHtml: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selector: string, context: Document): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (elements: cheerio.Element[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.add.$1", + "type": "CompoundType", + "tags": [], + "label": "element", + "description": [], + "signature": [ + "cheerio.Element" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.add", + "type": "Function", + "tags": [], + "label": "add", + "description": [], + "signature": [ + "{ (selectorOrHtml: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selector: string, context: Document): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (elements: cheerio.Element[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.add.$1", + "type": "Array", + "tags": [], + "label": "elements", + "description": [], + "signature": [ + "cheerio.Element[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.add", + "type": "Function", + "tags": [], + "label": "add", + "description": [], + "signature": [ + "{ (selectorOrHtml: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selector: string, context: Document): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (element: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (elements: cheerio.Element[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (selection: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.add.$1", + "type": "Object", + "tags": [], + "label": "selection", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.addBack", + "type": "Function", + "tags": [], + "label": "addBack", + "description": [], + "signature": [ + "{ (): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (filter: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.addBack", + "type": "Function", + "tags": [], + "label": "addBack", + "description": [], + "signature": [ + "{ (): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (filter: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.addBack.$1", + "type": "string", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.appendTo", + "type": "Function", + "tags": [], + "label": "appendTo", + "description": [], + "signature": [ + "(target: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ") => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.appendTo.$1", + "type": "Object", + "tags": [], + "label": "target", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prependTo", + "type": "Function", + "tags": [], + "label": "prependTo", + "description": [], + "signature": [ + "(target: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ") => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prependTo.$1", + "type": "Object", + "tags": [], + "label": "target", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.append", + "type": "Function", + "tags": [], + "label": "append", + "description": [], + "signature": [ + "{ (content: string, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document[], ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.append.$1", + "type": "string", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.append.$2", + "type": "Array", + "tags": [], + "label": "contents", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.append", + "type": "Function", + "tags": [], + "label": "append", + "description": [], + "signature": [ + "{ (content: string, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document[], ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.append.$1", + "type": "Object", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "Document" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.append.$2", + "type": "Array", + "tags": [], + "label": "contents", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.append", + "type": "Function", + "tags": [], + "label": "append", + "description": [], + "signature": [ + "{ (content: string, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document[], ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.append.$1", + "type": "Array", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "Document[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.append.$2", + "type": "Array", + "tags": [], + "label": "contents", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.append", + "type": "Function", + "tags": [], + "label": "append", + "description": [], + "signature": [ + "{ (content: string, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document[], ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.append.$1", + "type": "Object", + "tags": [], + "label": "content", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.append.$2", + "type": "Array", + "tags": [], + "label": "contents", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prepend", + "type": "Function", + "tags": [], + "label": "prepend", + "description": [], + "signature": [ + "{ (content: string, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document[], ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prepend.$1", + "type": "string", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prepend.$2", + "type": "Array", + "tags": [], + "label": "contents", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prepend", + "type": "Function", + "tags": [], + "label": "prepend", + "description": [], + "signature": [ + "{ (content: string, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document[], ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prepend.$1", + "type": "Object", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "Document" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prepend.$2", + "type": "Array", + "tags": [], + "label": "contents", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prepend", + "type": "Function", + "tags": [], + "label": "prepend", + "description": [], + "signature": [ + "{ (content: string, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document[], ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prepend.$1", + "type": "Array", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "Document[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prepend.$2", + "type": "Array", + "tags": [], + "label": "contents", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prepend", + "type": "Function", + "tags": [], + "label": "prepend", + "description": [], + "signature": [ + "{ (content: string, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document[], ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prepend.$1", + "type": "Object", + "tags": [], + "label": "content", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.prepend.$2", + "type": "Array", + "tags": [], + "label": "contents", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.after", + "type": "Function", + "tags": [], + "label": "after", + "description": [], + "signature": [ + "{ (content: string, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document[], ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.after.$1", + "type": "string", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.after.$2", + "type": "Array", + "tags": [], + "label": "contents", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.after", + "type": "Function", + "tags": [], + "label": "after", + "description": [], + "signature": [ + "{ (content: string, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document[], ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.after.$1", + "type": "Object", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "Document" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.after.$2", + "type": "Array", + "tags": [], + "label": "contents", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.after", + "type": "Function", + "tags": [], + "label": "after", + "description": [], + "signature": [ + "{ (content: string, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document[], ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.after.$1", + "type": "Array", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "Document[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.after.$2", + "type": "Array", + "tags": [], + "label": "contents", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.after", + "type": "Function", + "tags": [], + "label": "after", + "description": [], + "signature": [ + "{ (content: string, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document[], ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.after.$1", + "type": "Object", + "tags": [], + "label": "content", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.after.$2", + "type": "Array", + "tags": [], + "label": "contents", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.insertAfter", + "type": "Function", + "tags": [], + "label": "insertAfter", + "description": [], + "signature": [ + "{ (content: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.insertAfter.$1", + "type": "string", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.insertAfter", + "type": "Function", + "tags": [], + "label": "insertAfter", + "description": [], + "signature": [ + "{ (content: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.insertAfter.$1", + "type": "Object", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "Document" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.insertAfter", + "type": "Function", + "tags": [], + "label": "insertAfter", + "description": [], + "signature": [ + "{ (content: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.insertAfter.$1", + "type": "Object", + "tags": [], + "label": "content", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.before", + "type": "Function", + "tags": [], + "label": "before", + "description": [], + "signature": [ + "{ (content: string, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document[], ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.before.$1", + "type": "string", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.before.$2", + "type": "Array", + "tags": [], + "label": "contents", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.before", + "type": "Function", + "tags": [], + "label": "before", + "description": [], + "signature": [ + "{ (content: string, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document[], ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.before.$1", + "type": "Object", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "Document" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.before.$2", + "type": "Array", + "tags": [], + "label": "contents", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.before", + "type": "Function", + "tags": [], + "label": "before", + "description": [], + "signature": [ + "{ (content: string, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document[], ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.before.$1", + "type": "Array", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "Document[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.before.$2", + "type": "Array", + "tags": [], + "label": "contents", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.before", + "type": "Function", + "tags": [], + "label": "before", + "description": [], + "signature": [ + "{ (content: string, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document, ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document[], ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", ...contents: any[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.before.$1", + "type": "Object", + "tags": [], + "label": "content", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.before.$2", + "type": "Array", + "tags": [], + "label": "contents", + "description": [], + "signature": [ + "any[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.insertBefore", + "type": "Function", + "tags": [], + "label": "insertBefore", + "description": [], + "signature": [ + "{ (content: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.insertBefore.$1", + "type": "string", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.insertBefore", + "type": "Function", + "tags": [], + "label": "insertBefore", + "description": [], + "signature": [ + "{ (content: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.insertBefore.$1", + "type": "Object", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "Document" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.insertBefore", + "type": "Function", + "tags": [], + "label": "insertBefore", + "description": [], + "signature": [ + "{ (content: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.insertBefore.$1", + "type": "Object", + "tags": [], + "label": "content", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.remove", + "type": "Function", + "tags": [], + "label": "remove", + "description": [], + "signature": [ + "(selector?: string | undefined) => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.remove.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.replaceWith", + "type": "Function", + "tags": [], + "label": "replaceWith", + "description": [], + "signature": [ + "{ (content: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: cheerio.Element[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: () => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.replaceWith.$1", + "type": "string", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.replaceWith", + "type": "Function", + "tags": [], + "label": "replaceWith", + "description": [], + "signature": [ + "{ (content: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: cheerio.Element[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: () => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.replaceWith.$1", + "type": "CompoundType", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "cheerio.Element" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.replaceWith", + "type": "Function", + "tags": [], + "label": "replaceWith", + "description": [], + "signature": [ + "{ (content: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: cheerio.Element[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: () => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.replaceWith.$1", + "type": "Array", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "cheerio.Element[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.replaceWith", + "type": "Function", + "tags": [], + "label": "replaceWith", + "description": [], + "signature": [ + "{ (content: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: cheerio.Element[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: () => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.replaceWith.$1", + "type": "Object", + "tags": [], + "label": "content", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.replaceWith", + "type": "Function", + "tags": [], + "label": "replaceWith", + "description": [], + "signature": [ + "{ (content: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: cheerio.Element): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: cheerio.Element[]): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: () => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.replaceWith.$1", + "type": "Function", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.empty", + "type": "Function", + "tags": [], + "label": "empty", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.html", + "type": "Function", + "tags": [], + "label": "html", + "description": [], + "signature": [ + "{ (): string | null; (html: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.html", + "type": "Function", + "tags": [], + "label": "html", + "description": [], + "signature": [ + "{ (): string | null; (html: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.html.$1", + "type": "string", + "tags": [], + "label": "html", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.text", + "type": "Function", + "tags": [], + "label": "text", + "description": [], + "signature": [ + "{ (): string; (text: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.text", + "type": "Function", + "tags": [], + "label": "text", + "description": [], + "signature": [ + "{ (): string; (text: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.text.$1", + "type": "string", + "tags": [], + "label": "text", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.wrap", + "type": "Function", + "tags": [], + "label": "wrap", + "description": [], + "signature": [ + "{ (content: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.wrap.$1", + "type": "string", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.wrap", + "type": "Function", + "tags": [], + "label": "wrap", + "description": [], + "signature": [ + "{ (content: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.wrap.$1", + "type": "Object", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "Document" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.wrap", + "type": "Function", + "tags": [], + "label": "wrap", + "description": [], + "signature": [ + "{ (content: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: Document): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (content: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.wrap.$1", + "type": "Object", + "tags": [], + "label": "content", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.css", + "type": "Function", + "tags": [], + "label": "css", + "description": [], + "signature": [ + "{ (propertyName: string): string; (propertyNames: string[]): string[]; (propertyName: string, value: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, value: number): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, func: (index: number, value: string) => string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, func: (index: number, value: string) => number): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (properties: Record): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.css.$1", + "type": "string", + "tags": [], + "label": "propertyName", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.css", + "type": "Function", + "tags": [], + "label": "css", + "description": [], + "signature": [ + "{ (propertyName: string): string; (propertyNames: string[]): string[]; (propertyName: string, value: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, value: number): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, func: (index: number, value: string) => string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, func: (index: number, value: string) => number): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (properties: Record): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.css.$1", + "type": "Array", + "tags": [], + "label": "propertyNames", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.css", + "type": "Function", + "tags": [], + "label": "css", + "description": [], + "signature": [ + "{ (propertyName: string): string; (propertyNames: string[]): string[]; (propertyName: string, value: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, value: number): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, func: (index: number, value: string) => string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, func: (index: number, value: string) => number): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (properties: Record): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.css.$1", + "type": "string", + "tags": [], + "label": "propertyName", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.css.$2", + "type": "string", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.css", + "type": "Function", + "tags": [], + "label": "css", + "description": [], + "signature": [ + "{ (propertyName: string): string; (propertyNames: string[]): string[]; (propertyName: string, value: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, value: number): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, func: (index: number, value: string) => string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, func: (index: number, value: string) => number): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (properties: Record): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.css.$1", + "type": "string", + "tags": [], + "label": "propertyName", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.css.$2", + "type": "number", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.css", + "type": "Function", + "tags": [], + "label": "css", + "description": [], + "signature": [ + "{ (propertyName: string): string; (propertyNames: string[]): string[]; (propertyName: string, value: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, value: number): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, func: (index: number, value: string) => string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, func: (index: number, value: string) => number): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (properties: Record): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.css.$1", + "type": "string", + "tags": [], + "label": "propertyName", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.css.$2", + "type": "Function", + "tags": [], + "label": "func", + "description": [], + "signature": [ + "(index: number, value: string) => string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.css", + "type": "Function", + "tags": [], + "label": "css", + "description": [], + "signature": [ + "{ (propertyName: string): string; (propertyNames: string[]): string[]; (propertyName: string, value: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, value: number): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, func: (index: number, value: string) => string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, func: (index: number, value: string) => number): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (properties: Record): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.css.$1", + "type": "string", + "tags": [], + "label": "propertyName", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.css.$2", + "type": "Function", + "tags": [], + "label": "func", + "description": [], + "signature": [ + "(index: number, value: string) => number" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.css", + "type": "Function", + "tags": [], + "label": "css", + "description": [], + "signature": [ + "{ (propertyName: string): string; (propertyNames: string[]): string[]; (propertyName: string, value: string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, value: number): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, func: (index: number, value: string) => string): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (propertyName: string, func: (index: number, value: string) => number): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; (properties: Record): ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.css.$1", + "type": "Object", + "tags": [], + "label": "properties", + "description": [], + "signature": [ + "Record" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.clone", + "type": "Function", + "tags": [], + "label": "clone", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.toArray", + "type": "Function", + "tags": [], + "label": "toArray", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + "[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.findTestSubjects", + "type": "Function", + "tags": [], + "label": "findTestSubjects", + "description": [], + "signature": [ + "(selector: string) => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.findTestSubjects.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.findTestSubject", + "type": "Function", + "tags": [], + "label": "findTestSubject", + "description": [], + "signature": [ + "(selector: string) => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerio.findTestSubject.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic", + "type": "Interface", + "tags": [], + "label": "CustomCheerioStatic", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerioStatic", + "text": "CustomCheerioStatic" + }, + " extends CheerioSelector" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.xml", + "type": "Function", + "tags": [], + "label": "xml", + "description": [], + "signature": [ + "() => string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.root", + "type": "Function", + "tags": [], + "label": "root", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.contains", + "type": "Function", + "tags": [], + "label": "contains", + "description": [], + "signature": [ + "(container: cheerio.Element, contained: cheerio.Element) => boolean" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.contains.$1", + "type": "CompoundType", + "tags": [], + "label": "container", + "description": [], + "signature": [ + "cheerio.Element" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.contains.$2", + "type": "CompoundType", + "tags": [], + "label": "contained", + "description": [], + "signature": [ + "cheerio.Element" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.parseHTML", + "type": "Function", + "tags": [], + "label": "parseHTML", + "description": [], + "signature": [ + "(data: string, context?: Document | undefined, keepScripts?: boolean | undefined) => Document[]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.parseHTML.$1", + "type": "string", + "tags": [], + "label": "data", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.parseHTML.$2", + "type": "Object", + "tags": [], + "label": "context", + "description": [], + "signature": [ + "Document | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.parseHTML.$3", + "type": "CompoundType", + "tags": [], + "label": "keepScripts", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.html", + "type": "Function", + "tags": [], + "label": "html", + "description": [], + "signature": [ + "{ (options?: cheerio.CheerioParserOptions | undefined): string; (selector: string, options?: cheerio.CheerioParserOptions | undefined): string; (element: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", options?: cheerio.CheerioParserOptions | undefined): string; (element: cheerio.Element, options?: cheerio.CheerioParserOptions | undefined): string; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.html.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "cheerio.CheerioParserOptions | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.html", + "type": "Function", + "tags": [], + "label": "html", + "description": [], + "signature": [ + "{ (options?: cheerio.CheerioParserOptions | undefined): string; (selector: string, options?: cheerio.CheerioParserOptions | undefined): string; (element: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", options?: cheerio.CheerioParserOptions | undefined): string; (element: cheerio.Element, options?: cheerio.CheerioParserOptions | undefined): string; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.html.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.html.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "cheerio.CheerioParserOptions | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.html", + "type": "Function", + "tags": [], + "label": "html", + "description": [], + "signature": [ + "{ (options?: cheerio.CheerioParserOptions | undefined): string; (selector: string, options?: cheerio.CheerioParserOptions | undefined): string; (element: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", options?: cheerio.CheerioParserOptions | undefined): string; (element: cheerio.Element, options?: cheerio.CheerioParserOptions | undefined): string; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.html.$1", + "type": "Object", + "tags": [], + "label": "element", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.html.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "cheerio.CheerioParserOptions | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.html", + "type": "Function", + "tags": [], + "label": "html", + "description": [], + "signature": [ + "{ (options?: cheerio.CheerioParserOptions | undefined): string; (selector: string, options?: cheerio.CheerioParserOptions | undefined): string; (element: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + }, + ", options?: cheerio.CheerioParserOptions | undefined): string; (element: cheerio.Element, options?: cheerio.CheerioParserOptions | undefined): string; }" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.html.$1", + "type": "CompoundType", + "tags": [], + "label": "element", + "description": [], + "signature": [ + "cheerio.Element" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.html.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "cheerio.CheerioParserOptions | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.findTestSubjects", + "type": "Function", + "tags": [], + "label": "findTestSubjects", + "description": [], + "signature": [ + "(selector: string) => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.findTestSubjects.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.findTestSubject", + "type": "Function", + "tags": [], + "label": "findTestSubject", + "description": [], + "signature": [ + "(selector: string) => ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.CustomCheerio", + "text": "CustomCheerio" + } + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.CustomCheerioStatic.findTestSubject.$1", + "type": "string", + "tags": [], + "label": "selector", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/web_element_wrapper/custom_cheerio_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NetworkOptions", + "type": "Interface", + "tags": [], + "label": "NetworkOptions", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NetworkOptions.offline", + "type": "boolean", + "tags": [], + "label": "offline", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NetworkOptions.latency", + "type": "number", + "tags": [], + "label": "latency", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NetworkOptions.download_throughput", + "type": "number", + "tags": [], + "label": "download_throughput", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NetworkOptions.upload_throughput", + "type": "number", + "tags": [], + "label": "upload_throughput", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.TimeoutOpt", + "type": "Interface", + "tags": [], + "label": "TimeoutOpt", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.TimeoutOpt.timeout", + "type": "number", + "tags": [], + "label": "timeout", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.Browsers", + "type": "Enum", + "tags": [], + "label": "Browsers", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/browsers.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], "misc": [ { "parentPluginId": "@kbn/ftr-common-functional-ui-services", @@ -31,13 +10002,75 @@ "description": [], "signature": [ { - "pluginId": "@kbn/test", + "pluginId": "@kbn/test", + "scope": "common", + "docId": "kibKbnTestPluginApi", + "section": "def-common.GenericFtrProviderContext", + "text": "GenericFtrProviderContext" + }, + "<{ retry: typeof ", + { + "pluginId": "@kbn/ftr-common-functional-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalServicesPluginApi", + "section": "def-common.RetryService", + "text": "RetryService" + }, + "; retryOnStale: ({ getService }: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", "scope": "common", - "docId": "kibKbnTestPluginApi", - "section": "def-common.GenericFtrProviderContext", - "text": "GenericFtrProviderContext" + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => { (fn: () => Promise): Promise; wrap(fn: (...args: Args) => Promise): (...args: Args) => Promise; }; __webdriver__: ({ getService }: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => Promise<{ driver: ", + "WebDriver", + "; browserType: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.Browsers", + "text": "Browsers" + }, + "; consoleLog$: ", + "Observable", + "<{ message: string; level: string; }>; }>; find: (ctx: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => Promise<", + "FindService", + ">; }, {}, ProvidedTypeMap<{ retry: typeof ", + { + "pluginId": "@kbn/ftr-common-functional-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalServicesPluginApi", + "section": "def-common.RetryService", + "text": "RetryService" + }, + "; retryOnStale: ({ getService }: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" }, - "<{ retryOnStale: ({ getService }: ", + ") => { (fn: () => Promise): Promise; wrap(fn: (...args: Args) => Promise): (...args: Args) => Promise; }; __webdriver__: ({ getService }: ", { "pluginId": "@kbn/ftr-common-functional-ui-services", "scope": "common", @@ -45,7 +10078,19 @@ "section": "def-common.FtrProviderContext", "text": "FtrProviderContext" }, - ") => { (fn: () => Promise): Promise; wrap(fn: (...args: Args) => Promise): (...args: Args) => Promise; }; }, {}, ProvidedTypeMap<{ retryOnStale: ({ getService }: ", + ") => Promise<{ driver: ", + "WebDriver", + "; browserType: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.Browsers", + "text": "Browsers" + }, + "; consoleLog$: ", + "Observable", + "<{ message: string; level: string; }>; }>; find: (ctx: ", { "pluginId": "@kbn/ftr-common-functional-ui-services", "scope": "common", @@ -53,15 +10098,346 @@ "section": "def-common.FtrProviderContext", "text": "FtrProviderContext" }, - ") => { (fn: () => Promise): Promise; wrap(fn: (...args: Args) => Promise): (...args: Args) => Promise; }; }>, ProvidedTypeMap<{}>>" + ") => Promise<", + "FindService", + ">; }>, ProvidedTypeMap<{}>>" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/ftr_provider_context.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NetworkProfile", + "type": "Type", + "tags": [], + "label": "NetworkProfile", + "description": [], + "signature": [ + "\"NO_THROTTLING\" | \"FAST_3G\" | \"SLOW_3G\" | \"OFFLINE\" | \"CLOUD_USER\"" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES", + "type": "Object", + "tags": [], + "label": "NETWORK_PROFILES", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.NO_THROTTLING", + "type": "Object", + "tags": [], + "label": "NO_THROTTLING", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.NO_THROTTLING.offline", + "type": "boolean", + "tags": [], + "label": "offline", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.NO_THROTTLING.latency", + "type": "number", + "tags": [], + "label": "latency", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.NO_THROTTLING.download_throughput", + "type": "number", + "tags": [], + "label": "download_throughput", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.NO_THROTTLING.upload_throughput", + "type": "number", + "tags": [], + "label": "upload_throughput", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.FAST_3G", + "type": "Object", + "tags": [], + "label": "FAST_3G", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.FAST_3G.offline", + "type": "boolean", + "tags": [], + "label": "offline", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.FAST_3G.latency", + "type": "number", + "tags": [], + "label": "latency", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.FAST_3G.download_throughput", + "type": "number", + "tags": [], + "label": "download_throughput", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.FAST_3G.upload_throughput", + "type": "number", + "tags": [], + "label": "upload_throughput", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.SLOW_3G", + "type": "Object", + "tags": [], + "label": "SLOW_3G", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.SLOW_3G.offline", + "type": "boolean", + "tags": [], + "label": "offline", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.SLOW_3G.latency", + "type": "number", + "tags": [], + "label": "latency", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.SLOW_3G.download_throughput", + "type": "number", + "tags": [], + "label": "download_throughput", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.SLOW_3G.upload_throughput", + "type": "number", + "tags": [], + "label": "upload_throughput", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.OFFLINE", + "type": "Object", + "tags": [], + "label": "OFFLINE", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.OFFLINE.offline", + "type": "boolean", + "tags": [], + "label": "offline", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.OFFLINE.latency", + "type": "number", + "tags": [], + "label": "latency", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.OFFLINE.download_throughput", + "type": "number", + "tags": [], + "label": "download_throughput", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.OFFLINE.upload_throughput", + "type": "number", + "tags": [], + "label": "upload_throughput", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.CLOUD_USER", + "type": "Object", + "tags": [], + "label": "CLOUD_USER", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.CLOUD_USER.offline", + "type": "boolean", + "tags": [], + "label": "offline", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.CLOUD_USER.latency", + "type": "number", + "tags": [], + "label": "latency", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.CLOUD_USER.download_throughput", + "type": "number", + "tags": [], + "label": "download_throughput", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.NETWORK_PROFILES.CLOUD_USER.upload_throughput", + "type": "number", + "tags": [], + "label": "upload_throughput", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/network_profiles.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } ], - "path": "packages/kbn-ftr-common-functional-ui-services/services/ftr_provider_context.ts", - "deprecated": false, - "trackAdoption": false, "initialIsOpen": false - } - ], - "objects": [ + }, { "parentPluginId": "@kbn/ftr-common-functional-ui-services", "id": "def-common.services", @@ -111,7 +10487,69 @@ "section": "def-common.GenericFtrProviderContext", "text": "GenericFtrProviderContext" }, - "<{ retryOnStale: ({ getService }: ", + "<{ retry: typeof ", + { + "pluginId": "@kbn/ftr-common-functional-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalServicesPluginApi", + "section": "def-common.RetryService", + "text": "RetryService" + }, + "; retryOnStale: ({ getService }: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => { (fn: () => Promise): Promise; wrap(fn: (...args: Args) => Promise): (...args: Args) => Promise; }; __webdriver__: ({ getService }: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => Promise<{ driver: ", + "WebDriver", + "; browserType: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.Browsers", + "text": "Browsers" + }, + "; consoleLog$: ", + "Observable", + "<{ message: string; level: string; }>; }>; find: (ctx: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => Promise<", + "FindService", + ">; }, {}, ProvidedTypeMap<{ retry: typeof ", + { + "pluginId": "@kbn/ftr-common-functional-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalServicesPluginApi", + "section": "def-common.RetryService", + "text": "RetryService" + }, + "; retryOnStale: ({ getService }: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => { (fn: () => Promise): Promise; wrap(fn: (...args: Args) => Promise): (...args: Args) => Promise; }; __webdriver__: ({ getService }: ", { "pluginId": "@kbn/ftr-common-functional-ui-services", "scope": "common", @@ -119,7 +10557,19 @@ "section": "def-common.FtrProviderContext", "text": "FtrProviderContext" }, - ") => { (fn: () => Promise): Promise; wrap(fn: (...args: Args) => Promise): (...args: Args) => Promise; }; }, {}, ProvidedTypeMap<{ retryOnStale: ({ getService }: ", + ") => Promise<{ driver: ", + "WebDriver", + "; browserType: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.Browsers", + "text": "Browsers" + }, + "; consoleLog$: ", + "Observable", + "<{ message: string; level: string; }>; }>; find: (ctx: ", { "pluginId": "@kbn/ftr-common-functional-ui-services", "scope": "common", @@ -127,13 +10577,305 @@ "section": "def-common.FtrProviderContext", "text": "FtrProviderContext" }, - ") => { (fn: () => Promise): Promise; wrap(fn: (...args: Args) => Promise): (...args: Args) => Promise; }; }>, ProvidedTypeMap<{}>>" + ") => Promise<", + "FindService", + ">; }>, ProvidedTypeMap<{}>>" ], "path": "packages/kbn-ftr-common-functional-ui-services/services/retry_on_stale.ts", "deprecated": false, "trackAdoption": false } ] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.services.__webdriver__", + "type": "Function", + "tags": [], + "label": "__webdriver__", + "description": [], + "signature": [ + "({ getService }: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => Promise<{ driver: ", + "WebDriver", + "; browserType: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.Browsers", + "text": "Browsers" + }, + "; consoleLog$: ", + "Observable", + "<{ message: string; level: string; }>; }>" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/all.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.services.__webdriver__.$1", + "type": "Object", + "tags": [], + "label": "__0", + "description": [], + "signature": [ + { + "pluginId": "@kbn/test", + "scope": "common", + "docId": "kibKbnTestPluginApi", + "section": "def-common.GenericFtrProviderContext", + "text": "GenericFtrProviderContext" + }, + "<{ retry: typeof ", + { + "pluginId": "@kbn/ftr-common-functional-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalServicesPluginApi", + "section": "def-common.RetryService", + "text": "RetryService" + }, + "; retryOnStale: ({ getService }: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => { (fn: () => Promise): Promise; wrap(fn: (...args: Args) => Promise): (...args: Args) => Promise; }; __webdriver__: ({ getService }: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => Promise<{ driver: ", + "WebDriver", + "; browserType: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.Browsers", + "text": "Browsers" + }, + "; consoleLog$: ", + "Observable", + "<{ message: string; level: string; }>; }>; find: (ctx: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => Promise<", + "FindService", + ">; }, {}, ProvidedTypeMap<{ retry: typeof ", + { + "pluginId": "@kbn/ftr-common-functional-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalServicesPluginApi", + "section": "def-common.RetryService", + "text": "RetryService" + }, + "; retryOnStale: ({ getService }: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => { (fn: () => Promise): Promise; wrap(fn: (...args: Args) => Promise): (...args: Args) => Promise; }; __webdriver__: ({ getService }: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => Promise<{ driver: ", + "WebDriver", + "; browserType: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.Browsers", + "text": "Browsers" + }, + "; consoleLog$: ", + "Observable", + "<{ message: string; level: string; }>; }>; find: (ctx: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => Promise<", + "FindService", + ">; }>, ProvidedTypeMap<{}>>" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/remote.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.services.find", + "type": "Function", + "tags": [], + "label": "find", + "description": [], + "signature": [ + "(ctx: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => Promise<", + "FindService", + ">" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/all.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.services.find.$1", + "type": "Object", + "tags": [], + "label": "ctx", + "description": [], + "signature": [ + { + "pluginId": "@kbn/test", + "scope": "common", + "docId": "kibKbnTestPluginApi", + "section": "def-common.GenericFtrProviderContext", + "text": "GenericFtrProviderContext" + }, + "<{ retry: typeof ", + { + "pluginId": "@kbn/ftr-common-functional-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalServicesPluginApi", + "section": "def-common.RetryService", + "text": "RetryService" + }, + "; retryOnStale: ({ getService }: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => { (fn: () => Promise): Promise; wrap(fn: (...args: Args) => Promise): (...args: Args) => Promise; }; __webdriver__: ({ getService }: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => Promise<{ driver: ", + "WebDriver", + "; browserType: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.Browsers", + "text": "Browsers" + }, + "; consoleLog$: ", + "Observable", + "<{ message: string; level: string; }>; }>; find: (ctx: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => Promise<", + "FindService", + ">; }, {}, ProvidedTypeMap<{ retry: typeof ", + { + "pluginId": "@kbn/ftr-common-functional-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalServicesPluginApi", + "section": "def-common.RetryService", + "text": "RetryService" + }, + "; retryOnStale: ({ getService }: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => { (fn: () => Promise): Promise; wrap(fn: (...args: Args) => Promise): (...args: Args) => Promise; }; __webdriver__: ({ getService }: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => Promise<{ driver: ", + "WebDriver", + "; browserType: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.Browsers", + "text": "Browsers" + }, + "; consoleLog$: ", + "Observable", + "<{ message: string; level: string; }>; }>; find: (ctx: ", + { + "pluginId": "@kbn/ftr-common-functional-ui-services", + "scope": "common", + "docId": "kibKbnFtrCommonFunctionalUiServicesPluginApi", + "section": "def-common.FtrProviderContext", + "text": "FtrProviderContext" + }, + ") => Promise<", + "FindService", + ">; }>, ProvidedTypeMap<{}>>" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/find.ts", + "deprecated": false, + "trackAdoption": false + } + ] } ], "initialIsOpen": false diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index 5ae37e8d16e56..0462d908e9c32 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; @@ -21,13 +21,22 @@ Contact [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) for | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 4 | 0 | 4 | 0 | +| 435 | 3 | 400 | 1 | ## Common ### Objects +### Classes + + +### Interfaces + + +### Enums + + ### Consts, variables and types diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 36eafb28920c1..6de650b834e42 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2024-01-04 +date: 2024-01-05 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 c1df6a5359777..6a42e84834c09 100644 --- a/api_docs/kbn_generate_console_definitions.mdx +++ b/api_docs/kbn_generate_console_definitions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions title: "@kbn/generate-console-definitions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-console-definitions plugin -date: 2024-01-04 +date: 2024-01-05 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 7bac3ecd7910f..9bb02531f5623 100644 --- a/api_docs/kbn_generate_csv.mdx +++ b/api_docs/kbn_generate_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv title: "@kbn/generate-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index db5cdc5bfb7da..164703f1c67fc 100644 --- a/api_docs/kbn_guided_onboarding.mdx +++ b/api_docs/kbn_guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding title: "@kbn/guided-onboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/guided-onboarding plugin -date: 2024-01-04 +date: 2024-01-05 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 6a0befe70ba7f..589a9a4b0d095 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2024-01-04 +date: 2024-01-05 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 bb37a568b1ec5..4ae37ede28201 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 627e55d7366ab..ed4112af4b5c0 100644 --- a/api_docs/kbn_health_gateway_server.mdx +++ b/api_docs/kbn_health_gateway_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server title: "@kbn/health-gateway-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/health-gateway-server plugin -date: 2024-01-04 +date: 2024-01-05 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 441e0efe22fd7..cb2f6b7600b42 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2024-01-04 +date: 2024-01-05 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 6799d3dd72d8a..4ce220fd843db 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2024-01-04 +date: 2024-01-05 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 8a55b88394817..2d89ab1962b22 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2024-01-04 +date: 2024-01-05 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 11fa0001cf29a..c585b16a07e40 100644 --- a/api_docs/kbn_i18n_react.mdx +++ b/api_docs/kbn_i18n_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react title: "@kbn/i18n-react" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n-react plugin -date: 2024-01-04 +date: 2024-01-05 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 ec1fb89e48854..2df53cd7c60bc 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2024-01-04 +date: 2024-01-05 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 7f40747ccdcba..65a3c9801acf2 100644 --- a/api_docs/kbn_infra_forge.mdx +++ b/api_docs/kbn_infra_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge title: "@kbn/infra-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/infra-forge plugin -date: 2024-01-04 +date: 2024-01-05 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 6ac0d16ef0a88..1ca1131298dc3 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 75987734e69fd..c2e410c6fcf88 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 9e823e2397576..ff2f8c4ab99a6 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2024-01-04 +date: 2024-01-05 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 8f1a3030fbbb7..b96dc45e7ae7a 100644 --- a/api_docs/kbn_journeys.mdx +++ b/api_docs/kbn_journeys.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys title: "@kbn/journeys" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/journeys plugin -date: 2024-01-04 +date: 2024-01-05 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 c49f1a87109fb..7d530618c92dc 100644 --- a/api_docs/kbn_json_ast.mdx +++ b/api_docs/kbn_json_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast title: "@kbn/json-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-ast plugin -date: 2024-01-04 +date: 2024-01-05 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 5f60c54d9642c..45c9a15b7ed21 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2024-01-04 +date: 2024-01-05 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 324f24f8675e0..ef6c7127fc184 100644 --- a/api_docs/kbn_language_documentation_popover.mdx +++ b/api_docs/kbn_language_documentation_popover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover title: "@kbn/language-documentation-popover" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation-popover plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 545336948dd3e..8fc7964ba9fcc 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_lens_formula_docs.mdx b/api_docs/kbn_lens_formula_docs.mdx index 49d87393a64b1..ada9e5adb714a 100644 --- a/api_docs/kbn_lens_formula_docs.mdx +++ b/api_docs/kbn_lens_formula_docs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-formula-docs title: "@kbn/lens-formula-docs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-formula-docs plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-formula-docs'] --- import kbnLensFormulaDocsObj from './kbn_lens_formula_docs.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 542f339b089d4..5e0b596c73ec1 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2024-01-04 +date: 2024-01-05 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 94d7cca0be296..713ab44ef6d71 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 bc1555c584f97..71d5d1b5bc0f9 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2024-01-04 +date: 2024-01-05 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 1bdb160fbc40a..cf9d1e9b01b3a 100644 --- a/api_docs/kbn_management_cards_navigation.mdx +++ b/api_docs/kbn_management_cards_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation title: "@kbn/management-cards-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-cards-navigation plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index 19b9ea606ec35..b8c533fcfb580 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index affa6056621a0..06ab3a7cc6a2c 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index 8ee7f834f3c6a..b4bf5e830f939 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index 68a0b2989d6d8..4638629c096b6 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index 01813717bb7ba..ade13d0cdbab0 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index 8c23fe69ea36b..e5d23eca5d4bf 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index a2af9654d6fd7..ef16bc6baa0ed 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index d8c9c2b467eae..8321ebeb4d893 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index 843c1a1a00164..969775d6e6d6f 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index 3c816e2185887..7a5b3363f7a30 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index eba599a7e5075..66fd051700142 100644 --- a/api_docs/kbn_management_storybook_config.mdx +++ b/api_docs/kbn_management_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config title: "@kbn/management-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-storybook-config plugin -date: 2024-01-04 +date: 2024-01-05 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 1f5342d2c4d1c..4d0bf1385439e 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2024-01-04 +date: 2024-01-05 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 c9bd0585c6686..3d33e69cc4618 100644 --- a/api_docs/kbn_maps_vector_tile_utils.mdx +++ b/api_docs/kbn_maps_vector_tile_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils title: "@kbn/maps-vector-tile-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/maps-vector-tile-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 5d2de4f593d7a..7c0c3e82d55c7 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 4ae0cd37048f3..81f73e0edfb76 100644 --- a/api_docs/kbn_ml_anomaly_utils.mdx +++ b/api_docs/kbn_ml_anomaly_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils title: "@kbn/ml-anomaly-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-anomaly-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 1749b7b94941d..cc4feb403b89f 100644 --- a/api_docs/kbn_ml_category_validator.mdx +++ b/api_docs/kbn_ml_category_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator title: "@kbn/ml-category-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-category-validator plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index 87aa68a02ce1e..4c0c3b7cee8ac 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index b51e24cfc9e02..57a98f81dfd03 100644 --- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx +++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils title: "@kbn/ml-data-frame-analytics-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-frame-analytics-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 15704541aba35..7e838f9aa80e0 100644 --- a/api_docs/kbn_ml_data_grid.mdx +++ b/api_docs/kbn_ml_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid title: "@kbn/ml-data-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-grid plugin -date: 2024-01-04 +date: 2024-01-05 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 7f1d1f24f296b..713ab86eba72a 100644 --- a/api_docs/kbn_ml_date_picker.mdx +++ b/api_docs/kbn_ml_date_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker title: "@kbn/ml-date-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-picker plugin -date: 2024-01-04 +date: 2024-01-05 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 32d332cb36251..531d9689ede3d 100644 --- a/api_docs/kbn_ml_date_utils.mdx +++ b/api_docs/kbn_ml_date_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils title: "@kbn/ml-date-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 0817c29408526..06d7b83320e3f 100644 --- a/api_docs/kbn_ml_error_utils.mdx +++ b/api_docs/kbn_ml_error_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils title: "@kbn/ml-error-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-error-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 7b99edefb5d33..b357ace2ee946 100644 --- a/api_docs/kbn_ml_in_memory_table.mdx +++ b/api_docs/kbn_ml_in_memory_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table title: "@kbn/ml-in-memory-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-in-memory-table plugin -date: 2024-01-04 +date: 2024-01-05 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 ba7f8df01c943..2e312df561945 100644 --- a/api_docs/kbn_ml_is_defined.mdx +++ b/api_docs/kbn_ml_is_defined.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined title: "@kbn/ml-is-defined" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-defined plugin -date: 2024-01-04 +date: 2024-01-05 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 cc3caa796ca3f..d48cdf4046fc5 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2024-01-04 +date: 2024-01-05 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 2baaadefca37e..4ec1d8121e4c2 100644 --- a/api_docs/kbn_ml_kibana_theme.mdx +++ b/api_docs/kbn_ml_kibana_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-kibana-theme title: "@kbn/ml-kibana-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-kibana-theme plugin -date: 2024-01-04 +date: 2024-01-05 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 9c43a57f9ec49..98ae63d633221 100644 --- a/api_docs/kbn_ml_local_storage.mdx +++ b/api_docs/kbn_ml_local_storage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage title: "@kbn/ml-local-storage" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-local-storage plugin -date: 2024-01-04 +date: 2024-01-05 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 ea76351c49442..523f7f330185d 100644 --- a/api_docs/kbn_ml_nested_property.mdx +++ b/api_docs/kbn_ml_nested_property.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property title: "@kbn/ml-nested-property" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-nested-property plugin -date: 2024-01-04 +date: 2024-01-05 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 8d5b4fd623e5c..a0f36bfe015a3 100644 --- a/api_docs/kbn_ml_number_utils.mdx +++ b/api_docs/kbn_ml_number_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils title: "@kbn/ml-number-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-number-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 c647a2df0a9e5..c5e8f8edace08 100644 --- a/api_docs/kbn_ml_query_utils.mdx +++ b/api_docs/kbn_ml_query_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils title: "@kbn/ml-query-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-query-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 a841aba311646..d4d831344a17e 100644 --- a/api_docs/kbn_ml_random_sampler_utils.mdx +++ b/api_docs/kbn_ml_random_sampler_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils title: "@kbn/ml-random-sampler-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-random-sampler-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 ccd80736003c1..4551285ea2a57 100644 --- a/api_docs/kbn_ml_route_utils.mdx +++ b/api_docs/kbn_ml_route_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils title: "@kbn/ml-route-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-route-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 492263a8f3d01..bee10c0479887 100644 --- a/api_docs/kbn_ml_runtime_field_utils.mdx +++ b/api_docs/kbn_ml_runtime_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils title: "@kbn/ml-runtime-field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-runtime-field-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 f25d70b6cd1f1..9c7000dd9be24 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2024-01-04 +date: 2024-01-05 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 a11036a8ec060..44814479857cd 100644 --- a/api_docs/kbn_ml_trained_models_utils.mdx +++ b/api_docs/kbn_ml_trained_models_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils title: "@kbn/ml-trained-models-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-trained-models-utils plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_ui_actions.mdx b/api_docs/kbn_ml_ui_actions.mdx index 77579773f2d25..667842156e967 100644 --- a/api_docs/kbn_ml_ui_actions.mdx +++ b/api_docs/kbn_ml_ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-ui-actions title: "@kbn/ml-ui-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-ui-actions plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-ui-actions'] --- import kbnMlUiActionsObj from './kbn_ml_ui_actions.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index eb3fc4d159e98..e4f78f9b55ce5 100644 --- a/api_docs/kbn_ml_url_state.mdx +++ b/api_docs/kbn_ml_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state title: "@kbn/ml-url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-url-state plugin -date: 2024-01-04 +date: 2024-01-05 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 af33db98bd479..120703eb8f8e3 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2024-01-04 +date: 2024-01-05 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 3a7f7718854db..09475095c3a01 100644 --- a/api_docs/kbn_object_versioning.mdx +++ b/api_docs/kbn_object_versioning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning title: "@kbn/object-versioning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning plugin -date: 2024-01-04 +date: 2024-01-05 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 c9745d645c585..e94b1206eb35f 100644 --- a/api_docs/kbn_observability_alert_details.mdx +++ b/api_docs/kbn_observability_alert_details.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details title: "@kbn/observability-alert-details" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alert-details plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index 42a2150e00911..0008d5c38e268 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index b13a5137b825e..84ec788e62c3f 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index bd8a7f9a511aa..605f12107057a 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index f351063dc53f1..b79a5e2986ab7 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 106de241e3f71..9c6bc1d29b408 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2024-01-04 +date: 2024-01-05 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 3c99f96697c13..6469a938998c6 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2024-01-04 +date: 2024-01-05 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 9ec21c688095b..c85afb88f8fde 100644 --- a/api_docs/kbn_osquery_io_ts_types.mdx +++ b/api_docs/kbn_osquery_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types title: "@kbn/osquery-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/osquery-io-ts-types plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index 95b31bd16993f..5022c3172234d 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 7bb20cc446e44..db9a30d30413c 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2024-01-04 +date: 2024-01-05 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 9a2911c70c02a..00156ca303a8e 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2024-01-04 +date: 2024-01-05 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 0264711c85004..7f428a6f42bb0 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index 6f0b23f99b947..1728df95bbb6a 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 3f36204f291bd..1a285560c8fcd 100644 --- a/api_docs/kbn_random_sampling.mdx +++ b/api_docs/kbn_random_sampling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling title: "@kbn/random-sampling" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/random-sampling plugin -date: 2024-01-04 +date: 2024-01-05 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 ae92727810f60..abdfac7d3d923 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2024-01-04 +date: 2024-01-05 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 752c4a1b3b5ba..3f4c70a79e52e 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2024-01-04 +date: 2024-01-05 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 3ab51934192ba..ccd5848f67a07 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2024-01-04 +date: 2024-01-05 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 b428dd102f64e..9207d0cc6b108 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2024-01-04 +date: 2024-01-05 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 ec8467440e1cc..adab4ef567b74 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2024-01-04 +date: 2024-01-05 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 425336cc11126..1c46a73334acf 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2024-01-04 +date: 2024-01-05 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 ae9ad6538f42e..a8cdf13cc1b7b 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2024-01-04 +date: 2024-01-05 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 934e8dc6db220..62b20e0a98ab4 100644 --- a/api_docs/kbn_repo_file_maps.mdx +++ b/api_docs/kbn_repo_file_maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps title: "@kbn/repo-file-maps" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-file-maps plugin -date: 2024-01-04 +date: 2024-01-05 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 8452c33949f34..e15893489ec43 100644 --- a/api_docs/kbn_repo_linter.mdx +++ b/api_docs/kbn_repo_linter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter title: "@kbn/repo-linter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-linter plugin -date: 2024-01-04 +date: 2024-01-05 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 d1b4e65b919cc..aca4a25831e86 100644 --- a/api_docs/kbn_repo_path.mdx +++ b/api_docs/kbn_repo_path.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path title: "@kbn/repo-path" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-path plugin -date: 2024-01-04 +date: 2024-01-05 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 544e2b0664268..8a30094caf7ba 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2024-01-04 +date: 2024-01-05 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 5e307d64f309a..f2cfe051b8fa8 100644 --- a/api_docs/kbn_reporting_common.mdx +++ b/api_docs/kbn_reporting_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common title: "@kbn/reporting-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-common plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index cffea7d370a0f..b1ff7cddfad7f 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index 3c031d6311cba..f4109d758df9f 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index a55f05c20655c..f02299934a5dd 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index 16068bfc850d3..8af8ba3cbc754 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index 888ab158d8b78..54ee56dcb94eb 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index edeaa5bcba34a..7cea2352eefdb 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index fd930185f2947..85491a2b203df 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index efc40ca26ab59..1629166e8c757 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index 4c448634c1009..358f2b46ceee0 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index b30087977bd6a..c0b9efd073b9d 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index e3d821bf69509..f2262eb5c3f03 100644 --- a/api_docs/kbn_rison.mdx +++ b/api_docs/kbn_rison.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison title: "@kbn/rison" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rison plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index 41dd91c10405b..05ce5fffc3fbc 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index d7667564e2673..4e31b1f5d6234 100644 --- a/api_docs/kbn_rrule.mdx +++ b/api_docs/kbn_rrule.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule title: "@kbn/rrule" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rrule plugin -date: 2024-01-04 +date: 2024-01-05 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 ba718f93a7ea5..0b65f616203c9 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 6dde8ce80a6b5..c99b93756f8cb 100644 --- a/api_docs/kbn_saved_objects_settings.mdx +++ b/api_docs/kbn_saved_objects_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings title: "@kbn/saved-objects-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-objects-settings plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index a13947e6e5261..051247be85c72 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index 87f07895068e2..f0f0fb76dac2a 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index 6436525cb6a0b..e623995ddec52 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index be8ab42529bc2..d1ca218b8c1f3 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index 7fdb3a3cf28fe..6cb31ef0814de 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index dbee323f97b17..f422a3f537b5f 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index 98b7d98ee4725..9554c4323a80a 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index e0f56bc22e011..e7aa4d3a2dd0c 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index 2fbb7e118c612..9ee6d05d0319a 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index 92e8e8344b2b6..c1b27ac7e22ca 100644 --- a/api_docs/kbn_security_solution_navigation.mdx +++ b/api_docs/kbn_security_solution_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation title: "@kbn/security-solution-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-navigation plugin -date: 2024-01-04 +date: 2024-01-05 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 aff5bd1085fa8..e8d753976dbb2 100644 --- a/api_docs/kbn_security_solution_side_nav.mdx +++ b/api_docs/kbn_security_solution_side_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav title: "@kbn/security-solution-side-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-side-nav plugin -date: 2024-01-04 +date: 2024-01-05 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 dc21480479027..5987e154ad976 100644 --- a/api_docs/kbn_security_solution_storybook_config.mdx +++ b/api_docs/kbn_security_solution_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config title: "@kbn/security-solution-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-storybook-config plugin -date: 2024-01-04 +date: 2024-01-05 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 7163dac06cdc2..c00585e7e584d 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2024-01-04 +date: 2024-01-05 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 90937af245e19..31edbe0e987bf 100644 --- a/api_docs/kbn_securitysolution_data_table.mdx +++ b/api_docs/kbn_securitysolution_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table title: "@kbn/securitysolution-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-data-table plugin -date: 2024-01-04 +date: 2024-01-05 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 51e74190ac751..79ae0889e9b56 100644 --- a/api_docs/kbn_securitysolution_ecs.mdx +++ b/api_docs/kbn_securitysolution_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs title: "@kbn/securitysolution-ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-ecs plugin -date: 2024-01-04 +date: 2024-01-05 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 17a40ed54bda2..e2d8ecabdd015 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 b2afeec510c3c..f3d16f98cfe50 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.mdx +++ b/api_docs/kbn_securitysolution_exception_list_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components title: "@kbn/securitysolution-exception-list-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-exception-list-components plugin -date: 2024-01-04 +date: 2024-01-05 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 db37eb84d8666..9f5e7ab288089 100644 --- a/api_docs/kbn_securitysolution_grouping.mdx +++ b/api_docs/kbn_securitysolution_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-grouping title: "@kbn/securitysolution-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-grouping plugin -date: 2024-01-04 +date: 2024-01-05 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 0854b53299222..72daa43ab655d 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 acb3294dcff1b..1fec8a6afab41 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2024-01-04 +date: 2024-01-05 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 ea3f440adbbeb..a3bc207155a34 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2024-01-04 +date: 2024-01-05 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 4e888725a1da8..f267d2864ebb5 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2024-01-04 +date: 2024-01-05 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 0ffb44db27367..cca115723befe 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 40e6da5004cc5..3004e887c712d 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2024-01-04 +date: 2024-01-05 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 18f0cf1ae0ee2..9ef0c846b50eb 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2024-01-04 +date: 2024-01-05 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 2a3347f55bae6..f3422437f90ea 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2024-01-04 +date: 2024-01-05 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 c1ee608bb1db2..641c80338bae4 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 afa1e118ebf3e..e0b25aa2b53ea 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2024-01-04 +date: 2024-01-05 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 a87fc0b2ac0ed..861b75ea630ba 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2024-01-04 +date: 2024-01-05 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 95f3463571774..4d3732c8fd04d 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2024-01-04 +date: 2024-01-05 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 ae4b50cd3bb4a..435496895bfa2 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2024-01-04 +date: 2024-01-05 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 937fee8f57568..e602b89e617b1 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index f81861d2b7a22..c77f381d416dc 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index ae38e144c548d..def8a59b63c0b 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index 2f55b792e84bf..8b03d326266bc 100644 --- a/api_docs/kbn_serverless_project_switcher.mdx +++ b/api_docs/kbn_serverless_project_switcher.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher title: "@kbn/serverless-project-switcher" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-project-switcher plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index c6dc4f07ec729..05330095c4f34 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index 83ebdf1d77e17..7ec53585281d3 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index ec1bab55da237..09a17afeb930c 100644 --- a/api_docs/kbn_serverless_storybook_config.mdx +++ b/api_docs/kbn_serverless_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config title: "@kbn/serverless-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-storybook-config plugin -date: 2024-01-04 +date: 2024-01-05 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 5431f9e167731..823411fdbf8fe 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2024-01-04 +date: 2024-01-05 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 066131a53df68..c409b690c6456 100644 --- a/api_docs/kbn_shared_ux_avatar_solution.mdx +++ b/api_docs/kbn_shared_ux_avatar_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution title: "@kbn/shared-ux-avatar-solution" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-solution plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index 3938867793590..cac9a71252c5b 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen title: "@kbn/shared-ux-button-exit-full-screen" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index ef44ec1d7e587..88dded75428d6 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2024-01-04 +date: 2024-01-05 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 c3f456f227f0d..aa75fb31f0aae 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data title: "@kbn/shared-ux-card-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2024-01-04 +date: 2024-01-05 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 5d15ab603ca6c..6f7b65aac95ba 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 bc6f88412940d..5d17a765d2304 100644 --- a/api_docs/kbn_shared_ux_chrome_navigation.mdx +++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation title: "@kbn/shared-ux-chrome-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-chrome-navigation plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index 54073921400a3..d78f20c30eafc 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index bc71b9ad9324d..d64d3da11302b 100644 --- a/api_docs/kbn_shared_ux_file_context.mdx +++ b/api_docs/kbn_shared_ux_file_context.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context title: "@kbn/shared-ux-file-context" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-context plugin -date: 2024-01-04 +date: 2024-01-05 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 5bf4b8888bcf7..33f63c702108c 100644 --- a/api_docs/kbn_shared_ux_file_image.mdx +++ b/api_docs/kbn_shared_ux_file_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image title: "@kbn/shared-ux-file-image" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image plugin -date: 2024-01-04 +date: 2024-01-05 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 b0657728c183f..a76fa0df487e8 100644 --- a/api_docs/kbn_shared_ux_file_image_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks title: "@kbn/shared-ux-file-image-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 a3c5b0c967b45..683855969b416 100644 --- a/api_docs/kbn_shared_ux_file_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks title: "@kbn/shared-ux-file-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 f4a8ac64778b2..55fa022e43351 100644 --- a/api_docs/kbn_shared_ux_file_picker.mdx +++ b/api_docs/kbn_shared_ux_file_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker title: "@kbn/shared-ux-file-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-picker plugin -date: 2024-01-04 +date: 2024-01-05 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 5a36f4e70f4b7..40068d1b30a11 100644 --- a/api_docs/kbn_shared_ux_file_types.mdx +++ b/api_docs/kbn_shared_ux_file_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types title: "@kbn/shared-ux-file-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-types plugin -date: 2024-01-04 +date: 2024-01-05 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 214d49cacc56c..52af2912e4994 100644 --- a/api_docs/kbn_shared_ux_file_upload.mdx +++ b/api_docs/kbn_shared_ux_file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload title: "@kbn/shared-ux-file-upload" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-upload plugin -date: 2024-01-04 +date: 2024-01-05 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 55a174557b7ba..329b66574c6ce 100644 --- a/api_docs/kbn_shared_ux_file_util.mdx +++ b/api_docs/kbn_shared_ux_file_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util title: "@kbn/shared-ux-file-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-util plugin -date: 2024-01-04 +date: 2024-01-05 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 dfd6ed1999a23..c120f8c1c345e 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app title: "@kbn/shared-ux-link-redirect-app" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app plugin -date: 2024-01-04 +date: 2024-01-05 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 8352f4b366f71..9a7ce12cf8acd 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 099046c2f5f2d..4c79a852c3905 100644 --- a/api_docs/kbn_shared_ux_markdown.mdx +++ b/api_docs/kbn_shared_ux_markdown.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown title: "@kbn/shared-ux-markdown" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown plugin -date: 2024-01-04 +date: 2024-01-05 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 99d0a0fe58b55..1a12232e0b2f4 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.mdx +++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks title: "@kbn/shared-ux-markdown-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 93d84a4d60904..d9d3673bd3bb7 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2024-01-04 +date: 2024-01-05 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 b7b893d353ce1..97714d7b54229 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 b2e2082bf682c..6600b947fe2e1 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2024-01-04 +date: 2024-01-05 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 7886c18d6e140..aa6aaa03ebf86 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 6a5df38fdb42b..87657ae6f1907 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2024-01-04 +date: 2024-01-05 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 cfc33d1476587..6bf28994f3b3a 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 9039fd3d9ddad..737dabad08b5b 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2024-01-04 +date: 2024-01-05 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 6b510fb7bb1d7..525aef5e95ca3 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2024-01-04 +date: 2024-01-05 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 f71530cb9c8ea..17c1929004f3d 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 538aa87c13941..40a7869373d11 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 40b76ca9599e6..891feab6e4df6 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2024-01-04 +date: 2024-01-05 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 b5c76b7869f4a..caa3acb9fbf2f 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2024-01-04 +date: 2024-01-05 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 40ea019a88d4e..d3bafe9772ef9 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 38f5104395b42..a7d8129d6771e 100644 --- a/api_docs/kbn_shared_ux_prompt_not_found.mdx +++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found title: "@kbn/shared-ux-prompt-not-found" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-not-found plugin -date: 2024-01-04 +date: 2024-01-05 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 339bdfe6f8a4f..bab20d3ae174b 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2024-01-04 +date: 2024-01-05 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 7389373f01590..2dbcdccbdae4c 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2024-01-04 +date: 2024-01-05 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 f791535672973..e5ceb4b1d0b33 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2024-01-04 +date: 2024-01-05 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 3f305dba05a87..6c3d9e5432ce5 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2024-01-04 +date: 2024-01-05 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 6eefeea597adf..66229d6d6b75b 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2024-01-04 +date: 2024-01-05 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 ebc02e018b762..91fe7f815a779 100644 --- a/api_docs/kbn_slo_schema.mdx +++ b/api_docs/kbn_slo_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema title: "@kbn/slo-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/slo-schema plugin -date: 2024-01-04 +date: 2024-01-05 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 4e4bcfdef739e..172a66d34cd48 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2024-01-04 +date: 2024-01-05 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 e41f4e72b5f45..903d805980252 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2024-01-04 +date: 2024-01-05 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 a59d24d575dd9..5a819a2483e7e 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2024-01-04 +date: 2024-01-05 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 463a6ccd8e6b4..ddf60813b3e6f 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2024-01-04 +date: 2024-01-05 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 d017bcc4387d9..d357765de093e 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2024-01-04 +date: 2024-01-05 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 dbc578273baf9..deef6f2d8bfa2 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2024-01-04 +date: 2024-01-05 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 90ad352d24301..ee0a17dd56e4b 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2024-01-04 +date: 2024-01-05 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 d2a83bfeb5823..8d65942208d82 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2024-01-04 +date: 2024-01-05 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 6fbbedbb4060e..1a147019c623f 100644 --- a/api_docs/kbn_text_based_editor.mdx +++ b/api_docs/kbn_text_based_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-text-based-editor title: "@kbn/text-based-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/text-based-editor plugin -date: 2024-01-04 +date: 2024-01-05 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 8394bd0a1bedd..0bcb9d298d2ad 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index 588370be25ebd..8c143f9b47d4c 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index a6f14944025e9..0bcc134f3bd72 100644 --- a/api_docs/kbn_ts_projects.mdx +++ b/api_docs/kbn_ts_projects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects title: "@kbn/ts-projects" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ts-projects plugin -date: 2024-01-04 +date: 2024-01-05 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 a98d6266b66b0..08cde87cb3cf6 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2024-01-04 +date: 2024-01-05 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 46ba6f2227f30..153d573a373e6 100644 --- a/api_docs/kbn_ui_actions_browser.mdx +++ b/api_docs/kbn_ui_actions_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser title: "@kbn/ui-actions-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-actions-browser plugin -date: 2024-01-04 +date: 2024-01-05 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 01f1a1b95e1f8..fb710c473e0b3 100644 --- a/api_docs/kbn_ui_shared_deps_src.mdx +++ b/api_docs/kbn_ui_shared_deps_src.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src title: "@kbn/ui-shared-deps-src" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-shared-deps-src plugin -date: 2024-01-04 +date: 2024-01-05 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 2054df010326b..7454b53b0e2f8 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index 32098ef443509..2380b7372f2f5 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index 99b430eb56fc9..79db7c5bfe3d9 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index 52be5cce13839..000295820d1cb 100644 --- a/api_docs/kbn_unified_field_list.mdx +++ b/api_docs/kbn_unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list title: "@kbn/unified-field-list" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-field-list plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index aae4e0e6b7214..455d75bd1f3da 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx index 52085bb35f2b4..530559e8179f5 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: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index 20ffe3d59787b..12971d1114d22 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 10edf6016074c..dc8b88022e02a 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index 7d3fc106dac29..202d72ad321f8 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2024-01-04 +date: 2024-01-05 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 c276f12da1e50..fad43a7ed0bdf 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2024-01-04 +date: 2024-01-05 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 f069f54e5d8c3..9835772148f74 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2024-01-04 +date: 2024-01-05 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 f5580d57a021d..844311235ca6d 100644 --- a/api_docs/kbn_visualization_ui_components.mdx +++ b/api_docs/kbn_visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components title: "@kbn/visualization-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-ui-components plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_visualization_utils.mdx b/api_docs/kbn_visualization_utils.mdx index 7f270fa1d36f3..daba78a1274ff 100644 --- a/api_docs/kbn_visualization_utils.mdx +++ b/api_docs/kbn_visualization_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-utils title: "@kbn/visualization-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-utils plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-utils'] --- import kbnVisualizationUtilsObj from './kbn_visualization_utils.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index ef70cc8f32ac4..ad4d3d9ec23ac 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 0c633dc5c27d5..a46de2706bd40 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index a418ec701d6cc..80db9667d58e5 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index f856e3a8ce372..ae784410c387a 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index b24f96cb3444e..a2a3d5c5ce4bb 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2024-01-04 +date: 2024-01-05 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 b5c7372638bcb..5ab86f6c3e6b7 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2024-01-04 +date: 2024-01-05 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 a5ffb3a455b9c..91f61d77ce8da 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the kubernetesSecurity plugin -date: 2024-01-04 +date: 2024-01-05 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 162d4ed72ae98..a85196d522907 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2024-01-04 +date: 2024-01-05 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 ea890b5957f21..d4a4818992a98 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2024-01-04 +date: 2024-01-05 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 e3b420f9e5b17..43deddf578652 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 14e73c2998c72..435dff6429fe9 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index cf0d1eed7664f..8961e4efc4e72 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 010957d4e13d3..e528494c28b51 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx index 7cfcac8ae5cf6..61e28f7dd904c 100644 --- a/api_docs/log_explorer.mdx +++ b/api_docs/log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logExplorer title: "logExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logExplorer plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer'] --- import logExplorerObj from './log_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 0353663c316d2..5df148d5030a2 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2024-01-04 +date: 2024-01-05 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 eea3cf75d8548..97c2448a4a607 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2024-01-04 +date: 2024-01-05 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 816acd8202392..8249fbd219284 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2024-01-04 +date: 2024-01-05 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 e7e002205a35a..2cb6c52f80293 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index 9fd89853595bd..f47cdcc792385 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 682e2bdebbdff..7147bfdacb014 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index d4b39b356cba6..fdadf8f97a194 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 2f971fff8ff49..de35753b2b772 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2024-01-04 +date: 2024-01-05 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 be8ae0637856b..6755ee6a39ee0 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2024-01-04 +date: 2024-01-05 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 9356cae6383b0..46c8c85aa1280 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2024-01-04 +date: 2024-01-05 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 9947a396715b1..48caf17193c0e 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index 3031839874fc8..e45789a082436 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 68875d62f9d62..f5e5b2f68ea4e 100644 --- a/api_docs/notifications.mdx +++ b/api_docs/notifications.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications title: "notifications" image: https://source.unsplash.com/400x175/?github description: API docs for the notifications plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index bbb951a816d2a..1aabd1bace5e3 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index 3f95923dd0f9c..4ebd383be1990 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_log_explorer.mdx b/api_docs/observability_log_explorer.mdx index 302ac71a55f4f..f6df8e3688821 100644 --- a/api_docs/observability_log_explorer.mdx +++ b/api_docs/observability_log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogExplorer title: "observabilityLogExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogExplorer plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogExplorer'] --- import observabilityLogExplorerObj from './observability_log_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index da8442b82ed09..41404c514c318 100644 --- a/api_docs/observability_onboarding.mdx +++ b/api_docs/observability_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding title: "observabilityOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityOnboarding plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index 74848aaa6f3f1..e625482424d63 100644 --- a/api_docs/observability_shared.mdx +++ b/api_docs/observability_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared title: "observabilityShared" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityShared plugin -date: 2024-01-04 +date: 2024-01-05 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 be0ab0aceff46..0506487c4bb88 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index be7778b29462f..6514a7ff90bca 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index c93080b72b3ad..c3f83b74fae47 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -21,7 +21,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 78161 | 234 | 66877 | 1696 | +| 78586 | 237 | 67267 | 1696 | ## Plugin Directory @@ -70,7 +70,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 37 | 0 | 35 | 2 | | | [@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/security-solution](https://github.com/orgs/elastic/teams/security-solution) | Server APIs for the Elastic AI Assistant | 36 | 0 | 28 | 0 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds embeddables service to Kibana | 547 | 1 | 446 | 8 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds embeddables service to Kibana | 541 | 1 | 440 | 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. | 53 | 0 | 46 | 1 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | Adds dashboards for discovering and managing Enterprise Search products. | 5 | 0 | 5 | 0 | @@ -469,7 +469,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 37 | 0 | 29 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 0 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 29 | 0 | 29 | 1 | -| | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 4 | 0 | 4 | 0 | +| | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 435 | 3 | 400 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 1 | 0 | 0 | 0 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 1 | 0 | 1 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 10 | 0 | 10 | 1 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 6e6c5741a6ec7..74e6e10decd07 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2024-01-04 +date: 2024-01-05 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 399dd64183353..29f635109fcc8 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index f6311d7c54487..d4b71e053ed65 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 78c2e5aa4aa53..44d743b543ed2 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2024-01-04 +date: 2024-01-05 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 40ad623e1af45..3329e5263415d 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2024-01-04 +date: 2024-01-05 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 250319a684a61..06ebfce041714 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2024-01-04 +date: 2024-01-05 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 c951acaa232dd..62e7671dd9895 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2024-01-04 +date: 2024-01-05 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 9db85c536b5c1..0fb857e630089 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2024-01-04 +date: 2024-01-05 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 603b1a75edb62..0892b8561c119 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index 9597a8287cc37..246e8be6725e1 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index a437d3b666cea..8a92cc6216763 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index e72d964311e90..cbaba9681304e 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2024-01-04 +date: 2024-01-05 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 903def8f53d00..8089744a3da73 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2024-01-04 +date: 2024-01-05 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 7ce63486b6cf5..122cd18cbcdc3 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2024-01-04 +date: 2024-01-05 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 87cc479ecea93..68c9adfa10b51 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2024-01-04 +date: 2024-01-05 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 fb382915fbd09..10361f87a534b 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 8fd74810bb99c..9bf5b994cc406 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.devdocs.json b/api_docs/security_solution.devdocs.json index c50901f256cad..816001e8e21b1 100644 --- a/api_docs/security_solution.devdocs.json +++ b/api_docs/security_solution.devdocs.json @@ -114,7 +114,7 @@ "label": "experimentalFeatures", "description": [], "signature": [ - "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly newHostDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; }" ], "path": "x-pack/plugins/security_solution/public/plugin.tsx", "deprecated": false, @@ -568,7 +568,7 @@ "\nExperimental flag needed to enable the link" ], "signature": [ - "\"tGridEnabled\" | \"tGridEventRenderedViewEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"chartEmbeddablesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"alertsPreviewChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"insightsRelatedAlertsByProcessAncestry\" | \"extendedRuleExecutionLoggingEnabled\" | \"assistantStreamingEnabled\" | \"socTrendsEnabled\" | \"responseActionsEnabled\" | \"endpointResponseActionsEnabled\" | \"responseActionUploadEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"alertsPageChartsEnabled\" | \"alertTypeEnabled\" | \"expandableFlyoutInCreateRuleEnabled\" | \"alertsPageFiltersEnabled\" | \"assistantModelEvaluation\" | \"newUserDetailsFlyout\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"entityAnalyticsAssetCriticalityEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"jsonPrebuiltRulesDiffingEnabled\" | \"timelineEsqlTabDisabled\" | undefined" + "\"tGridEnabled\" | \"tGridEventRenderedViewEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"chartEmbeddablesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"alertsPreviewChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"insightsRelatedAlertsByProcessAncestry\" | \"extendedRuleExecutionLoggingEnabled\" | \"assistantStreamingEnabled\" | \"socTrendsEnabled\" | \"responseActionsEnabled\" | \"endpointResponseActionsEnabled\" | \"responseActionUploadEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"alertsPageChartsEnabled\" | \"alertTypeEnabled\" | \"expandableFlyoutInCreateRuleEnabled\" | \"alertsPageFiltersEnabled\" | \"assistantModelEvaluation\" | \"newUserDetailsFlyout\" | \"newHostDetailsFlyout\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"entityAnalyticsAssetCriticalityEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"jsonPrebuiltRulesDiffingEnabled\" | \"timelineEsqlTabDisabled\" | undefined" ], "path": "x-pack/plugins/security_solution/public/common/links/types.ts", "deprecated": false, @@ -648,7 +648,7 @@ "\nExperimental flag needed to disable the link. Opposite of experimentalKey" ], "signature": [ - "\"tGridEnabled\" | \"tGridEventRenderedViewEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"chartEmbeddablesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"alertsPreviewChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"insightsRelatedAlertsByProcessAncestry\" | \"extendedRuleExecutionLoggingEnabled\" | \"assistantStreamingEnabled\" | \"socTrendsEnabled\" | \"responseActionsEnabled\" | \"endpointResponseActionsEnabled\" | \"responseActionUploadEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"alertsPageChartsEnabled\" | \"alertTypeEnabled\" | \"expandableFlyoutInCreateRuleEnabled\" | \"alertsPageFiltersEnabled\" | \"assistantModelEvaluation\" | \"newUserDetailsFlyout\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"entityAnalyticsAssetCriticalityEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"jsonPrebuiltRulesDiffingEnabled\" | \"timelineEsqlTabDisabled\" | undefined" + "\"tGridEnabled\" | \"tGridEventRenderedViewEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"chartEmbeddablesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"alertsPreviewChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"insightsRelatedAlertsByProcessAncestry\" | \"extendedRuleExecutionLoggingEnabled\" | \"assistantStreamingEnabled\" | \"socTrendsEnabled\" | \"responseActionsEnabled\" | \"endpointResponseActionsEnabled\" | \"responseActionUploadEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"alertsPageChartsEnabled\" | \"alertTypeEnabled\" | \"expandableFlyoutInCreateRuleEnabled\" | \"alertsPageFiltersEnabled\" | \"assistantModelEvaluation\" | \"newUserDetailsFlyout\" | \"newHostDetailsFlyout\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"entityAnalyticsAssetCriticalityEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"jsonPrebuiltRulesDiffingEnabled\" | \"timelineEsqlTabDisabled\" | undefined" ], "path": "x-pack/plugins/security_solution/public/common/links/types.ts", "deprecated": false, @@ -1913,7 +1913,7 @@ "label": "experimentalFeatures", "description": [], "signature": [ - "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly newHostDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; }" ], "path": "x-pack/plugins/security_solution/public/types.ts", "deprecated": false, @@ -3018,7 +3018,7 @@ "\nThe security solution generic experimental features" ], "signature": [ - "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly newHostDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; }" ], "path": "x-pack/plugins/security_solution/server/plugin_contract.ts", "deprecated": false, @@ -3194,7 +3194,7 @@ "label": "ExperimentalFeatures", "description": [], "signature": [ - "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly newHostDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; }" ], "path": "x-pack/plugins/security_solution/common/experimental_features.ts", "deprecated": false, @@ -3243,7 +3243,7 @@ "\nA list of allowed values that can be used in `xpack.securitySolution.enableExperimental`.\nThis object is then used to validate and parse the value entered." ], "signature": [ - "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly alertsPreviewChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly newHostDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly entityAnalyticsAssetCriticalityEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; }" ], "path": "x-pack/plugins/security_solution/common/experimental_features.ts", "deprecated": false, diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 8eef95d5129ce..ba6c70b164553 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index ffa55031142c3..25f68ee7e5510 100644 --- a/api_docs/security_solution_ess.mdx +++ b/api_docs/security_solution_ess.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss title: "securitySolutionEss" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionEss plugin -date: 2024-01-04 +date: 2024-01-05 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 1424cf9913554..c3e1d15be89e9 100644 --- a/api_docs/security_solution_serverless.mdx +++ b/api_docs/security_solution_serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless title: "securitySolutionServerless" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionServerless plugin -date: 2024-01-04 +date: 2024-01-05 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 2e7a6aadd704b..077333a053dfb 100644 --- a/api_docs/serverless.mdx +++ b/api_docs/serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless title: "serverless" image: https://source.unsplash.com/400x175/?github description: API docs for the serverless plugin -date: 2024-01-04 +date: 2024-01-05 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 1bf96e28966e0..534e533edab52 100644 --- a/api_docs/serverless_observability.mdx +++ b/api_docs/serverless_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability title: "serverlessObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessObservability plugin -date: 2024-01-04 +date: 2024-01-05 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 fc4b453d0c79d..102604d95ab79 100644 --- a/api_docs/serverless_search.mdx +++ b/api_docs/serverless_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch title: "serverlessSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSearch plugin -date: 2024-01-04 +date: 2024-01-05 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 2f8c9f437ccb8..763ca419fed88 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2024-01-04 +date: 2024-01-05 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 a0d28e5a26b04..339d6c508087c 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2024-01-04 +date: 2024-01-05 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 dba4bc4e7e8b5..21f5f0258bc20 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2024-01-04 +date: 2024-01-05 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 f638dca83f957..4c7128a9930d5 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2024-01-04 +date: 2024-01-05 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 88a3c55dc67b7..27324a3195cd1 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2024-01-04 +date: 2024-01-05 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 86f2c02b51559..fad3a15191dcb 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2024-01-04 +date: 2024-01-05 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 56924fd413208..b73de4d4a8f85 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2024-01-04 +date: 2024-01-05 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 4fad05863370d..adbb8316668a9 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2024-01-04 +date: 2024-01-05 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 a690d153a5453..dac5b90d56c34 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2024-01-04 +date: 2024-01-05 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 1a6dadc567f66..d4800130c11ed 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionXpack plugin -date: 2024-01-04 +date: 2024-01-05 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 d280cb1dbe2d7..b802885ce63c8 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2024-01-04 +date: 2024-01-05 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 cc12aff43841a..90f4c737ef5d5 100644 --- a/api_docs/text_based_languages.mdx +++ b/api_docs/text_based_languages.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/textBasedLanguages title: "textBasedLanguages" image: https://source.unsplash.com/400x175/?github description: API docs for the textBasedLanguages plugin -date: 2024-01-04 +date: 2024-01-05 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 b2400c6a56059..e65d055c5015b 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2024-01-04 +date: 2024-01-05 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 089062e668317..623a249277ff8 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2024-01-04 +date: 2024-01-05 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 e1380a11e5fb2..c8d87b3d53b18 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 34d9b1ae953ba..a88344d51d8fe 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 14ec4d033c757..0588c01b591f6 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 06ed1525dd171..be083bd8db8b1 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index 9a912ac1027c1..0bd5ea3e32041 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 9bec81e68ad55..bcbef43c6e33b 100644 --- a/api_docs/unified_histogram.mdx +++ b/api_docs/unified_histogram.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram title: "unifiedHistogram" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedHistogram plugin -date: 2024-01-04 +date: 2024-01-05 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 b98e1e61aa279..3b4027f728d85 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2024-01-04 +date: 2024-01-05 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 1d7c6f9317dfd..5d9fe8a04f0c1 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2024-01-04 +date: 2024-01-05 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 92ee3d44518da..779a7b84fe526 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2024-01-04 +date: 2024-01-05 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 d7d4d5e1139d6..5a91922a20ba3 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2024-01-04 +date: 2024-01-05 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 5672f86c23a08..1938ebf53a753 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2024-01-04 +date: 2024-01-05 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 024cb71786684..669c55c297b0e 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2024-01-04 +date: 2024-01-05 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 18110a2986cd7..65878ec3d271e 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2024-01-04 +date: 2024-01-05 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 6d093cb710b76..c89a81f472595 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2024-01-04 +date: 2024-01-05 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 1320fe72ef085..5390a71f9dd26 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2024-01-04 +date: 2024-01-05 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 19d7fa2ba0e22..4f11ecdc9acea 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2024-01-04 +date: 2024-01-05 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 358e0aa109bfd..888f28ef64f7e 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2024-01-04 +date: 2024-01-05 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 8e70657f3210d..dcd8f9dc2e15a 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2024-01-04 +date: 2024-01-05 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 8df27109a1300..9df8977c8abe0 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2024-01-04 +date: 2024-01-05 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 0c5734a0dbf20..b675520306dd3 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2024-01-04 +date: 2024-01-05 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 4e0db374f9487..e75e83e13f70a 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2024-01-04 +date: 2024-01-05 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 193a6c9b0e2c7..cf476fb5dc48c 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2024-01-04 +date: 2024-01-05 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 7232243e38c10..22233095d28e5 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2024-01-04 +date: 2024-01-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 35514f7fec7119f3d1dc60ab804776c867d6ec29 Mon Sep 17 00:00:00 2001 From: Julia Bardi <90178898+juliaElastic@users.noreply.github.com> Date: Fri, 5 Jan 2024 09:19:51 +0100 Subject: [PATCH 132/323] [Fleet] fix kafka ssl key secret update (#174261) ## Summary Closes https://github.com/elastic/kibana/issues/174227 Fix wrong field used for kafka ssl key secret input which broke ssl key on kafka output update. To verify: - create a kafka output with Authentication: SSL, fill out cert and key - verify that the value of the key is stored as secret in `.fleet-secrets` - update kafka output (e.g. change name) - verify that the ssl key is unchanged image --- .../settings/components/edit_output_flyout/use_output_form.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 a1d0fb484b44f..81753d9c56c38 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 @@ -399,7 +399,7 @@ export function useOutputForm(onSucess: () => void, output?: Output) { ); const kafkaSslKeySecretInput = useSecretInput( - kafkaOutput?.ssl?.certificate, + kafkaOutput?.secrets?.ssl?.key, kafkaAuthMethodInput.value === kafkaAuthType.Ssl ? validateSSLKeySecret : undefined, isSSLEditable ); From 702b207d2d93019e9efa3f00fdd48c9328c2f893 Mon Sep 17 00:00:00 2001 From: Maryam Saeidi Date: Fri, 5 Jan 2024 11:30:10 +0100 Subject: [PATCH 133/323] [Custom threshold] Add log rate analysis to the alert details page for one document count aggregation (#174031) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #171163 ## Summary This PR adds log rate analysis to the alert details page for one document count aggregation if the user has a license above platinum. This is a similar implementation in the log threshold alert details page. ![image](https://github.com/elastic/kibana/assets/12370520/29cd29bf-ead5-4574-8121-739d3ed11fe7) ## 🧪 How to test? - Create a Custom threshold rule with only one document count aggregation - Optional filter, document count aggregation filter, and group by information will be applied to the query of this component. - Go to the alert details page, you should see the log rate analysis on this page --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../common/custom_threshold_rule/types.ts | 5 + .../utils/get_interval_in_seconds.test.ts | 28 +++ .../common/utils/get_interval_in_seconds.ts | 32 +++ x-pack/plugins/observability/kibana.jsonc | 1 + .../alert_search_bar/alert_search_bar.tsx | 22 +- .../alert_details_app_section.test.tsx.snap | 0 .../alert_details_app_section.test.tsx | 8 +- .../alert_details_app_section.tsx | 28 ++- .../log_rate_analysis_query.test.ts.snap | 222 ++++++++++++++++ .../helpers/get_initial_analysis_start.ts | 58 +++++ .../helpers/log_rate_analysis_query.test.ts | 98 ++++++++ .../helpers/log_rate_analysis_query.ts | 62 +++++ .../log_rate_analysis.tsx | 238 ++++++++++++++++++ .../mocks/custom_threshold_rule.ts | 5 +- .../observability/public/hooks/use_license.ts | 4 +- .../public/pages/overview/overview.tsx | 18 +- x-pack/plugins/observability/public/plugin.ts | 3 + .../register_observability_rule_types.ts | 5 +- .../build_es_query/build_es_query.test.ts | 2 +- .../utils/build_es_query/build_es_query.ts | 14 +- .../custom_threshold/lib/evaluate_rule.ts | 3 +- .../lib/rules/custom_threshold/utils.ts | 26 -- x-pack/plugins/observability/tsconfig.json | 4 +- 23 files changed, 816 insertions(+), 70 deletions(-) create mode 100644 x-pack/plugins/observability/common/utils/get_interval_in_seconds.test.ts create mode 100644 x-pack/plugins/observability/common/utils/get_interval_in_seconds.ts rename x-pack/plugins/observability/public/components/custom_threshold/components/{ => alert_details_app_section}/__snapshots__/alert_details_app_section.test.tsx.snap (100%) rename x-pack/plugins/observability/public/components/custom_threshold/components/{ => alert_details_app_section}/alert_details_app_section.test.tsx (94%) rename x-pack/plugins/observability/public/components/custom_threshold/components/{ => alert_details_app_section}/alert_details_app_section.tsx (86%) create mode 100644 x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap create mode 100644 x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/get_initial_analysis_start.ts create mode 100644 x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.test.ts create mode 100644 x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.ts create mode 100644 x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/log_rate_analysis.tsx diff --git a/x-pack/plugins/observability/common/custom_threshold_rule/types.ts b/x-pack/plugins/observability/common/custom_threshold_rule/types.ts index 7668e19dc3900..67849df1b59d7 100644 --- a/x-pack/plugins/observability/common/custom_threshold_rule/types.ts +++ b/x-pack/plugins/observability/common/custom_threshold_rule/types.ts @@ -107,6 +107,11 @@ export enum InfraFormatterType { percent = 'percent', } +// Custom threshold alert types + +// Alert fields['kibana.alert.group] type +export type GroupBy = Array<{ field: string; value: string }>; + /* * Utils * diff --git a/x-pack/plugins/observability/common/utils/get_interval_in_seconds.test.ts b/x-pack/plugins/observability/common/utils/get_interval_in_seconds.test.ts new file mode 100644 index 0000000000000..f2654a224ae86 --- /dev/null +++ b/x-pack/plugins/observability/common/utils/get_interval_in_seconds.test.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getIntervalInSeconds } from './get_interval_in_seconds'; + +describe('getIntervalInSeconds', () => { + const testData = [ + { interval: '5ms', result: 0.005 }, + { interval: '70s', result: 70 }, + { interval: '25m', result: 1500 }, + { interval: '10h', result: 36000 }, + { interval: '3d', result: 259200 }, + { interval: '1w', result: 604800 }, + { interval: '1y', result: 30758400 }, + ]; + + it.each(testData)('getIntervalInSeconds($interval) = $result', ({ interval, result }) => { + expect(getIntervalInSeconds(interval)).toBe(result); + }); + + it('Throws error if interval is not valid', () => { + expect(() => getIntervalInSeconds('invalid')).toThrow('Invalid interval string format.'); + }); +}); diff --git a/x-pack/plugins/observability/common/utils/get_interval_in_seconds.ts b/x-pack/plugins/observability/common/utils/get_interval_in_seconds.ts new file mode 100644 index 0000000000000..6ebdbb83bdc62 --- /dev/null +++ b/x-pack/plugins/observability/common/utils/get_interval_in_seconds.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. + */ + +const intervalUnits = ['y', 'M', 'w', 'd', 'h', 'm', 's', 'ms']; +const INTERVAL_STRING_RE = new RegExp('^([0-9\\.]*)\\s*(' + intervalUnits.join('|') + ')$'); + +interface UnitsToSeconds { + [unit: string]: number; +} + +const units: UnitsToSeconds = { + ms: 0.001, + s: 1, + m: 60, + h: 3600, + d: 86400, + w: 86400 * 7, + M: 86400 * 30, + y: 86400 * 356, +}; + +export const getIntervalInSeconds = (interval: string): number => { + const matches = interval.match(INTERVAL_STRING_RE); + if (matches) { + return parseFloat(matches[1]) * units[matches[2]]; + } + throw new Error('Invalid interval string format.'); +}; diff --git a/x-pack/plugins/observability/kibana.jsonc b/x-pack/plugins/observability/kibana.jsonc index 526c283c0f0be..c7fdb22b5f792 100644 --- a/x-pack/plugins/observability/kibana.jsonc +++ b/x-pack/plugins/observability/kibana.jsonc @@ -20,6 +20,7 @@ "dataViews", "dataViewEditor", "embeddable", + "fieldFormats", "uiActions", "presentationUtil", "exploratoryView", diff --git a/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.tsx b/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.tsx index d27e32970f2fa..ff69c8e2ff2c3 100644 --- a/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.tsx +++ b/x-pack/plugins/observability/public/components/alert_search_bar/alert_search_bar.tsx @@ -47,15 +47,15 @@ export function ObservabilityAlertSearchBar({ (alertStatus: AlertStatus) => { try { onEsQueryChange( - buildEsQuery( - { + buildEsQuery({ + timeRange: { to: rangeTo, from: rangeFrom, }, kuery, - [...getAlertStatusQuery(alertStatus), ...defaultSearchQueries], - getEsQueryConfig(uiSettings) - ) + queries: [...getAlertStatusQuery(alertStatus), ...defaultSearchQueries], + config: getEsQueryConfig(uiSettings), + }) ); } catch (error) { toasts.addError(error, { @@ -89,15 +89,15 @@ export function ObservabilityAlertSearchBar({ ({ dateRange, query }) => { try { // First try to create es query to make sure query is valid, then save it in state - const esQuery = buildEsQuery( - { + const esQuery = buildEsQuery({ + timeRange: { to: dateRange.to, from: dateRange.from, }, - query, - [...getAlertStatusQuery(status), ...defaultSearchQueries], - getEsQueryConfig(uiSettings) - ); + kuery: query, + queries: [...getAlertStatusQuery(status), ...defaultSearchQueries], + config: getEsQueryConfig(uiSettings), + }); if (query) onKueryChange(query); timeFilterService.setTime(dateRange); onRangeFromChange(dateRange.from); diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/__snapshots__/alert_details_app_section.test.tsx.snap b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/__snapshots__/alert_details_app_section.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability/public/components/custom_threshold/components/__snapshots__/alert_details_app_section.test.tsx.snap rename to x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/__snapshots__/alert_details_app_section.test.tsx.snap diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.test.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.test.tsx similarity index 94% rename from x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.test.tsx rename to x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.test.tsx index 8747558251da3..c623d9aa15043 100644 --- a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.test.tsx +++ b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.test.tsx @@ -15,9 +15,9 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { buildCustomThresholdAlert, buildCustomThresholdRule, -} from '../mocks/custom_threshold_rule'; +} from '../../mocks/custom_threshold_rule'; import AlertDetailsAppSection from './alert_details_app_section'; -import { ExpressionChart } from './expression_chart'; +import { ExpressionChart } from '../expression_chart'; const mockedChartStartContract = chartPluginMock.createStartContract(); @@ -33,11 +33,11 @@ jest.mock('@kbn/observability-get-padded-alert-time-range-util', () => ({ }), })); -jest.mock('./expression_chart', () => ({ +jest.mock('../expression_chart', () => ({ ExpressionChart: jest.fn(() =>
    ), })); -jest.mock('../../../utils/kibana_react', () => ({ +jest.mock('../../../../utils/kibana_react', () => ({ useKibana: () => ({ services: { ...mockCoreMock.createStart(), diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.tsx similarity index 86% rename from x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.tsx rename to x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.tsx index ce9a651a7a1e3..3c95f0d6677b6 100644 --- a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.tsx +++ b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.tsx @@ -25,15 +25,16 @@ import { Rule, RuleTypeParams } from '@kbn/alerting-plugin/common'; import { AlertAnnotation, AlertActiveTimeRangeAnnotation } from '@kbn/observability-alert-details'; import { getPaddedAlertTimeRange } from '@kbn/observability-get-padded-alert-time-range-util'; import { DataView } from '@kbn/data-views-plugin/common'; -import { MetricsExplorerChartType } from '../../../../common/custom_threshold_rule/types'; -import { useKibana } from '../../../utils/kibana_react'; -import { metricValueFormatter } from '../../../../common/custom_threshold_rule/metric_value_formatter'; -import { AlertSummaryField, TopAlert } from '../../..'; - -import { ExpressionChart } from './expression_chart'; -import { TIME_LABELS } from './criterion_preview_chart/criterion_preview_chart'; -import { Threshold } from './custom_threshold'; -import { AlertParams, CustomThresholdRuleTypeParams } from '../types'; +import { MetricsExplorerChartType } from '../../../../../common/custom_threshold_rule/types'; +import { useLicense } from '../../../../hooks/use_license'; +import { useKibana } from '../../../../utils/kibana_react'; +import { metricValueFormatter } from '../../../../../common/custom_threshold_rule/metric_value_formatter'; +import { AlertSummaryField, TopAlert } from '../../../..'; +import { AlertParams, CustomThresholdRuleTypeParams } from '../../types'; +import { ExpressionChart } from '../expression_chart'; +import { TIME_LABELS } from '../criterion_preview_chart/criterion_preview_chart'; +import { Threshold } from '../custom_threshold'; +import { LogRateAnalysis } from './log_rate_analysis'; // TODO Use a generic props for app sections https://github.com/elastic/kibana/issues/152690 export type CustomThresholdRule = Rule; @@ -57,8 +58,11 @@ export default function AlertDetailsAppSection({ ruleLink, setAlertSummaryFields, }: AppSectionProps) { - const { uiSettings, charts, data } = useKibana().services; + const services = useKibana().services; + const { uiSettings, charts, data } = services; const { euiTheme } = useEuiTheme(); + const { hasAtLeast } = useLicense(); + const hasLogRateAnalysisLicense = hasAtLeast('platinum'); const [dataView, setDataView] = useState(); const [, setDataViewError] = useState(); const ruleParams = rule.params as RuleTypeParams & AlertParams; @@ -83,6 +87,7 @@ export default function AlertDetailsAppSection({ key={ALERT_TIME_RANGE_ANNOTATION_ID} />, ]; + useEffect(() => { setAlertSummaryFields([ { @@ -181,6 +186,9 @@ export default function AlertDetailsAppSection({ ))} + {hasLogRateAnalysisLicense && ( + + )} ) : null; diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap new file mode 100644 index 0000000000000..9a9eb41224222 --- /dev/null +++ b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap @@ -0,0 +1,222 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`buildEsQuery should generate correct es query for rule with multiple metrics 1`] = `undefined`; + +exports[`buildEsQuery should generate correct es query for rule with optional filer, count filter and WITHOUT group by 1`] = ` +Object { + "bool": Object { + "filter": Array [ + Object { + "bool": Object { + "filter": Array [ + Object { + "bool": Object { + "minimum_should_match": 1, + "should": Array [ + Object { + "match": Object { + "optionalFilter": "container-1", + }, + }, + ], + }, + }, + Object { + "bool": Object { + "minimum_should_match": 1, + "should": Array [ + Object { + "bool": Object { + "minimum_should_match": 1, + "should": Array [ + Object { + "match": Object { + "host.name": "host-1", + }, + }, + ], + }, + }, + Object { + "bool": Object { + "minimum_should_match": 1, + "should": Array [ + Object { + "match": Object { + "host.name": "host-2", + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + "must": Array [], + "must_not": Array [], + "should": Array [], + }, +} +`; + +exports[`buildEsQuery should generate correct es query for rule with optional filer, count filter and group by 1`] = ` +Object { + "bool": Object { + "filter": Array [ + Object { + "bool": Object { + "filter": Array [ + Object { + "bool": Object { + "minimum_should_match": 1, + "should": Array [ + Object { + "match": Object { + "optionalFilter": "container-1", + }, + }, + ], + }, + }, + Object { + "bool": Object { + "minimum_should_match": 1, + "should": Array [ + Object { + "bool": Object { + "minimum_should_match": 1, + "should": Array [ + Object { + "match": Object { + "host.name": "host-1", + }, + }, + ], + }, + }, + Object { + "bool": Object { + "minimum_should_match": 1, + "should": Array [ + Object { + "match": Object { + "host.name": "host-2", + }, + }, + ], + }, + }, + ], + }, + }, + Object { + "bool": Object { + "minimum_should_match": 1, + "should": Array [ + Object { + "match": Object { + "groupByField": "groupByValue", + }, + }, + ], + }, + }, + ], + }, + }, + ], + "must": Array [], + "must_not": Array [], + "should": Array [], + }, +} +`; + +exports[`buildEsQuery should generate correct es query for rule with optional filer, count filter and multiple group by 1`] = ` +Object { + "bool": Object { + "filter": Array [ + Object { + "bool": Object { + "filter": Array [ + Object { + "bool": Object { + "minimum_should_match": 1, + "should": Array [ + Object { + "match": Object { + "optionalFilter": "container-1", + }, + }, + ], + }, + }, + Object { + "bool": Object { + "minimum_should_match": 1, + "should": Array [ + Object { + "bool": Object { + "minimum_should_match": 1, + "should": Array [ + Object { + "match": Object { + "host.name": "host-1", + }, + }, + ], + }, + }, + Object { + "bool": Object { + "minimum_should_match": 1, + "should": Array [ + Object { + "match": Object { + "host.name": "host-2", + }, + }, + ], + }, + }, + ], + }, + }, + Object { + "bool": Object { + "minimum_should_match": 1, + "should": Array [ + Object { + "match": Object { + "groupByField": "groupByValue", + }, + }, + ], + }, + }, + Object { + "bool": Object { + "minimum_should_match": 1, + "should": Array [ + Object { + "match": Object { + "secondGroupByField": "secondGroupByValue", + }, + }, + ], + }, + }, + ], + }, + }, + ], + "must": Array [], + "must_not": Array [], + "should": Array [], + }, +} +`; diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/get_initial_analysis_start.ts b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/get_initial_analysis_start.ts new file mode 100644 index 0000000000000..08bc835b7f43e --- /dev/null +++ b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/get_initial_analysis_start.ts @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import moment, { Moment } from 'moment'; + +export interface GetInitialAnalysisStartArgs { + alertStart: Moment; + intervalFactor: number; + alertEnd?: Moment; +} + +export const getDeviationMax = ({ + alertStart, + intervalFactor, + alertEnd, +}: GetInitialAnalysisStartArgs) => { + if (alertEnd) { + return alertEnd + .clone() + .subtract(1 * intervalFactor, 'minutes') + .valueOf(); + } else if ( + alertStart + .clone() + .add(10 * intervalFactor, 'minutes') + .isAfter(moment(new Date())) + ) { + return moment(new Date()).valueOf(); + } else { + return alertStart + .clone() + .add(10 * intervalFactor, 'minutes') + .valueOf(); + } +}; + +export const getInitialAnalysisStart = (args: GetInitialAnalysisStartArgs) => { + const { alertStart, intervalFactor } = args; + return { + baselineMin: alertStart + .clone() + .subtract(13 * intervalFactor, 'minutes') + .valueOf(), + baselineMax: alertStart + .clone() + .subtract(2 * intervalFactor, 'minutes') + .valueOf(), + deviationMin: alertStart + .clone() + .subtract(1 * intervalFactor, 'minutes') + .valueOf(), + deviationMax: getDeviationMax(args), + }; +}; diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.test.ts b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.test.ts new file mode 100644 index 0000000000000..8169816800e4d --- /dev/null +++ b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.test.ts @@ -0,0 +1,98 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Aggregators, Comparator } from '../../../../../../common/custom_threshold_rule/types'; +import { CustomThresholdRuleTypeParams } from '../../../types'; +import { getLogRateAnalysisEQQuery } from './log_rate_analysis_query'; + +describe('buildEsQuery', () => { + const index = 'changedMockedIndex'; + const mockedParams: CustomThresholdRuleTypeParams = { + groupBy: ['host.hostname'], + searchConfiguration: { + index, + query: { query: 'optionalFilter: container-1', language: 'kuery' }, + }, + criteria: [ + { + metrics: [ + { + name: 'A', + aggType: Aggregators.COUNT, + filter: 'host.name: host-1 or host.name: host-2', + }, + ], + timeSize: 1, + timeUnit: 'm', + threshold: [90], + comparator: Comparator.GT, + }, + ], + }; + const mockedAlertWithMultipleGroups = { + fields: { + 'kibana.alert.group': [ + { + field: 'groupByField', + value: 'groupByValue', + }, + { + field: 'secondGroupByField', + value: 'secondGroupByValue', + }, + ], + }, + }; + const testData: Array<{ + title: string; + params: CustomThresholdRuleTypeParams; + alert: any; + }> = [ + { + title: 'rule with optional filer, count filter and group by', + params: mockedParams, + alert: { + fields: { + 'kibana.alert.group': [mockedAlertWithMultipleGroups.fields['kibana.alert.group'][0]], + }, + }, + }, + { + title: 'rule with optional filer, count filter and multiple group by', + params: mockedParams, + alert: mockedAlertWithMultipleGroups, + }, + { + title: 'rule with optional filer, count filter and WITHOUT group by', + params: mockedParams, + alert: {}, + }, + { + title: 'rule with multiple metrics', + params: { + ...mockedParams, + criteria: [ + { + metrics: [ + { name: 'A', aggType: Aggregators.COUNT, filter: 'host.name: host-1' }, + { name: 'B', aggType: Aggregators.AVERAGE, field: 'system.load.1' }, + ], + timeSize: 1, + timeUnit: 'm', + threshold: [90], + comparator: Comparator.GT, + }, + ], + }, + alert: {}, + }, + ]; + + test.each(testData)('should generate correct es query for $title', ({ alert, params }) => { + expect(getLogRateAnalysisEQQuery(alert, params)).toMatchSnapshot(); + }); +}); diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.ts b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.ts new file mode 100644 index 0000000000000..b9eef4643802a --- /dev/null +++ b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.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 { get } from 'lodash'; +import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; +import { Aggregators, GroupBy } from '../../../../../../common/custom_threshold_rule/types'; +import { buildEsQuery } from '../../../../../utils/build_es_query'; +import type { TopAlert } from '../../../../../typings/alerts'; +import type { CustomThresholdRuleTypeParams } from '../../../types'; +import type { CustomThresholdExpressionMetric } from '../../../../../../common/custom_threshold_rule/types'; + +const getKuery = ( + metrics: CustomThresholdExpressionMetric[], + filter?: string, + groupBy?: GroupBy +) => { + let query = ''; + const isOneCountConditionWithFilter = + metrics.length === 1 && metrics[0].aggType === 'count' && metrics[0].filter; + + if (filter && isOneCountConditionWithFilter) { + query = `(${filter}) and (${metrics[0].filter})`; + } else if (isOneCountConditionWithFilter) { + query = `(${metrics[0].filter!})`; + } else if (filter) { + query = `(${filter})`; + } + + if (groupBy) { + groupBy.forEach(({ field, value }) => { + query += ` and ${field}: ${value}`; + }); + } + + return query; +}; + +export const getLogRateAnalysisEQQuery = ( + alert: TopAlert>, + params: CustomThresholdRuleTypeParams +): QueryDslQueryContainer | undefined => { + // We only show log rate analysis for one condition with one count aggregation + if ( + params.criteria.length !== 1 || + params.criteria[0].metrics.length !== 1 || + params.criteria[0].metrics[0].aggType !== Aggregators.COUNT + ) { + return; + } + + const groupBy: GroupBy | undefined = get(alert, 'fields["kibana.alert.group"]'); + const optionalFilter: string | undefined = get(params.searchConfiguration, 'query.query'); + const boolQuery = buildEsQuery({ + kuery: getKuery(params.criteria[0].metrics, optionalFilter, groupBy), + }); + + return boolQuery; +}; diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/log_rate_analysis.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/log_rate_analysis.tsx new file mode 100644 index 0000000000000..7578f0979907f --- /dev/null +++ b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/log_rate_analysis.tsx @@ -0,0 +1,238 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { pick, orderBy } from 'lodash'; +import moment from 'moment'; +import React, { useEffect, useMemo, useState } from 'react'; +import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiTitle } from '@elastic/eui'; +import { + LOG_RATE_ANALYSIS_TYPE, + type LogRateAnalysisType, +} from '@kbn/aiops-utils/log_rate_analysis_type'; +import { LogRateAnalysisContent, type LogRateAnalysisResultsData } from '@kbn/aiops-plugin/public'; +import { Rule } from '@kbn/alerting-plugin/common'; +import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { type Message, MessageRole } from '@kbn/observability-ai-assistant-plugin/public'; +import { ALERT_END } from '@kbn/rule-data-utils'; +import { CustomThresholdRuleTypeParams } from '../../types'; +import { TopAlert } from '../../../..'; +import { Color, colorTransformer } from '../../../../../common/custom_threshold_rule/color_palette'; +import { getLogRateAnalysisEQQuery } from './helpers/log_rate_analysis_query'; +import { getInitialAnalysisStart } from './helpers/get_initial_analysis_start'; + +export interface AlertDetailsLogRateAnalysisProps { + alert: TopAlert>; + dataView: any; + rule: Rule; + services: any; +} + +interface SignificantFieldValue { + field: string; + value: string | number; + docCount: number; + pValue: number | null; +} + +export function LogRateAnalysis({ + alert, + dataView, + rule, + services, +}: AlertDetailsLogRateAnalysisProps) { + const { + observabilityAIAssistant: { ObservabilityAIAssistantContextualInsight }, + } = services; + const [esSearchQuery, setEsSearchQuery] = useState(); + const [logRateAnalysisParams, setLogRateAnalysisParams] = useState< + | { logRateAnalysisType: LogRateAnalysisType; significantFieldValues: SignificantFieldValue[] } + | undefined + >(); + + useEffect(() => { + const esSearchRequest = getLogRateAnalysisEQQuery(alert, rule.params); + + if (esSearchRequest) { + setEsSearchQuery(esSearchRequest); + } + }, [alert, rule.params]); + + // Identify `intervalFactor` to adjust time ranges based on alert settings. + // The default time ranges for `initialAnalysisStart` are suitable for a `1m` lookback. + // If an alert would have a `5m` lookback, this would result in a factor of `5`. + const lookbackDuration = + alert.fields['kibana.alert.rule.parameters'] && + alert.fields['kibana.alert.rule.parameters'].timeSize && + alert.fields['kibana.alert.rule.parameters'].timeUnit + ? moment.duration( + alert.fields['kibana.alert.rule.parameters'].timeSize as number, + alert.fields['kibana.alert.rule.parameters'].timeUnit as any + ) + : moment.duration(1, 'm'); + const intervalFactor = Math.max(1, lookbackDuration.asSeconds() / 60); + + const alertStart = moment(alert.start); + const alertEnd = alert.fields[ALERT_END] ? moment(alert.fields[ALERT_END]) : undefined; + + const timeRange = { + min: alertStart.clone().subtract(15 * intervalFactor, 'minutes'), + max: alertEnd ? alertEnd.clone().add(1 * intervalFactor, 'minutes') : moment(new Date()), + }; + + const logRateAnalysisTitle = i18n.translate( + 'xpack.observability.customThreshold.alertDetails.logRateAnalysisTitle', + { + defaultMessage: 'Possible causes and remediations', + } + ); + + const onAnalysisCompleted = (analysisResults: LogRateAnalysisResultsData | undefined) => { + const significantFieldValues = orderBy( + analysisResults?.significantItems?.map((item) => ({ + field: item.fieldName, + value: item.fieldValue, + docCount: item.doc_count, + pValue: item.pValue, + })), + ['pValue', 'docCount'], + ['asc', 'asc'] + ).slice(0, 50); + + const logRateAnalysisType = analysisResults?.analysisType; + setLogRateAnalysisParams( + significantFieldValues && logRateAnalysisType + ? { logRateAnalysisType, significantFieldValues } + : undefined + ); + }; + + const messages = useMemo(() => { + const hasLogRateAnalysisParams = + logRateAnalysisParams && logRateAnalysisParams.significantFieldValues?.length > 0; + + if (!hasLogRateAnalysisParams) { + return undefined; + } + + const { logRateAnalysisType } = logRateAnalysisParams; + + const header = 'Field name,Field value,Doc count,p-value'; + const rows = logRateAnalysisParams.significantFieldValues + .map((item) => Object.values(item).join(',')) + .join('\n'); + + const content = `You are an observability expert using Elastic Observability Suite on call being consulted about a log threshold alert that got triggered by a ${logRateAnalysisType} in log messages. Your job is to take immediate action and proceed with both urgency and precision. + "Log Rate Analysis" is an AIOps feature that uses advanced statistical methods to identify reasons for increases and decreases in log rates. It makes it easy to find and investigate causes of unusual spikes or dips by using the analysis workflow view. + You are using "Log Rate Analysis" and ran the statistical analysis on the log messages which occured during the alert. + You received the following analysis results from "Log Rate Analysis" which list statistically significant co-occuring field/value combinations sorted from most significant (lower p-values) to least significant (higher p-values) that ${ + logRateAnalysisType === LOG_RATE_ANALYSIS_TYPE.SPIKE + ? 'contribute to the log rate spike' + : 'are less or not present in the log rate dip' + }: + + ${ + logRateAnalysisType === LOG_RATE_ANALYSIS_TYPE.SPIKE + ? 'The median log rate in the selected deviation time range is higher than the baseline. Therefore, the results shows statistically significant items within the deviation time range that are contributors to the spike. The "doc count" column refers to the amount of documents in the deviation time range.' + : 'The median log rate in the selected deviation time range is lower than the baseline. Therefore, the analysis results table shows statistically significant items within the baseline time range that are less in number or missing within the deviation time range. The "doc count" column refers to the amount of documents in the baseline time range.' + } + + ${header} + ${rows} + + Based on the above analysis results and your observability expert knowledge, output the following: + Analyse the type of these logs and explain their usual purpose (1 paragraph). + ${ + logRateAnalysisType === LOG_RATE_ANALYSIS_TYPE.SPIKE + ? 'Based on the type of these logs do a root cause analysis on why the field and value combinations from the analysis results are causing this log rate spike (2 parapraphs)' + : 'Based on the type of these logs explain why the statistically significant field and value combinations are less in number or missing from the log rate dip with concrete examples based on the analysis results data which contains items that are present in the baseline time range and are missing or less in number in the deviation time range (2 paragraphs)' + }. + ${ + logRateAnalysisType === LOG_RATE_ANALYSIS_TYPE.SPIKE + ? 'Recommend concrete remediations to resolve the root cause (3 bullet points).' + : '' + } + + Do not mention individual p-values from the analysis results. + Do not repeat the full list of field names and field values back to the user. + Do not guess, just say what you are sure of. Do not repeat the given instructions in your output.`; + + const now = new Date().toISOString(); + + return [ + { + '@timestamp': now, + message: { + content, + role: MessageRole.User, + }, + }, + ]; + }, [logRateAnalysisParams]); + + if (!dataView || !esSearchQuery) return null; + + return ( + + + + +

    + +

    +
    +
    + + + +
    + + {ObservabilityAIAssistantContextualInsight && messages ? ( + + + + ) : null} + +
    + ); +} diff --git a/x-pack/plugins/observability/public/components/custom_threshold/mocks/custom_threshold_rule.ts b/x-pack/plugins/observability/public/components/custom_threshold/mocks/custom_threshold_rule.ts index cfe41b6bd9d04..817e5dbadb978 100644 --- a/x-pack/plugins/observability/public/components/custom_threshold/mocks/custom_threshold_rule.ts +++ b/x-pack/plugins/observability/public/components/custom_threshold/mocks/custom_threshold_rule.ts @@ -8,7 +8,10 @@ import { v4 as uuidv4 } from 'uuid'; import { Aggregators, Comparator } from '../../../../common/custom_threshold_rule/types'; -import { CustomThresholdAlert, CustomThresholdRule } from '../components/alert_details_app_section'; +import { + CustomThresholdAlert, + CustomThresholdRule, +} from '../components/alert_details_app_section/alert_details_app_section'; export const buildCustomThresholdRule = ( rule: Partial = {} diff --git a/x-pack/plugins/observability/public/hooks/use_license.ts b/x-pack/plugins/observability/public/hooks/use_license.ts index f666dcd025bd3..f6ed1ebf8bab1 100644 --- a/x-pack/plugins/observability/public/hooks/use_license.ts +++ b/x-pack/plugins/observability/public/hooks/use_license.ts @@ -14,7 +14,7 @@ import { useKibana } from '../utils/kibana_react'; interface UseLicenseReturnValue { getLicense: () => ILicense | null; - hasAtLeast: (level: LicenseType) => boolean | undefined; + hasAtLeast: (level: LicenseType) => boolean; } export const useLicense = (): UseLicenseReturnValue => { @@ -25,7 +25,7 @@ export const useLicense = (): UseLicenseReturnValue => { getLicense: () => license, hasAtLeast: useCallback( (level: LicenseType) => { - if (!license) return; + if (!license) return false; return !!license && license.isAvailable && license.isActive && license.hasAtLeast(level); }, diff --git a/x-pack/plugins/observability/public/pages/overview/overview.tsx b/x-pack/plugins/observability/public/pages/overview/overview.tsx index 17121be51c668..5cc5e2ac967ea 100644 --- a/x-pack/plugins/observability/public/pages/overview/overview.tsx +++ b/x-pack/plugins/observability/public/pages/overview/overview.tsx @@ -73,8 +73,10 @@ export function OverviewPage() { const [esQuery, setEsQuery] = useState<{ bool: BoolQuery }>( buildEsQuery({ - from: relativeStart, - to: relativeEnd, + timeRange: { + from: relativeStart, + to: relativeEnd, + }, }) ); @@ -108,8 +110,10 @@ export function OverviewPage() { useEffect(() => { setEsQuery( buildEsQuery({ - from: relativeStart, - to: relativeEnd, + timeRange: { + from: relativeStart, + to: relativeEnd, + }, }) ); }, [relativeEnd, relativeStart]); @@ -117,8 +121,10 @@ export function OverviewPage() { const handleTimeRangeRefresh = useCallback(() => { setEsQuery( buildEsQuery({ - from: relativeStart, - to: relativeEnd, + timeRange: { + from: relativeStart, + to: relativeEnd, + }, }) ); }, [relativeEnd, relativeStart]); diff --git a/x-pack/plugins/observability/public/plugin.ts b/x-pack/plugins/observability/public/plugin.ts index 808573579cb99..03322f7817282 100644 --- a/x-pack/plugins/observability/public/plugin.ts +++ b/x-pack/plugins/observability/public/plugin.ts @@ -28,6 +28,7 @@ import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; import { LOG_EXPLORER_LOCATOR_ID, LogExplorerLocatorParams } from '@kbn/deeplinks-observability'; import type { DiscoverStart } from '@kbn/discover-plugin/public'; import type { EmbeddableStart } from '@kbn/embeddable-plugin/public'; +import type { FieldFormatsSetup, FieldFormatsStart } from '@kbn/field-formats-plugin/public'; import type { HomePublicPluginSetup, HomePublicPluginStart } from '@kbn/home-plugin/public'; import { i18n } from '@kbn/i18n'; import type { LensPublicStart } from '@kbn/lens-plugin/public'; @@ -114,6 +115,7 @@ export interface ConfigSchema { export type ObservabilityPublicSetup = ReturnType; export interface ObservabilityPublicPluginsSetup { data: DataPublicPluginSetup; + fieldFormats: FieldFormatsSetup; observabilityShared: ObservabilitySharedPluginSetup; observabilityAIAssistant: ObservabilityAIAssistantPluginSetup; share: SharePluginSetup; @@ -137,6 +139,7 @@ export interface ObservabilityPublicPluginsStart { discover: DiscoverStart; embeddable: EmbeddableStart; exploratoryView: ExploratoryViewPublicStart; + fieldFormats: FieldFormatsStart; guidedOnboarding?: GuidedOnboardingPluginStart; lens: LensPublicStart; licensing: LicensingPluginStart; diff --git a/x-pack/plugins/observability/public/rules/register_observability_rule_types.ts b/x-pack/plugins/observability/public/rules/register_observability_rule_types.ts index c9079991bdf4d..04519eba23d5f 100644 --- a/x-pack/plugins/observability/public/rules/register_observability_rule_types.ts +++ b/x-pack/plugins/observability/public/rules/register_observability_rule_types.ts @@ -156,7 +156,10 @@ export const registerObservabilityRuleTypes = async ( }; }, alertDetailsAppSection: lazy( - () => import('../components/custom_threshold/components/alert_details_app_section') + () => + import( + '../components/custom_threshold/components/alert_details_app_section/alert_details_app_section' + ) ), priority: 5, }); diff --git a/x-pack/plugins/observability/public/utils/build_es_query/build_es_query.test.ts b/x-pack/plugins/observability/public/utils/build_es_query/build_es_query.test.ts index 4bbacaa7bb1ad..3cb37893e6169 100644 --- a/x-pack/plugins/observability/public/utils/build_es_query/build_es_query.test.ts +++ b/x-pack/plugins/observability/public/utils/build_es_query/build_es_query.test.ts @@ -37,6 +37,6 @@ describe('buildEsQuery', () => { ]; test.each(testData)('should generate correct es query for %j', ({ kuery, timeRange }) => { - expect(buildEsQuery(timeRange, kuery)).toMatchSnapshot(); + expect(buildEsQuery({ timeRange, kuery })).toMatchSnapshot(); }); }); diff --git a/x-pack/plugins/observability/public/utils/build_es_query/build_es_query.ts b/x-pack/plugins/observability/public/utils/build_es_query/build_es_query.ts index 1fd26690f86d5..acf6b4cfc4a7e 100644 --- a/x-pack/plugins/observability/public/utils/build_es_query/build_es_query.ts +++ b/x-pack/plugins/observability/public/utils/build_es_query/build_es_query.ts @@ -9,12 +9,14 @@ import { buildEsQuery as kbnBuildEsQuery, TimeRange, Query, EsQueryConfig } from import { ALERT_TIME_RANGE } from '@kbn/rule-data-utils'; import { getTime } from '@kbn/data-plugin/common'; -export function buildEsQuery( - timeRange: TimeRange, - kuery?: string, - queries: Query[] = [], - config: EsQueryConfig = {} -) { +interface BuildEsQueryArgs { + timeRange?: TimeRange; + kuery?: string; + queries?: Query[]; + config?: EsQueryConfig; +} + +export function buildEsQuery({ timeRange, kuery, queries = [], config = {} }: BuildEsQueryArgs) { const timeFilter = timeRange && getTime(undefined, timeRange, { diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/evaluate_rule.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/evaluate_rule.ts index b1f790da9d146..f5b3f0adf1bdd 100644 --- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/evaluate_rule.ts +++ b/x-pack/plugins/observability/server/lib/rules/custom_threshold/lib/evaluate_rule.ts @@ -9,7 +9,8 @@ import moment from 'moment'; import { ElasticsearchClient } from '@kbn/core/server'; import type { Logger } from '@kbn/logging'; import { CustomMetricExpressionParams } from '../../../../../common/custom_threshold_rule/types'; -import { AdditionalContext, getIntervalInSeconds } from '../utils'; +import { getIntervalInSeconds } from '../../../../../common/utils/get_interval_in_seconds'; +import { AdditionalContext } from '../utils'; import { SearchConfigurationType } from '../types'; import { createTimerange } from './create_timerange'; import { getData } from './get_data'; diff --git a/x-pack/plugins/observability/server/lib/rules/custom_threshold/utils.ts b/x-pack/plugins/observability/server/lib/rules/custom_threshold/utils.ts index 66049ab431c5d..59d7cf93e0ea4 100644 --- a/x-pack/plugins/observability/server/lib/rules/custom_threshold/utils.ts +++ b/x-pack/plugins/observability/server/lib/rules/custom_threshold/utils.ts @@ -257,32 +257,6 @@ export const isTooManyBucketsPreviewException = ( ): value is TooManyBucketsPreviewExceptionMetadata => Boolean(value && value.TOO_MANY_BUCKETS_PREVIEW_EXCEPTION); -const intervalUnits = ['y', 'M', 'w', 'd', 'h', 'm', 's', 'ms']; -const INTERVAL_STRING_RE = new RegExp('^([0-9\\.]*)\\s*(' + intervalUnits.join('|') + ')$'); - -interface UnitsToSeconds { - [unit: string]: number; -} - -const units: UnitsToSeconds = { - ms: 0.001, - s: 1, - m: 60, - h: 3600, - d: 86400, - w: 86400 * 7, - M: 86400 * 30, - y: 86400 * 356, -}; - -export const getIntervalInSeconds = (interval: string): number => { - const matches = interval.match(INTERVAL_STRING_RE); - if (matches) { - return parseFloat(matches[1]) * units[matches[2]]; - } - throw new Error('Invalid interval string format.'); -}; - export const calculateRateTimeranges = (timerange: { to: number; from: number }) => { // This is the total number of milliseconds for the entire timerange const totalTime = timerange.to - timerange.from; diff --git a/x-pack/plugins/observability/tsconfig.json b/x-pack/plugins/observability/tsconfig.json index ba9ac59725adc..04f853572085f 100644 --- a/x-pack/plugins/observability/tsconfig.json +++ b/x-pack/plugins/observability/tsconfig.json @@ -102,7 +102,9 @@ "@kbn/core-elasticsearch-client-server-mocks", "@kbn/ingest-pipelines-plugin", "@kbn/core-saved-objects-api-server-mocks", - "@kbn/core-ui-settings-browser-mocks" + "@kbn/core-ui-settings-browser-mocks", + "@kbn/field-formats-plugin", + "@kbn/aiops-utils" ], "exclude": [ "target/**/*" From 42272f90c05616e1ea6bc4f80bc140f3a4979910 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loix?= Date: Fri, 5 Jan 2024 11:08:38 +0000 Subject: [PATCH 134/323] [Serverless Sidenav] Order active paths by tree depth (#174184) --- .../src/project_navigation/utils.test.ts | 55 ++++++++++--------- .../src/project_navigation/utils.ts | 3 + .../components/side_navigation/index.tsx | 2 - 3 files changed, 32 insertions(+), 28 deletions(-) diff --git a/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/utils.test.ts b/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/utils.test.ts index a207162e060cb..d886ee3a5d6ac 100644 --- a/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/utils.test.ts +++ b/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/utils.test.ts @@ -133,33 +133,36 @@ describe('findActiveNodes', () => { title: 'Root', path: 'root', }, + // Group 1 '[0][0]': { id: 'group1', title: 'Group 1', - deepLink: getDeepLink('group1', 'group1'), path: 'root.group1', }, '[0][0][0]': { - id: 'group1A', - title: 'Group 1A', - path: 'root.group1.group1A', - }, - '[0][0][0][0]': { id: 'item1', title: 'Item 1', - deepLink: getDeepLink('item1', 'item1'), - path: 'root.group1.group1A.item1', + deepLink: getDeepLink('item1', 'item1'), // First match + path: 'root.group1.item1', }, + // Group 2 '[0][1]': { id: 'group2', title: 'Group 2', + deepLink: getDeepLink('group2', 'group2'), path: 'root.group2', }, '[0][1][0]': { + id: 'group2A', + title: 'Group 2A', + path: 'root.group2.group2A', + }, + '[0][1][0][0]': { id: 'item2', title: 'Item 2', - deepLink: getDeepLink('item1', 'item1'), // Same link as above, should match both - path: 'root.group2.item2', + // Second match --> should come first as it is the longest match of the 2 + deepLink: getDeepLink('item1', 'item1'), + path: 'root.group2.group2A.item2', }, }; @@ -172,21 +175,21 @@ describe('findActiveNodes', () => { path: 'root', }, { - id: 'group1', - title: 'Group 1', - deepLink: getDeepLink('group1', 'group1'), - path: 'root.group1', + id: 'group2', + title: 'Group 2', + deepLink: getDeepLink('group2', 'group2'), + path: 'root.group2', }, { - id: 'group1A', - title: 'Group 1A', - path: 'root.group1.group1A', + id: 'group2A', + title: 'Group 2A', + path: 'root.group2.group2A', }, { - id: 'item1', - title: 'Item 1', + id: 'item2', + title: 'Item 2', deepLink: getDeepLink('item1', 'item1'), - path: 'root.group1.group1A.item1', + path: 'root.group2.group2A.item2', }, ], [ @@ -196,15 +199,15 @@ describe('findActiveNodes', () => { path: 'root', }, { - id: 'group2', - title: 'Group 2', - path: 'root.group2', + id: 'group1', + title: 'Group 1', + path: 'root.group1', }, { - id: 'item2', - title: 'Item 2', + id: 'item1', + title: 'Item 1', deepLink: getDeepLink('item1', 'item1'), - path: 'root.group2.item2', + path: 'root.group1.item1', }, ], ]); diff --git a/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/utils.ts b/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/utils.ts index 63f7f8e612c2e..c025872d736b0 100644 --- a/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/utils.ts +++ b/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/utils.ts @@ -137,6 +137,9 @@ export const findActiveNodes = ( matches[length] = []; } matches[length].push(key); + // If there are multiple node matches of the same URL path length, we want to order them by + // tree depth, so that the longest match (deepest node) comes first. + matches[length].sort((a, b) => b.length - a.length); } } }); diff --git a/x-pack/plugins/serverless_observability/public/components/side_navigation/index.tsx b/x-pack/plugins/serverless_observability/public/components/side_navigation/index.tsx index 5be456cfd5f3c..87e6dc3c7b567 100644 --- a/x-pack/plugins/serverless_observability/public/components/side_navigation/index.tsx +++ b/x-pack/plugins/serverless_observability/public/components/side_navigation/index.tsx @@ -33,8 +33,6 @@ const navigationTree: NavigationTreeDefinition = { defaultMessage: 'Discover', }), link: 'observability-log-explorer', - // prevent this entry from ever becoming active, effectively falling through to the obs-log-explorer child - getIsActive: () => false, // avoid duplicate "Discover" breadcrumbs breadcrumbStatus: 'hidden', renderAs: 'item', From 403a8d0604c1a3310470c7219a05c53017f27816 Mon Sep 17 00:00:00 2001 From: Carlos Crespo Date: Fri, 5 Jan 2024 12:30:12 +0100 Subject: [PATCH 135/323] [APM] Fix max bucket error in Dependencies pages (#173083) fixes: https://github.com/elastic/kibana/issues/161239 ## Summary This PR changes how dependencies data is fetched. To mitigate the max bucket error risk, and, at the same time, keep the compatibility with the dependencies-related pages that consume the `get_connection_stats` query, it now paginates the composite aggregation, using smaller batches of 1k items per pagination. **10k dependencies** image **500 dependencies per service** image **Notes:** Fetching 1k on each iteration might make the page slower; The max bucket error might still happen depending on the date range or how services are instrumented. ### How to test 1. Run synthtrace ``` node scripts/synthtrace service_many_dependencies.ts --from=now-15m --to=now --clean ``` 2. Navigate to the Dependencies Inventory page 3. Navigate to a service overview and then to the dependency tab --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../scenarios/service_many_dependencies.ts | 67 +++++++++ .../e2e/{ => dependencies}/dependencies.cy.ts | 50 ++++++- .../generate_many_dependencies.ts | 69 +++++++++ .../get_connection_stats/get_stats.ts | 140 ++++++++++-------- 4 files changed, 265 insertions(+), 61 deletions(-) create mode 100644 packages/kbn-apm-synthtrace/src/scenarios/service_many_dependencies.ts rename x-pack/plugins/apm/ftr_e2e/cypress/e2e/{ => dependencies}/dependencies.cy.ts (73%) create mode 100644 x-pack/plugins/apm/ftr_e2e/cypress/e2e/dependencies/generate_many_dependencies.ts diff --git a/packages/kbn-apm-synthtrace/src/scenarios/service_many_dependencies.ts b/packages/kbn-apm-synthtrace/src/scenarios/service_many_dependencies.ts new file mode 100644 index 0000000000000..a548e55f575a4 --- /dev/null +++ b/packages/kbn-apm-synthtrace/src/scenarios/service_many_dependencies.ts @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ApmFields, Instance } from '@kbn/apm-synthtrace-client'; +import { service } from '@kbn/apm-synthtrace-client/src/lib/apm/service'; +import { Scenario } from '../cli/scenario'; +import { RunOptions } from '../cli/utils/parse_run_cli_flags'; +import { getSynthtraceEnvironment } from '../lib/utils/get_synthtrace_environment'; +import { withClient } from '../lib/utils/with_client'; + +const ENVIRONMENT = getSynthtraceEnvironment(__filename); +const MAX_DEPENDENCIES = 10000; +const MAX_DEPENDENCIES_PER_SERVICE = 500; +const MAX_SERVICES = 20; + +const scenario: Scenario = async (runOptions: RunOptions) => { + return { + generate: ({ range, clients: { apmEsClient } }) => { + const javaInstances = Array.from({ length: MAX_SERVICES }).map((_, index) => + service(`opbeans-java-${index}`, ENVIRONMENT, 'java').instance(`java-instance-${index}`) + ); + + const instanceDependencies = (instance: Instance, startIndex: number) => { + const rate = range.ratePerMinute(60); + + return rate.generator((timestamp, index) => { + const currentIndex = index % MAX_DEPENDENCIES_PER_SERVICE; + const destination = (startIndex + currentIndex) % MAX_DEPENDENCIES; + + const span = instance + .transaction({ transactionName: 'GET /java' }) + .timestamp(timestamp) + .duration(400) + .success() + .children( + instance + .span({ + spanName: 'GET apm-*/_search', + spanType: 'db', + spanSubtype: 'elasticsearch', + }) + .destination(`elasticsearch/${destination}`) + .timestamp(timestamp) + .duration(200) + .success() + ); + + return span; + }); + }; + + return withClient( + apmEsClient, + javaInstances.map((instance, index) => + instanceDependencies(instance, (index * MAX_DEPENDENCIES_PER_SERVICE) % MAX_DEPENDENCIES) + ) + ); + }, + }; +}; + +export default scenario; diff --git a/x-pack/plugins/apm/ftr_e2e/cypress/e2e/dependencies.cy.ts b/x-pack/plugins/apm/ftr_e2e/cypress/e2e/dependencies/dependencies.cy.ts similarity index 73% rename from x-pack/plugins/apm/ftr_e2e/cypress/e2e/dependencies.cy.ts rename to x-pack/plugins/apm/ftr_e2e/cypress/e2e/dependencies/dependencies.cy.ts index 3200ba846fc76..11741c3d3066b 100644 --- a/x-pack/plugins/apm/ftr_e2e/cypress/e2e/dependencies.cy.ts +++ b/x-pack/plugins/apm/ftr_e2e/cypress/e2e/dependencies/dependencies.cy.ts @@ -4,9 +4,10 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { synthtrace } from '../../synthtrace'; -import { opbeans } from '../fixtures/synthtrace/opbeans'; -import { checkA11y } from '../support/commands'; +import { synthtrace } from '../../../synthtrace'; +import { opbeans } from '../../fixtures/synthtrace/opbeans'; +import { checkA11y } from '../../support/commands'; +import { generateManyDependencies } from './generate_many_dependencies'; const start = '2021-10-10T00:00:00.000Z'; const end = '2021-10-10T00:15:00.000Z'; @@ -120,3 +121,46 @@ describe('Dependencies', () => { }); }); }); + +describe('Dependencies with high volume of data', () => { + before(() => { + synthtrace.index( + generateManyDependencies({ + from: new Date(start).getTime(), + to: new Date(end).getTime(), + }) + ); + }); + + after(() => { + synthtrace.clean(); + }); + + beforeEach(() => { + cy.loginAsViewerUser(); + }); + + it('shows dependencies inventory page', () => { + cy.visitKibana( + `/app/apm/dependencies/inventory?${new URLSearchParams({ + ...timeRange, + kuery: 'elasticsearch*', + })}` + ); + + cy.getByTestSubj('dependenciesTable'); + cy.contains('nav', 'Page 1 of 60'); + }); + + it('shows service dependencies', () => { + cy.visitKibana( + `/app/apm/services/synth-java-0/dependencies?${new URLSearchParams({ + ...timeRange, + })}` + ); + + cy.getByTestSubj('serviceDependenciesBreakdownChart').get('canvas'); + cy.getByTestSubj('dependenciesTable'); + cy.contains('nav', 'Page 1 of 100'); + }); +}); diff --git a/x-pack/plugins/apm/ftr_e2e/cypress/e2e/dependencies/generate_many_dependencies.ts b/x-pack/plugins/apm/ftr_e2e/cypress/e2e/dependencies/generate_many_dependencies.ts new file mode 100644 index 0000000000000..0389cd7f90b2f --- /dev/null +++ b/x-pack/plugins/apm/ftr_e2e/cypress/e2e/dependencies/generate_many_dependencies.ts @@ -0,0 +1,69 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { apm, Instance, timerange } from '@kbn/apm-synthtrace-client'; + +const MAX_DEPENDENCIES = 10000; +const MAX_DEPENDENCIES_PER_SERVICE = 500; +const MAX_SERVICES = 20; + +export function generateManyDependencies({ + from, + to, +}: { + from: number; + to: number; +}) { + const instances = Array.from({ length: MAX_SERVICES }).map((_, index) => + apm + .service({ + name: `synth-java-${index}`, + environment: 'production', + agentName: 'java', + }) + .instance(`java-instance-${index}`) + ); + + const instanceDependencies = (instance: Instance, startIndex: number) => { + return Array.from( + timerange(new Date(from), new Date(to)) + .interval('1m') + .rate(60) + .generator((timestamp, index) => { + const currentIndex = index % MAX_DEPENDENCIES_PER_SERVICE; + const destination = (startIndex + currentIndex) % MAX_DEPENDENCIES; + + const span = instance + .transaction({ transactionName: 'GET /java' }) + .timestamp(timestamp) + .duration(400) + .success() + .children( + instance + .span({ + spanName: 'GET apm-*/_search', + spanType: 'db', + spanSubtype: 'elasticsearch', + }) + .destination(`elasticsearch/${destination}`) + .timestamp(timestamp) + .duration(200) + .success() + ); + + return span; + }) + ); + }; + + return instances.flatMap((instance, index) => + instanceDependencies( + instance, + (index * MAX_DEPENDENCIES_PER_SERVICE) % MAX_DEPENDENCIES + ) + ); +} diff --git a/x-pack/plugins/apm/server/lib/connections/get_connection_stats/get_stats.ts b/x-pack/plugins/apm/server/lib/connections/get_connection_stats/get_stats.ts index 4524d5121b78d..7dc038ef744c1 100644 --- a/x-pack/plugins/apm/server/lib/connections/get_connection_stats/get_stats.ts +++ b/x-pack/plugins/apm/server/lib/connections/get_connection_stats/get_stats.ts @@ -33,6 +33,7 @@ import { excludeRumExitSpansQuery } from '../exclude_rum_exit_spans_query'; import { APMEventClient } from '../../helpers/create_es_client/create_apm_event_client'; import { getDocumentTypeFilterForServiceDestinationStatistics } from '../../helpers/spans/get_is_using_service_destination_metrics'; +const MAX_ITEMS = 1500; export const getStats = async ({ apmEventClient, start, @@ -54,7 +55,85 @@ export const getStats = async ({ offset, }); - const response = await apmEventClient.search('get_connection_stats', { + const response = await getConnectionStats({ + apmEventClient, + startWithOffset, + endWithOffset, + filter, + numBuckets, + }); + + return ( + response.aggregations?.connections.buckets.map((bucket) => { + const sample = bucket.sample.top[0].metrics; + const serviceName = bucket.key.serviceName as string; + const dependencyName = bucket.key.dependencyName as string; + + return { + from: { + id: objectHash({ serviceName }), + serviceName, + environment: (sample[SERVICE_ENVIRONMENT] || + ENVIRONMENT_NOT_DEFINED.value) as string, + agentName: sample[AGENT_NAME] as AgentName, + type: NodeType.service as const, + }, + to: { + id: objectHash({ dependencyName }), + dependencyName, + spanType: sample[SPAN_TYPE] as string, + spanSubtype: (sample[SPAN_SUBTYPE] || '') as string, + type: NodeType.dependency as const, + }, + value: { + count: sum( + bucket.timeseries.buckets.map( + (dateBucket) => dateBucket.count.value ?? 0 + ) + ), + latency_sum: sum( + bucket.timeseries.buckets.map( + (dateBucket) => dateBucket.latency_sum.value ?? 0 + ) + ), + error_count: sum( + bucket.timeseries.buckets.flatMap( + (dateBucket) => + dateBucket[EVENT_OUTCOME].buckets.find( + (outcomeBucket) => outcomeBucket.key === EventOutcome.failure + )?.count.value ?? 0 + ) + ), + }, + timeseries: bucket.timeseries.buckets.map((dateBucket) => ({ + x: dateBucket.key + offsetInMs, + count: dateBucket.count.value ?? 0, + latency_sum: dateBucket.latency_sum.value ?? 0, + error_count: + dateBucket[EVENT_OUTCOME].buckets.find( + (outcomeBucket) => outcomeBucket.key === EventOutcome.failure + )?.count.value ?? 0, + })), + }; + }) ?? [] + ); +}; + +async function getConnectionStats({ + apmEventClient, + startWithOffset, + endWithOffset, + filter, + numBuckets, +}: { + apmEventClient: APMEventClient; + startWithOffset: number; + endWithOffset: number; + filter: QueryDslQueryContainer[]; + numBuckets: number; + after?: { serviceName: string | number; dependencyName: string | number }; +}) { + return apmEventClient.search('get_connection_stats', { apm: { sources: [ { @@ -79,7 +158,7 @@ export const getStats = async ({ aggs: { connections: { composite: { - size: 10000, + size: MAX_ITEMS, sources: asMutableArray([ { serviceName: { @@ -174,59 +253,4 @@ export const getStats = async ({ }, }, }); - - return ( - response.aggregations?.connections.buckets.map((bucket) => { - const sample = bucket.sample.top[0].metrics; - const serviceName = bucket.key.serviceName as string; - const dependencyName = bucket.key.dependencyName as string; - - return { - from: { - id: objectHash({ serviceName }), - serviceName, - environment: (sample[SERVICE_ENVIRONMENT] || - ENVIRONMENT_NOT_DEFINED.value) as string, - agentName: sample[AGENT_NAME] as AgentName, - type: NodeType.service as const, - }, - to: { - id: objectHash({ dependencyName }), - dependencyName, - spanType: sample[SPAN_TYPE] as string, - spanSubtype: (sample[SPAN_SUBTYPE] || '') as string, - type: NodeType.dependency as const, - }, - value: { - count: sum( - bucket.timeseries.buckets.map( - (dateBucket) => dateBucket.count.value ?? 0 - ) - ), - latency_sum: sum( - bucket.timeseries.buckets.map( - (dateBucket) => dateBucket.latency_sum.value ?? 0 - ) - ), - error_count: sum( - bucket.timeseries.buckets.flatMap( - (dateBucket) => - dateBucket[EVENT_OUTCOME].buckets.find( - (outcomeBucket) => outcomeBucket.key === EventOutcome.failure - )?.count.value ?? 0 - ) - ), - }, - timeseries: bucket.timeseries.buckets.map((dateBucket) => ({ - x: dateBucket.key + offsetInMs, - count: dateBucket.count.value ?? 0, - latency_sum: dateBucket.latency_sum.value ?? 0, - error_count: - dateBucket[EVENT_OUTCOME].buckets.find( - (outcomeBucket) => outcomeBucket.key === EventOutcome.failure - )?.count.value ?? 0, - })), - }; - }) ?? [] - ); -}; +} From 71db3d93e767645767c6df2d1b269fb83e7961c8 Mon Sep 17 00:00:00 2001 From: Katerina Date: Fri, 5 Jan 2024 13:58:46 +0200 Subject: [PATCH 136/323] [APM] Enable dashboard tab in mobile template (#174255) closes https://github.com/elastic/kibana/issues/174251 it should be consistent with the backend services. image --- .../actions/edit_dashboard.tsx | 3 +++ .../actions/link_dashboard.tsx | 3 +++ .../actions/save_dashboard_modal.tsx | 7 ++----- .../app/service_dashboards/index.tsx | 15 ++++++++++++--- .../routing/mobile_service_detail/index.tsx | 16 +++++++++++++++- .../mobile_service_template/index.tsx | 18 ++++++++++++++++-- 6 files changed, 51 insertions(+), 11 deletions(-) diff --git a/x-pack/plugins/apm/public/components/app/service_dashboards/actions/edit_dashboard.tsx b/x-pack/plugins/apm/public/components/app/service_dashboards/actions/edit_dashboard.tsx index e3a6619b446d6..c880a912a5b51 100644 --- a/x-pack/plugins/apm/public/components/app/service_dashboards/actions/edit_dashboard.tsx +++ b/x-pack/plugins/apm/public/components/app/service_dashboards/actions/edit_dashboard.tsx @@ -13,9 +13,11 @@ import { MergedServiceDashboard } from '..'; export function EditDashboard({ onRefresh, currentDashboard, + serviceName, }: { onRefresh: () => void; currentDashboard: MergedServiceDashboard; + serviceName: string; }) { const [isModalVisible, setIsModalVisible] = useState(false); return ( @@ -37,6 +39,7 @@ export function EditDashboard({ onClose={() => setIsModalVisible(!isModalVisible)} onRefresh={onRefresh} currentDashboard={currentDashboard} + serviceName={serviceName} /> )} diff --git a/x-pack/plugins/apm/public/components/app/service_dashboards/actions/link_dashboard.tsx b/x-pack/plugins/apm/public/components/app/service_dashboards/actions/link_dashboard.tsx index 7b652c21039d8..0db2654c1d66b 100644 --- a/x-pack/plugins/apm/public/components/app/service_dashboards/actions/link_dashboard.tsx +++ b/x-pack/plugins/apm/public/components/app/service_dashboards/actions/link_dashboard.tsx @@ -14,10 +14,12 @@ export function LinkDashboard({ onRefresh, emptyButton = false, serviceDashboards, + serviceName, }: { onRefresh: () => void; emptyButton?: boolean; serviceDashboards?: MergedServiceDashboard[]; + serviceName: string; }) { const [isModalVisible, setIsModalVisible] = useState(false); @@ -51,6 +53,7 @@ export function LinkDashboard({ onClose={() => setIsModalVisible(false)} onRefresh={onRefresh} serviceDashboards={serviceDashboards} + serviceName={serviceName} /> )} diff --git a/x-pack/plugins/apm/public/components/app/service_dashboards/actions/save_dashboard_modal.tsx b/x-pack/plugins/apm/public/components/app/service_dashboards/actions/save_dashboard_modal.tsx index 3083e41c2dac2..6872b0d2cc805 100644 --- a/x-pack/plugins/apm/public/components/app/service_dashboards/actions/save_dashboard_modal.tsx +++ b/x-pack/plugins/apm/public/components/app/service_dashboards/actions/save_dashboard_modal.tsx @@ -28,7 +28,6 @@ import { callApmApi } from '../../../../services/rest/create_call_apm_api'; import { useDashboardFetcher } from '../../../../hooks/use_dashboards_fetcher'; import { FETCH_STATUS } from '../../../../hooks/use_fetcher'; import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; -import { useApmParams } from '../../../../hooks/use_apm_params'; import { SERVICE_NAME } from '../../../../../common/es_fields/apm'; import { fromQuery, toQuery } from '../../../shared/links/url_helpers'; import { MergedServiceDashboard } from '..'; @@ -38,6 +37,7 @@ interface Props { onRefresh: () => void; currentDashboard?: MergedServiceDashboard; serviceDashboards?: MergedServiceDashboard[]; + serviceName: string; } export function SaveDashboardModal({ @@ -45,6 +45,7 @@ export function SaveDashboardModal({ onRefresh, currentDashboard, serviceDashboards, + serviceName, }: Props) { const { core: { notifications }, @@ -71,10 +72,6 @@ export function SaveDashboardModal({ const isEditMode = !!currentDashboard?.id; - const { - path: { serviceName }, - } = useApmParams('/services/{serviceName}/dashboards'); - const reloadCustomDashboards = useCallback(() => { onRefresh(); }, [onRefresh]); diff --git a/x-pack/plugins/apm/public/components/app/service_dashboards/index.tsx b/x-pack/plugins/apm/public/components/app/service_dashboards/index.tsx index fe44d62c2388d..7426ec382b87f 100644 --- a/x-pack/plugins/apm/public/components/app/service_dashboards/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_dashboards/index.tsx @@ -28,7 +28,7 @@ import { SerializableRecord } from '@kbn/utility-types'; import { EmptyDashboards } from './empty_dashboards'; import { GotoDashboard, LinkDashboard } from './actions'; import { FETCH_STATUS, useFetcher } from '../../../hooks/use_fetcher'; -import { useApmParams } from '../../../hooks/use_apm_params'; +import { useAnyOfApmParams } from '../../../hooks/use_apm_params'; import { SavedApmCustomDashboard } from '../../../../common/custom_dashboards'; import { ContextMenu } from './context_menu'; import { UnlinkDashboard } from './actions/unlink_dashboard'; @@ -49,7 +49,10 @@ export function ServiceDashboards() { const { path: { serviceName }, query: { environment, kuery, rangeFrom, rangeTo, dashboardId }, - } = useApmParams('/services/{serviceName}/dashboards'); + } = useAnyOfApmParams( + '/services/{serviceName}/dashboards', + '/mobile-services/{serviceName}/dashboards' + ); const [dashboard, setDashboard] = useState(); const [serviceDashboards, setServiceDashboards] = useState< MergedServiceDashboard[] @@ -209,11 +212,13 @@ export function ServiceDashboards() { emptyButton={true} onRefresh={refetch} serviceDashboards={serviceDashboards} + serviceName={serviceName} />, , , ) : ( - } /> + + } + /> )} ); diff --git a/x-pack/plugins/apm/public/components/routing/mobile_service_detail/index.tsx b/x-pack/plugins/apm/public/components/routing/mobile_service_detail/index.tsx index 11a365e0d8328..fa8e7ee0323ab 100644 --- a/x-pack/plugins/apm/public/components/routing/mobile_service_detail/index.tsx +++ b/x-pack/plugins/apm/public/components/routing/mobile_service_detail/index.tsx @@ -26,7 +26,7 @@ import { ErrorGroupDetails } from '../../app/mobile/errors_and_crashes_group_det import { CrashGroupDetails } from '../../app/mobile/errors_and_crashes_group_details/crash_group_details'; import { MobileErrorCrashesOverview } from '../../app/mobile/errors_and_crashes_overview'; import { ServiceDependencies } from '../../app/service_dependencies'; - +import { ServiceDashboards } from '../../app/service_dashboards'; export function page({ title, tabKey, @@ -270,6 +270,20 @@ export const mobileServiceDetailRoute = { }), }), }, + '/mobile-services/{serviceName}/dashboards': { + ...page({ + tabKey: 'dashboards', + title: i18n.translate('xpack.apm.views.dashboard.title', { + defaultMessage: 'Dashboards', + }), + element: , + }), + params: t.partial({ + query: t.partial({ + dashboardId: t.string, + }), + }), + }, '/mobile-services/{serviceName}/': { element: , }, diff --git a/x-pack/plugins/apm/public/components/routing/templates/mobile_service_template/index.tsx b/x-pack/plugins/apm/public/components/routing/templates/mobile_service_template/index.tsx index 3c9bde66ff3ac..b5ce69d9c1d03 100644 --- a/x-pack/plugins/apm/public/components/routing/templates/mobile_service_template/index.tsx +++ b/x-pack/plugins/apm/public/components/routing/templates/mobile_service_template/index.tsx @@ -35,7 +35,8 @@ type Tab = NonNullable[0] & { | 'dependencies' | 'errors-and-crashes' | 'service-map' - | 'alerts'; + | 'alerts' + | 'dashboards'; hidden?: boolean; }; @@ -231,12 +232,25 @@ function useTabs({ selectedTabKey }: { selectedTabKey: Tab['key'] }) { path: { serviceName }, query, }), - append: , label: i18n.translate('xpack.apm.mobileServiceDetails.alertsTabLabel', { defaultMessage: 'Alerts', }), hidden: !(isAlertingAvailable && canReadAlerts), }, + { + key: 'dashboards', + href: router.link('/mobile-services/{serviceName}/dashboards', { + path: { serviceName }, + query, + }), + append: , + label: i18n.translate( + 'xpack.apm.mobileServiceDetails.dashboardsTabLabel', + { + defaultMessage: 'Dashboards', + } + ), + }, ]; return tabs From c39fac616b7413cc21fe17838025a443e60fdc69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20C=C3=B4t=C3=A9?= Date: Fri, 5 Jan 2024 08:01:59 -0500 Subject: [PATCH 137/323] Rename connector compatibility for Generative AI so it is split between security and o11y (#174000) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In this PR, I'm renaming `Generative AI` to `Generative AI for Security` in the connectors comatibility list so we have a split on Gen AI for Security and Observability (follow up from https://github.com/elastic/kibana/pull/173826). ## Screenshots Screenshot 2024-01-03 at 11 53 00 AM Screenshot 2024-01-03 at 11 53 32 AM Screenshot 2024-01-03 at 11 53 39 AM ## To verify **Connectors** 1. Startup Kibana in trial mode 2. Open the create Bedrock connector flyout from the connectors page 3. Notice the compatibility is only for Security 4. Create a Bedrock connector (input random text in all fields to pass validation) 5. Open the create OpenAI connector from the connectors page 6. Notice the compatibility is for Security and Observability 7. Create an OpenAI connector (input random text in all fields to pass validation) **Security Solution** 9. Navigate to the Security solution (`/app/security/get_started`) 10. Open the AI Assistant on the top right 11. Open the `Conversation Settings` 12. See OpenAI and Bedrock connectors displaying **Observability** 13. Navigate to the Observability app (`/app/observability/overview`) 14. Open the AI Assistant on the top right 15. Select the actions menu on the top right of the flyout and open `AI Assistant Settings` 16. Open the default connector dropdown 17. Notice only OpenAI connectors displaying --- .../use_load_action_types/index.test.tsx | 2 +- .../use_load_action_types/index.tsx | 4 ++-- .../common/connector_feature_config.test.ts | 6 +++--- .../common/connector_feature_config.ts | 20 +++++++++---------- x-pack/plugins/actions/common/types.ts | 2 +- .../server/connector_types/bedrock/index.ts | 4 ++-- .../server/connector_types/openai/index.ts | 4 ++-- .../translations/translations/fr-FR.json | 1 - .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - 10 files changed, 21 insertions(+), 24 deletions(-) diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.test.tsx index 0aa6ed21e2f88..50d3a73797413 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.test.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.test.tsx @@ -37,7 +37,7 @@ describe('useLoadActionTypes', () => { await waitForNextUpdate(); expect(defaultProps.http.get).toHaveBeenCalledWith('/api/actions/connector_types', { - query: { feature_id: 'generativeAI' }, + query: { feature_id: 'generativeAIForSecurity' }, }); expect(toasts.addError).not.toHaveBeenCalled(); }); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.tsx index d307f85e43b7f..cf62127f286ca 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.tsx @@ -15,7 +15,7 @@ import type { IHttpFetchError } from '@kbn/core-http-browser'; import type { ActionType } from '@kbn/actions-plugin/common'; import { HttpSetup } from '@kbn/core-http-browser'; import { IToasts } from '@kbn/core-notifications-browser'; -import { GenerativeAIConnectorFeatureId } from '@kbn/actions-plugin/common'; +import { GenerativeAIForSecurityConnectorFeatureId } from '@kbn/actions-plugin/common'; import * as i18n from '../translations'; /** @@ -39,7 +39,7 @@ export const useLoadActionTypes = ({ async () => { const queryResult = await loadActionTypes({ http, - featureId: GenerativeAIConnectorFeatureId, + featureId: GenerativeAIForSecurityConnectorFeatureId, }); const sortedData = queryResult.sort((a, b) => a.name.localeCompare(b.name)); diff --git a/x-pack/plugins/actions/common/connector_feature_config.test.ts b/x-pack/plugins/actions/common/connector_feature_config.test.ts index c12e3db21127f..1f18e923593d5 100644 --- a/x-pack/plugins/actions/common/connector_feature_config.test.ts +++ b/x-pack/plugins/actions/common/connector_feature_config.test.ts @@ -13,7 +13,7 @@ import { describe('areValidFeatures', () => { it('returns true when all inputs are valid features', () => { - expect(areValidFeatures(['alerting', 'cases', 'generativeAI'])).toBeTruthy(); + expect(areValidFeatures(['alerting', 'cases', 'generativeAIForSecurity'])).toBeTruthy(); }); it('returns true when only one input and it is a valid feature', () => { @@ -43,8 +43,8 @@ describe('getConnectorFeatureName', () => { describe('getConnectorCompatibility', () => { it('returns the compatibility list for valid feature ids', () => { expect( - getConnectorCompatibility(['alerting', 'cases', 'uptime', 'siem', 'generativeAI']) - ).toEqual(['Alerting Rules', 'Cases', 'Generative AI']); + getConnectorCompatibility(['alerting', 'cases', 'uptime', 'siem', 'generativeAIForSecurity']) + ).toEqual(['Alerting Rules', 'Cases', 'Generative AI for Security']); }); it('skips invalid feature ids', () => { diff --git a/x-pack/plugins/actions/common/connector_feature_config.ts b/x-pack/plugins/actions/common/connector_feature_config.ts index fb61ff35da6b7..4638387d31c5e 100644 --- a/x-pack/plugins/actions/common/connector_feature_config.ts +++ b/x-pack/plugins/actions/common/connector_feature_config.ts @@ -25,20 +25,20 @@ export const AlertingConnectorFeatureId = 'alerting'; export const CasesConnectorFeatureId = 'cases'; export const UptimeConnectorFeatureId = 'uptime'; export const SecurityConnectorFeatureId = 'siem'; -export const GenerativeAIConnectorFeatureId = 'generativeAI'; +export const GenerativeAIForSecurityConnectorFeatureId = 'generativeAIForSecurity'; export const GenerativeAIForObservabilityConnectorFeatureId = 'generativeAIForObservability'; -const compatibilityGenerativeAI = i18n.translate( - 'xpack.actions.availableConnectorFeatures.compatibility.generativeAI', +const compatibilityGenerativeAIForSecurity = i18n.translate( + 'xpack.actions.availableConnectorFeatures.compatibility.generativeAIForSecurity', { - defaultMessage: 'Generative AI', + defaultMessage: 'Generative AI for Security', } ); const compatibilityGenerativeAIForObservability = i18n.translate( 'xpack.actions.availableConnectorFeatures.compatibility.generativeAIForObservability', { - defaultMessage: 'Generative AI For Observability', + defaultMessage: 'Generative AI for Observability', } ); @@ -88,10 +88,10 @@ export const SecuritySolutionFeature: ConnectorFeatureConfig = { compatibility: compatibilityAlertingRules, }; -export const GenerativeAIFeature: ConnectorFeatureConfig = { - id: GenerativeAIConnectorFeatureId, - name: compatibilityGenerativeAI, - compatibility: compatibilityGenerativeAI, +export const GenerativeAIForSecurityFeature: ConnectorFeatureConfig = { + id: GenerativeAIForSecurityConnectorFeatureId, + name: compatibilityGenerativeAIForSecurity, + compatibility: compatibilityGenerativeAIForSecurity, }; export const GenerativeAIForObservabilityFeature: ConnectorFeatureConfig = { @@ -105,7 +105,7 @@ const AllAvailableConnectorFeatures = { [CasesConnectorFeature.id]: CasesConnectorFeature, [UptimeConnectorFeature.id]: UptimeConnectorFeature, [SecuritySolutionFeature.id]: SecuritySolutionFeature, - [GenerativeAIFeature.id]: GenerativeAIFeature, + [GenerativeAIForSecurityFeature.id]: GenerativeAIForSecurityFeature, [GenerativeAIForObservabilityFeature.id]: GenerativeAIForObservabilityFeature, }; diff --git a/x-pack/plugins/actions/common/types.ts b/x-pack/plugins/actions/common/types.ts index 2560cbae3f7e7..7420240d71cc0 100644 --- a/x-pack/plugins/actions/common/types.ts +++ b/x-pack/plugins/actions/common/types.ts @@ -13,7 +13,7 @@ export { CasesConnectorFeatureId, UptimeConnectorFeatureId, SecurityConnectorFeatureId, - GenerativeAIConnectorFeatureId, + GenerativeAIForSecurityConnectorFeatureId, } from './connector_feature_config'; export interface ActionType { id: string; diff --git a/x-pack/plugins/stack_connectors/server/connector_types/bedrock/index.ts b/x-pack/plugins/stack_connectors/server/connector_types/bedrock/index.ts index e9ab583277282..5f295b8c39367 100644 --- a/x-pack/plugins/stack_connectors/server/connector_types/bedrock/index.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/bedrock/index.ts @@ -10,7 +10,7 @@ import { SubActionConnectorType, ValidatorType, } from '@kbn/actions-plugin/server/sub_action_framework/types'; -import { GenerativeAIConnectorFeatureId } from '@kbn/actions-plugin/common'; +import { GenerativeAIForSecurityConnectorFeatureId } from '@kbn/actions-plugin/common'; import { urlAllowListValidator } from '@kbn/actions-plugin/server'; import { ValidatorServices } from '@kbn/actions-plugin/server/types'; import { assertURL } from '@kbn/actions-plugin/server/sub_action_framework/helpers/validators'; @@ -29,7 +29,7 @@ export const getConnectorType = (): SubActionConnectorType => ( secrets: SecretsSchema, }, validators: [{ type: ValidatorType.CONFIG, validator: configValidator }], - supportedFeatureIds: [GenerativeAIConnectorFeatureId], + supportedFeatureIds: [GenerativeAIForSecurityConnectorFeatureId], minimumLicenseRequired: 'enterprise' as const, renderParameterTemplates, }); diff --git a/x-pack/plugins/stack_connectors/server/connector_types/openai/index.ts b/x-pack/plugins/stack_connectors/server/connector_types/openai/index.ts index 6852a83a9ee3f..3fa865209ba5c 100644 --- a/x-pack/plugins/stack_connectors/server/connector_types/openai/index.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/openai/index.ts @@ -11,7 +11,7 @@ import { ValidatorType, } from '@kbn/actions-plugin/server/sub_action_framework/types'; import { - GenerativeAIConnectorFeatureId, + GenerativeAIForSecurityConnectorFeatureId, GenerativeAIForObservabilityConnectorFeatureId, } from '@kbn/actions-plugin/common'; import { urlAllowListValidator } from '@kbn/actions-plugin/server'; @@ -37,7 +37,7 @@ export const getConnectorType = (): SubActionConnectorType => ( }, validators: [{ type: ValidatorType.CONFIG, validator: configValidator }], supportedFeatureIds: [ - GenerativeAIConnectorFeatureId, + GenerativeAIForSecurityConnectorFeatureId, GenerativeAIForObservabilityConnectorFeatureId, ], minimumLicenseRequired: 'enterprise' as const, diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index e7fa92aa02a3c..e8365d42168ae 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -7621,7 +7621,6 @@ "xpack.actions.availableConnectorFeatures.cases": "Cas", "xpack.actions.availableConnectorFeatures.compatibility.alertingRules": "Règles d'alerting", "xpack.actions.availableConnectorFeatures.compatibility.cases": "Cas", - "xpack.actions.availableConnectorFeatures.compatibility.generativeAI": "IA générative", "xpack.actions.availableConnectorFeatures.securitySolution": "Solution de sécurité", "xpack.actions.availableConnectorFeatures.uptime": "Uptime", "xpack.actions.builtin.cases.jiraTitle": "Jira", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 4a23239256f53..bf36677dd19e6 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -7636,7 +7636,6 @@ "xpack.actions.availableConnectorFeatures.cases": "ケース", "xpack.actions.availableConnectorFeatures.compatibility.alertingRules": "アラートルール", "xpack.actions.availableConnectorFeatures.compatibility.cases": "ケース", - "xpack.actions.availableConnectorFeatures.compatibility.generativeAI": "生成AI", "xpack.actions.availableConnectorFeatures.securitySolution": "セキュリティソリューション", "xpack.actions.availableConnectorFeatures.uptime": "アップタイム", "xpack.actions.builtin.cases.jiraTitle": "Jira", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index ccce90db35aaf..ebc2118a79b70 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -7702,7 +7702,6 @@ "xpack.actions.availableConnectorFeatures.cases": "案例", "xpack.actions.availableConnectorFeatures.compatibility.alertingRules": "告警规则", "xpack.actions.availableConnectorFeatures.compatibility.cases": "案例", - "xpack.actions.availableConnectorFeatures.compatibility.generativeAI": "生成式 AI", "xpack.actions.availableConnectorFeatures.securitySolution": "安全解决方案", "xpack.actions.availableConnectorFeatures.uptime": "运行时间", "xpack.actions.builtin.cases.jiraTitle": "Jira", From b37634d2b70c6ae99a1b3da9f8a529c112f557ef Mon Sep 17 00:00:00 2001 From: Stratoula Kalafateli Date: Fri, 5 Jan 2024 15:19:14 +0200 Subject: [PATCH 138/323] [Lens][Inline editing] Improve the api for the embeddable consumers (#173841) ## Summary Closes https://github.com/elastic/kibana/issues/167632 This PR provides a simpler api for the Lens embeddable consumers who want to provide inline editing capabilities. I added an example to help with the integration. Run kibana with ``` yarn start --run-examples ``` http://localhost:5601/app/lens_embeddable_inline_editing_example image image It also allows the consumers to render the inline editing component in a custom element in case you don't want to open a push flyout. ![custom-container](https://github.com/elastic/kibana/assets/17003240/6ce1b9c6-dab0-4321-b4c0-ae196dfb4a84) I included a readme on how to use the api. ### Note This is the first PR which uses the new Lens config builder so some of the changes are not related to the api improvements but they are fixing some bugs on the builder. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .github/CODEOWNERS | 1 + package.json | 1 + .../lens_attributes_builder.test.ts | 46 ++--- .../config_builder/charts/gauge.test.ts | 3 - .../config_builder/charts/heatmap.test.ts | 3 - .../config_builder/charts/metric.test.ts | 3 - .../config_builder/charts/partition.test.ts | 3 - .../config_builder/charts/region_map.test.ts | 3 - .../config_builder/charts/table.test.ts | 3 - .../config_builder/charts/tag_cloud.test.ts | 3 - .../config_builder/charts/xy.test.ts | 3 - .../config_builder/utils.test.ts | 3 - .../config_builder/utils.ts | 14 +- packages/kbn-optimizer/limits.yml | 2 +- .../group_preview.test.tsx | 2 +- .../group_editor_flyout/lens_attributes.ts | 2 +- tsconfig.base.json | 2 + .../.eslintrc.json | 5 + .../README.md | 68 +++++++ .../kibana.jsonc | 21 ++ .../public/app.tsx | 182 ++++++++++++++++++ .../public/embeddable.tsx | 161 ++++++++++++++++ .../public/flyout.tsx | 124 ++++++++++++ .../public/image.png | Bin 0 -> 155151 bytes .../public/index.ts | 10 + .../public/mount.tsx | 49 +++++ .../public/plugin.ts | 57 ++++++ .../public/utils.ts | 63 ++++++ .../tsconfig.json | 26 +++ .../configurations/lens_attributes.test.ts | 2 +- .../get_edit_lens_configuration.tsx | 4 + .../lens_configuration_flyout.tsx | 6 + .../shared/edit_on_the_fly/types.ts | 4 + x-pack/plugins/lens/public/async_services.ts | 1 + .../embeddable/embeddable_component.tsx | 2 +- x-pack/plugins/lens/public/index.ts | 2 + x-pack/plugins/lens/public/plugin.ts | 18 ++ .../in_app_embeddable_edit_action.test.tsx | 97 ++++++++++ .../in_app_embeddable_edit_action.tsx | 64 ++++++ .../in_app_embeddable_edit_action_helpers.tsx | 154 +++++++++++++++ .../in_app_embeddable_edit_trigger.ts | 19 ++ .../in_app_embeddable_edit/types.ts | 37 ++++ x-pack/plugins/lens/readme.md | 8 + .../risk_summary_flyout/risk_summary.test.tsx | 8 +- yarn.lock | 3 + 45 files changed, 1223 insertions(+), 69 deletions(-) create mode 100644 x-pack/examples/lens_embeddable_inline_editing_example/.eslintrc.json create mode 100644 x-pack/examples/lens_embeddable_inline_editing_example/README.md create mode 100644 x-pack/examples/lens_embeddable_inline_editing_example/kibana.jsonc create mode 100644 x-pack/examples/lens_embeddable_inline_editing_example/public/app.tsx create mode 100644 x-pack/examples/lens_embeddable_inline_editing_example/public/embeddable.tsx create mode 100644 x-pack/examples/lens_embeddable_inline_editing_example/public/flyout.tsx create mode 100644 x-pack/examples/lens_embeddable_inline_editing_example/public/image.png create mode 100644 x-pack/examples/lens_embeddable_inline_editing_example/public/index.ts create mode 100644 x-pack/examples/lens_embeddable_inline_editing_example/public/mount.tsx create mode 100644 x-pack/examples/lens_embeddable_inline_editing_example/public/plugin.ts create mode 100644 x-pack/examples/lens_embeddable_inline_editing_example/public/utils.ts create mode 100644 x-pack/examples/lens_embeddable_inline_editing_example/tsconfig.json create mode 100644 x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_action.test.tsx create mode 100644 x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_action.tsx create mode 100644 x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_action_helpers.tsx create mode 100644 x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_trigger.ts create mode 100644 x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/types.ts diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b3d2e9cf82ad4..4dae217dce6ad 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -487,6 +487,7 @@ x-pack/plugins/kubernetes_security @elastic/kibana-cloud-security-posture packages/kbn-language-documentation-popover @elastic/kibana-visualizations packages/kbn-lens-embeddable-utils @elastic/obs-ux-infra_services-team @elastic/kibana-visualizations packages/kbn-lens-formula-docs @elastic/kibana-visualizations +x-pack/examples/lens_embeddable_inline_editing_example @elastic/kibana-visualizations x-pack/plugins/lens @elastic/kibana-visualizations x-pack/plugins/license_api_guard @elastic/platform-deployment-management x-pack/plugins/license_management @elastic/platform-deployment-management diff --git a/package.json b/package.json index 4f6aef817d579..0a4d9ebfcebdb 100644 --- a/package.json +++ b/package.json @@ -509,6 +509,7 @@ "@kbn/language-documentation-popover": "link:packages/kbn-language-documentation-popover", "@kbn/lens-embeddable-utils": "link:packages/kbn-lens-embeddable-utils", "@kbn/lens-formula-docs": "link:packages/kbn-lens-formula-docs", + "@kbn/lens-inline-editing-example-plugin": "link:x-pack/examples/lens_embeddable_inline_editing_example", "@kbn/lens-plugin": "link:x-pack/plugins/lens", "@kbn/license-api-guard-plugin": "link:x-pack/plugins/license_api_guard", "@kbn/license-management-plugin": "link:x-pack/plugins/license_management", diff --git a/packages/kbn-lens-embeddable-utils/attribute_builder/lens_attributes_builder.test.ts b/packages/kbn-lens-embeddable-utils/attribute_builder/lens_attributes_builder.test.ts index 199379e74eb9d..2f90e03099350 100644 --- a/packages/kbn-lens-embeddable-utils/attribute_builder/lens_attributes_builder.test.ts +++ b/packages/kbn-lens-embeddable-utils/attribute_builder/lens_attributes_builder.test.ts @@ -113,15 +113,13 @@ describe('lens_attributes_builder', () => { formulaAPI, }); const builder = new LensAttributesBuilder({ visualization: metriChart }); + const { - state: { - datasourceStates: { - formBased: { layers }, - }, - visualization, - }, + state: { datasourceStates: datasourceStates, visualization }, } = builder.build(); + const layers = datasourceStates.formBased?.layers; + expect(layers).toEqual({ layer: { columnOrder: ['metric_formula_accessor'], @@ -156,14 +154,11 @@ describe('lens_attributes_builder', () => { }); const builder = new LensAttributesBuilder({ visualization: metriChart }); const { - state: { - datasourceStates: { - formBased: { layers }, - }, - visualization, - }, + state: { datasourceStates: datasourceStates, visualization }, } = builder.build(); + const layers = datasourceStates.formBased?.layers; + expect(layers).toEqual({ layer: { columnOrder: ['metric_formula_accessor'], @@ -215,14 +210,11 @@ describe('lens_attributes_builder', () => { }); const builder = new LensAttributesBuilder({ visualization: xyChart }); const { - state: { - datasourceStates: { - formBased: { layers }, - }, - visualization, - }, + state: { datasourceStates: datasourceStates, visualization }, } = builder.build(); + const layers = datasourceStates.formBased?.layers; + expect(layers).toEqual({ layer_0: { columnOrder: ['x_date_histogram', 'formula_accessor_0_0'], @@ -272,14 +264,11 @@ describe('lens_attributes_builder', () => { }); const builder = new LensAttributesBuilder({ visualization: xyChart }); const { - state: { - datasourceStates: { - formBased: { layers }, - }, - visualization, - }, + state: { datasourceStates: datasourceStates, visualization }, } = builder.build(); + const layers = datasourceStates.formBased?.layers; + expect(layers).toEqual({ layer_0: { columnOrder: ['x_date_histogram', 'formula_accessor_0_0'], @@ -340,14 +329,11 @@ describe('lens_attributes_builder', () => { }); const builder = new LensAttributesBuilder({ visualization: xyChart }); const { - state: { - datasourceStates: { - formBased: { layers }, - }, - visualization, - }, + state: { datasourceStates: datasourceStates, visualization }, } = builder.build(); + const layers = datasourceStates.formBased?.layers; + expect(layers).toEqual({ layer_0: { columnOrder: ['x_date_histogram', 'formula_accessor_0_0', 'formula_accessor_0_1'], diff --git a/packages/kbn-lens-embeddable-utils/config_builder/charts/gauge.test.ts b/packages/kbn-lens-embeddable-utils/config_builder/charts/gauge.test.ts index 5e0e5dc1de2a7..aa13813e37b82 100644 --- a/packages/kbn-lens-embeddable-utils/config_builder/charts/gauge.test.ts +++ b/packages/kbn-lens-embeddable-utils/config_builder/charts/gauge.test.ts @@ -79,9 +79,6 @@ test('generates gauge chart config', async () => { "test": Object {}, }, "datasourceStates": Object { - "formBased": Object { - "layers": Object {}, - }, "textBased": Object { "layers": Object { "layer_0": Object { diff --git a/packages/kbn-lens-embeddable-utils/config_builder/charts/heatmap.test.ts b/packages/kbn-lens-embeddable-utils/config_builder/charts/heatmap.test.ts index cfcabb131b451..91786a0b91e23 100644 --- a/packages/kbn-lens-embeddable-utils/config_builder/charts/heatmap.test.ts +++ b/packages/kbn-lens-embeddable-utils/config_builder/charts/heatmap.test.ts @@ -81,9 +81,6 @@ test('generates metric chart config', async () => { "test": Object {}, }, "datasourceStates": Object { - "formBased": Object { - "layers": Object {}, - }, "textBased": Object { "layers": Object { "layer_0": Object { diff --git a/packages/kbn-lens-embeddable-utils/config_builder/charts/metric.test.ts b/packages/kbn-lens-embeddable-utils/config_builder/charts/metric.test.ts index cf82d3a2f5f4d..86078332ebb42 100644 --- a/packages/kbn-lens-embeddable-utils/config_builder/charts/metric.test.ts +++ b/packages/kbn-lens-embeddable-utils/config_builder/charts/metric.test.ts @@ -79,9 +79,6 @@ test('generates metric chart config', async () => { "test": Object {}, }, "datasourceStates": Object { - "formBased": Object { - "layers": Object {}, - }, "textBased": Object { "layers": Object { "layer_0": Object { diff --git a/packages/kbn-lens-embeddable-utils/config_builder/charts/partition.test.ts b/packages/kbn-lens-embeddable-utils/config_builder/charts/partition.test.ts index 22ee18f3e5f3e..120b3069552d8 100644 --- a/packages/kbn-lens-embeddable-utils/config_builder/charts/partition.test.ts +++ b/packages/kbn-lens-embeddable-utils/config_builder/charts/partition.test.ts @@ -80,9 +80,6 @@ test('generates metric chart config', async () => { "test": Object {}, }, "datasourceStates": Object { - "formBased": Object { - "layers": Object {}, - }, "textBased": Object { "layers": Object { "layer_0": Object { diff --git a/packages/kbn-lens-embeddable-utils/config_builder/charts/region_map.test.ts b/packages/kbn-lens-embeddable-utils/config_builder/charts/region_map.test.ts index 0093b03e33bc3..4fd97797b69dd 100644 --- a/packages/kbn-lens-embeddable-utils/config_builder/charts/region_map.test.ts +++ b/packages/kbn-lens-embeddable-utils/config_builder/charts/region_map.test.ts @@ -80,9 +80,6 @@ test('generates metric chart config', async () => { "test": Object {}, }, "datasourceStates": Object { - "formBased": Object { - "layers": Object {}, - }, "textBased": Object { "layers": Object { "layer_0": Object { diff --git a/packages/kbn-lens-embeddable-utils/config_builder/charts/table.test.ts b/packages/kbn-lens-embeddable-utils/config_builder/charts/table.test.ts index 909f3e737ac99..dbe67d15416c4 100644 --- a/packages/kbn-lens-embeddable-utils/config_builder/charts/table.test.ts +++ b/packages/kbn-lens-embeddable-utils/config_builder/charts/table.test.ts @@ -80,9 +80,6 @@ test('generates metric chart config', async () => { "test": Object {}, }, "datasourceStates": Object { - "formBased": Object { - "layers": Object {}, - }, "textBased": Object { "layers": Object { "layer_0": Object { diff --git a/packages/kbn-lens-embeddable-utils/config_builder/charts/tag_cloud.test.ts b/packages/kbn-lens-embeddable-utils/config_builder/charts/tag_cloud.test.ts index 08885ba57ba83..fe94e8f789d43 100644 --- a/packages/kbn-lens-embeddable-utils/config_builder/charts/tag_cloud.test.ts +++ b/packages/kbn-lens-embeddable-utils/config_builder/charts/tag_cloud.test.ts @@ -80,9 +80,6 @@ test('generates metric chart config', async () => { "test": Object {}, }, "datasourceStates": Object { - "formBased": Object { - "layers": Object {}, - }, "textBased": Object { "layers": Object { "layer_0": Object { diff --git a/packages/kbn-lens-embeddable-utils/config_builder/charts/xy.test.ts b/packages/kbn-lens-embeddable-utils/config_builder/charts/xy.test.ts index d1646b4c0ec7d..42dc00dc2ba26 100644 --- a/packages/kbn-lens-embeddable-utils/config_builder/charts/xy.test.ts +++ b/packages/kbn-lens-embeddable-utils/config_builder/charts/xy.test.ts @@ -87,9 +87,6 @@ test('generates metric chart config', async () => { "test": Object {}, }, "datasourceStates": Object { - "formBased": Object { - "layers": Object {}, - }, "textBased": Object { "layers": Object { "layer_0": Object { diff --git a/packages/kbn-lens-embeddable-utils/config_builder/utils.test.ts b/packages/kbn-lens-embeddable-utils/config_builder/utils.test.ts index 7709c6969b29f..b4b7c7ddc4842 100644 --- a/packages/kbn-lens-embeddable-utils/config_builder/utils.test.ts +++ b/packages/kbn-lens-embeddable-utils/config_builder/utils.test.ts @@ -199,9 +199,6 @@ describe('buildDatasourceStates', () => { ); expect(results).toMatchInlineSnapshot(` Object { - "formBased": Object { - "layers": Object {}, - }, "textBased": Object { "layers": Object { "layer_0": Object { diff --git a/packages/kbn-lens-embeddable-utils/config_builder/utils.ts b/packages/kbn-lens-embeddable-utils/config_builder/utils.ts index 21c48ca76a52b..78434f8dbb10f 100644 --- a/packages/kbn-lens-embeddable-utils/config_builder/utils.ts +++ b/packages/kbn-lens-embeddable-utils/config_builder/utils.ts @@ -191,10 +191,7 @@ export const buildDatasourceStates = async ( getValueColumns: (config: any, i: number) => TextBasedLayerColumn[], dataViewsAPI: DataViewsPublicPluginStart ) => { - const layers: LensAttributes['state']['datasourceStates'] = { - textBased: { layers: {} }, - formBased: { layers: {} }, - }; + let layers: Partial = {}; const mainDataset = config.dataset; const configLayers = 'layers' in config ? config.layers : [config]; @@ -226,7 +223,14 @@ export const buildDatasourceStates = async ( getValueColumns ); if (layerConfig) { - layers[type]!.layers[layerId] = layerConfig; + layers = { + ...layers, + [type]: { + layers: { + [layerId]: layerConfig, + }, + }, + }; } } } diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index d38e1399ed3aa..9c96bfe371dfa 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -86,7 +86,7 @@ pageLoadAssetSize: kibanaUsageCollection: 16463 kibanaUtils: 79713 kubernetesSecurity: 77234 - lens: 41000 + lens: 42000 licenseManagement: 41817 licensing: 29004 links: 44490 diff --git a/src/plugins/event_annotation_listing/public/components/group_editor_flyout/group_preview.test.tsx b/src/plugins/event_annotation_listing/public/components/group_editor_flyout/group_preview.test.tsx index 09c7c5a265355..386976ac571b6 100644 --- a/src/plugins/event_annotation_listing/public/components/group_editor_flyout/group_preview.test.tsx +++ b/src/plugins/event_annotation_listing/public/components/group_editor_flyout/group_preview.test.tsx @@ -237,7 +237,7 @@ describe('group editor preview', () => { const assertTimeField = (fieldName: string, attributes: TypedLensByValueInput['attributes']) => expect( ( - attributes.state.datasourceStates.formBased.layers[DATA_LAYER_ID].columns[ + attributes.state.datasourceStates.formBased?.layers[DATA_LAYER_ID].columns[ DATE_HISTOGRAM_COLUMN_ID ] as FieldBasedIndexPatternColumn ).sourceField diff --git a/src/plugins/event_annotation_listing/public/components/group_editor_flyout/lens_attributes.ts b/src/plugins/event_annotation_listing/public/components/group_editor_flyout/lens_attributes.ts index 7943b1d905b6a..f9e56ded409b9 100644 --- a/src/plugins/event_annotation_listing/public/components/group_editor_flyout/lens_attributes.ts +++ b/src/plugins/event_annotation_listing/public/components/group_editor_flyout/lens_attributes.ts @@ -146,7 +146,7 @@ export const getLensAttributes = (group: EventAnnotationGroupConfig, timeField: export const getCurrentTimeField = (attributes: TypedLensByValueInput['attributes']) => { return ( - attributes.state.datasourceStates.formBased.layers[DATA_LAYER_ID].columns[ + attributes.state.datasourceStates?.formBased?.layers[DATA_LAYER_ID].columns[ DATE_HISTOGRAM_COLUMN_ID ] as FieldBasedIndexPatternColumn ).sourceField; diff --git a/tsconfig.base.json b/tsconfig.base.json index d241aace37840..78c48a4acaff8 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -968,6 +968,8 @@ "@kbn/lens-embeddable-utils/*": ["packages/kbn-lens-embeddable-utils/*"], "@kbn/lens-formula-docs": ["packages/kbn-lens-formula-docs"], "@kbn/lens-formula-docs/*": ["packages/kbn-lens-formula-docs/*"], + "@kbn/lens-inline-editing-example-plugin": ["x-pack/examples/lens_embeddable_inline_editing_example"], + "@kbn/lens-inline-editing-example-plugin/*": ["x-pack/examples/lens_embeddable_inline_editing_example/*"], "@kbn/lens-plugin": ["x-pack/plugins/lens"], "@kbn/lens-plugin/*": ["x-pack/plugins/lens/*"], "@kbn/license-api-guard-plugin": ["x-pack/plugins/license_api_guard"], diff --git a/x-pack/examples/lens_embeddable_inline_editing_example/.eslintrc.json b/x-pack/examples/lens_embeddable_inline_editing_example/.eslintrc.json new file mode 100644 index 0000000000000..2aab6c2d9093b --- /dev/null +++ b/x-pack/examples/lens_embeddable_inline_editing_example/.eslintrc.json @@ -0,0 +1,5 @@ +{ + "rules": { + "@typescript-eslint/consistent-type-definitions": 0 + } +} diff --git a/x-pack/examples/lens_embeddable_inline_editing_example/README.md b/x-pack/examples/lens_embeddable_inline_editing_example/README.md new file mode 100644 index 0000000000000..ae280f9a4c17e --- /dev/null +++ b/x-pack/examples/lens_embeddable_inline_editing_example/README.md @@ -0,0 +1,68 @@ +# Inline editing of Lens embeddable + +To run this example plugin, use the command `yarn start --run-examples`. + +This plugin contains examples on how to integrate the inline editing capabilities to your Lens embeddable. + +Steps: + * Add UIActions on your start dependencies + * On your embeddable use the onLoad callback to store in the local state the adapters and lensEmbeddableOutput$. + +```tsx + // my Lens embeddable + +``` + +```tsx + const [lensLoadEvent, setLensLoadEvent] = useState(null); + // my onLoad callback + const onLoad = useCallback( + ( + isLoading: boolean, + adapters: LensChartLoadEvent['adapters'] | undefined, + lensEmbeddableOutput$?: LensChartLoadEvent['embeddableOutput$'] + ) => { + const adapterTables = adapters?.tables?.tables; + if (adapterTables && !isLoading) { + setLensLoadEvent({ + adapters, + embeddableOutput$: lensEmbeddableOutput$, + }); + } + }, + [] + ); +``` + * Create the triggerOptions. You will need: + - The attributes of the lens embeddable input + - The lensChartEvent that you retrieved from the onLoad callback + - An onUpdate callback to update the embeddable input with the new attributes + - An optional onApply callback if you want to add an action when the Apply button is clicked + - An optional onCancel callback if you want to add an action when the Cancel button is clicked + +```tsx + // my trigger options + const triggerOptions = { + attributes: embeddableInput?.attributes, + lensEvent: lensLoadEvent, + onUpdate: (newAttributes: TypedLensByValueInput['attributes']) => { + // onUpdate I need to update my embeddableInput.attributes + }, + onApply: () => { + // optional callback when Apply button is clicked + }, + onCancel: () => { + // optional callback when Cancel button is clicked + }, + }; +``` + +* Add a button which will open the editing flyout. Execute the IN_APP_EMBEDDABLE_EDIT_TRIGGER trigger onClick +```tsx +uiActions.getTrigger('IN_APP_EMBEDDABLE_EDIT_TRIGGER').exec(triggerOptions); +``` + +### Important note +In case you don't want to open a push flyout you can pass an html element to the triggerOptions, the `container` property. This is going +to render the inline editing component to this container element. In that case you will need an extra handling on your side. +Check the 3rd example for implementation details. \ No newline at end of file diff --git a/x-pack/examples/lens_embeddable_inline_editing_example/kibana.jsonc b/x-pack/examples/lens_embeddable_inline_editing_example/kibana.jsonc new file mode 100644 index 0000000000000..01540fe2de3a1 --- /dev/null +++ b/x-pack/examples/lens_embeddable_inline_editing_example/kibana.jsonc @@ -0,0 +1,21 @@ +{ + "type": "plugin", + "id": "@kbn/lens-inline-editing-example-plugin", + "owner": "@elastic/kibana-visualizations", + "plugin": { + "id": "inlineEditingLensExample", + "server": false, + "browser": true, + "configPath": [ + "lens_embeddable_inline_editing_example" + ], + "requiredPlugins": [ + "uiActions", + "lens", + "dataViews", + "embeddable", + "developerExamples", + "kibanaReact" + ] + } +} diff --git a/x-pack/examples/lens_embeddable_inline_editing_example/public/app.tsx b/x-pack/examples/lens_embeddable_inline_editing_example/public/app.tsx new file mode 100644 index 0000000000000..8ff88af42b520 --- /dev/null +++ b/x-pack/examples/lens_embeddable_inline_editing_example/public/app.tsx @@ -0,0 +1,182 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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, useState } from 'react'; +import ReactDOM from 'react-dom'; +import { css } from '@emotion/react'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiPage, + EuiPageBody, + EuiPageHeader, + EuiPageSection, + EuiPanel, + EuiSpacer, + EuiButton, + EuiTitle, +} from '@elastic/eui'; +import type { CoreStart } from '@kbn/core/public'; +import { LensConfigBuilder } from '@kbn/lens-embeddable-utils/config_builder/config_builder'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import type { LensPublicStart } from '@kbn/lens-plugin/public'; +import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import type { StartDependencies } from './plugin'; +import { LensChart } from './embeddable'; +import { MultiPaneFlyout } from './flyout'; + +export const App = (props: { + core: CoreStart; + plugins: StartDependencies; + defaultDataView: DataView; + stateHelpers: Awaited>; +}) => { + const [container, setContainer] = useState(null); + const [isFlyoutVisible, setIsFlyoutVisible] = useState(false); + const [isInlineEditingVisible, setIsinlineEditingVisible] = useState(false); + const [panelActive, setPanelActive] = useState(null); + + const configBuilder = useMemo( + () => new LensConfigBuilder(props.stateHelpers.formula, props.plugins.dataViews), + [props.plugins.dataViews, props.stateHelpers.formula] + ); + + return ( + + + + + + + + + + + + + + + +

    #3: Embeddable inside a flyout

    +
    + + +

    + In case you do not want to use a push flyout, you can check this example.{' '} +
    + In this example, we have a Lens embeddable inside a flyout and we want to + render the inline editing Component in a second slot of the same flyout. +

    +
    + + + + { + setIsFlyoutVisible(true); + setPanelActive(3); + }} + > + Show flyout + + {isFlyoutVisible ? ( + { + setIsinlineEditingVisible(false); + if (container) { + ReactDOM.unmountComponentAtNode(container); + } + }} + onCancelCb={() => { + setIsinlineEditingVisible(false); + if (container) { + ReactDOM.unmountComponentAtNode(container); + } + }} + isESQL + isActive + /> + ), + }} + inlineEditingContent={{ + visible: isInlineEditingVisible, + }} + setContainer={setContainer} + onClose={() => { + setIsFlyoutVisible(false); + setIsinlineEditingVisible(false); + setPanelActive(null); + if (container) { + ReactDOM.unmountComponentAtNode(container); + } + }} + /> + ) : null} + + +
    +
    +
    +
    +
    +
    +
    + ); +}; diff --git a/x-pack/examples/lens_embeddable_inline_editing_example/public/embeddable.tsx b/x-pack/examples/lens_embeddable_inline_editing_example/public/embeddable.tsx new file mode 100644 index 0000000000000..717a8b2d20f8e --- /dev/null +++ b/x-pack/examples/lens_embeddable_inline_editing_example/public/embeddable.tsx @@ -0,0 +1,161 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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, useRef, useEffect, useCallback, useMemo } from 'react'; +import type { + TypedLensByValueInput, + InlineEditLensEmbeddableContext, +} from '@kbn/lens-plugin/public'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import { css } from '@emotion/react'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiSpacer, + EuiPanel, + EuiButtonIcon, + EuiTitle, +} from '@elastic/eui'; +import { LensConfigBuilder } from '@kbn/lens-embeddable-utils/config_builder/config_builder'; +import type { StartDependencies } from './plugin'; +import { getConfigOptions } from './utils'; + +export const LensChart = (props: { + configBuilder: LensConfigBuilder; + plugins: StartDependencies; + defaultDataView: DataView; + isESQL?: boolean; + container?: HTMLElement | null; + isActive?: boolean; + setPanelActive?: (panelNum: number | null) => void; + setIsinlineEditingVisible?: (flag: boolean) => void; + onApplyCb?: () => void; + onCancelCb?: () => void; +}) => { + const ref = useRef(false); + const [embeddableInput, setEmbeddableInput] = useState( + undefined + ); + const [lensLoadEvent, setLensLoadEvent] = useState< + InlineEditLensEmbeddableContext['lensEvent'] | null + >(null); + + const { config, options } = useMemo(() => { + return getConfigOptions(props.defaultDataView, props.isESQL); + }, [props.defaultDataView, props.isESQL]); + + useEffect(() => { + ref.current = true; + props.configBuilder.build(config, options).then((input) => { + if (ref.current) { + setEmbeddableInput(input as TypedLensByValueInput); + } + }); + return () => { + ref.current = false; + }; + }, [config, props.configBuilder, options, props.plugins.dataViews]); + + const onLoad = useCallback( + ( + isLoading: boolean, + adapters: InlineEditLensEmbeddableContext['lensEvent']['adapters'] | undefined, + lensEmbeddableOutput$?: InlineEditLensEmbeddableContext['lensEvent']['embeddableOutput$'] + ) => { + const adapterTables = adapters?.tables?.tables; + if (adapterTables && !isLoading) { + setLensLoadEvent({ + adapters, + embeddableOutput$: lensEmbeddableOutput$, + }); + } + }, + [] + ); + + const triggerOptions: InlineEditLensEmbeddableContext | undefined = useMemo(() => { + if (lensLoadEvent && embeddableInput?.attributes) { + return { + attributes: embeddableInput?.attributes, + lensEvent: lensLoadEvent, + onUpdate: (newAttributes: TypedLensByValueInput['attributes']) => { + if (embeddableInput) { + const newInput = { + ...embeddableInput, + attributes: newAttributes, + }; + setEmbeddableInput(newInput); + } + }, + onApply: () => { + 'optional onApply callback!'; + props.onApplyCb?.(); + props.setPanelActive?.(null); + }, + onCancel: () => { + 'optional onCancel callback!'; + props.onCancelCb?.(); + props.setPanelActive?.(null); + }, + container: props.container, + }; + } + }, [embeddableInput, lensLoadEvent, props]); + const LensComponent = props.plugins.lens.EmbeddableComponent; + + return ( + + +

    + {props.isESQL + ? '#1: Inline editing of an ES|QL chart.' + : '#2: Inline editing of a dataview chart.'} +

    +
    + + + + { + props?.setPanelActive?.(props.isESQL ? 1 : 2); + if (triggerOptions) { + props.plugins.uiActions + .getTrigger('IN_APP_EMBEDDABLE_EDIT_TRIGGER') + .exec(triggerOptions); + props?.setIsinlineEditingVisible?.(true); + } + }} + /> + + + {embeddableInput && ( + + )} + + +
    + ); +}; diff --git a/x-pack/examples/lens_embeddable_inline_editing_example/public/flyout.tsx b/x-pack/examples/lens_embeddable_inline_editing_example/public/flyout.tsx new file mode 100644 index 0000000000000..f916abbad18f2 --- /dev/null +++ b/x-pack/examples/lens_embeddable_inline_editing_example/public/flyout.tsx @@ -0,0 +1,124 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React, { useEffect, useRef, useState } from 'react'; +import { css } from '@emotion/react'; +import { EuiFlexGroup, EuiFlexItem, EuiFlyout, EuiPanel } from '@elastic/eui'; +import { euiThemeVars } from '@kbn/ui-theme'; + +interface MainContent { + content: JSX.Element; +} + +interface InlineEditingContent { + visible?: boolean; +} + +interface Props { + mainContent: MainContent; + inlineEditingContent: InlineEditingContent; + setContainer?: (element: HTMLDivElement | null) => void; + onClose: () => void; +} + +export function MultiPaneFlyout({ + mainContent, + inlineEditingContent, + onClose, + setContainer, +}: Props) { + const [flexBasisCol1, setFlexBasisCol1] = useState('100%'); + const [flexBasisCol2, setFlexBasisCol2] = useState(!inlineEditingContent?.visible ? '0%' : '30%'); + + useEffect(() => { + setFlexBasisCol1(inlineEditingContent?.visible ? '70%' : '100%'); + setFlexBasisCol2(inlineEditingContent?.visible ? '30%' : '0%'); + }, [inlineEditingContent]); + + return ( + + + + + + + + {inlineEditingContent ? ( + + ) : null} + + + + ); +} + +function InlineEditingContent({ + visible, + setContainer, +}: { + visible?: boolean; + setContainer?: (element: HTMLDivElement | null) => void; +}) { + const containerRef = useRef(null); + const style = css` + padding: 0; + position: relative; + } +`; + + useEffect(() => { + if (containerRef?.current && setContainer) { + setContainer(containerRef.current); + } + }, [setContainer]); + return ( + + + + ); +} + +function MainContent({ content }: { content: JSX.Element }) { + const style = css` + padding-top: 12px; + padding-botton: 12px; + } + `; + + return ( + + {content} + + ); +} diff --git a/x-pack/examples/lens_embeddable_inline_editing_example/public/image.png b/x-pack/examples/lens_embeddable_inline_editing_example/public/image.png new file mode 100644 index 0000000000000000000000000000000000000000..a7b47acc8cac51aaaa6002f6a5e98c27c5008118 GIT binary patch literal 155151 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
    v8HHddGv>YX14 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 literal 0 HcmV?d00001 diff --git a/x-pack/examples/lens_embeddable_inline_editing_example/public/index.ts b/x-pack/examples/lens_embeddable_inline_editing_example/public/index.ts new file mode 100644 index 0000000000000..4a3eb7100ffba --- /dev/null +++ b/x-pack/examples/lens_embeddable_inline_editing_example/public/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. + */ + +import { LensInlineEditingPlugin } from './plugin'; + +export const plugin = () => new LensInlineEditingPlugin(); diff --git a/x-pack/examples/lens_embeddable_inline_editing_example/public/mount.tsx b/x-pack/examples/lens_embeddable_inline_editing_example/public/mount.tsx new file mode 100644 index 0000000000000..411538e2df2ca --- /dev/null +++ b/x-pack/examples/lens_embeddable_inline_editing_example/public/mount.tsx @@ -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 * as React from 'react'; +import { render, unmountComponentAtNode } from 'react-dom'; +import { EuiCallOut } from '@elastic/eui'; + +import type { CoreSetup, AppMountParameters } from '@kbn/core/public'; +import type { StartDependencies } from './plugin'; + +export const mount = + (coreSetup: CoreSetup) => + async ({ element }: AppMountParameters) => { + const [core, plugins] = await coreSetup.getStartServices(); + const { App } = await import('./app'); + + const dataView = await plugins.dataViews.getDefaultDataView(); + const stateHelpers = await plugins.lens.stateHelperApi(); + + const i18nCore = core.i18n; + + const reactElement = ( + + {dataView ? ( + + ) : ( + +

    You need at least one dataview for this demo to work

    +
    + )} +
    + ); + + render(reactElement, element); + return () => unmountComponentAtNode(element); + }; diff --git a/x-pack/examples/lens_embeddable_inline_editing_example/public/plugin.ts b/x-pack/examples/lens_embeddable_inline_editing_example/public/plugin.ts new file mode 100644 index 0000000000000..5d970e2667ff7 --- /dev/null +++ b/x-pack/examples/lens_embeddable_inline_editing_example/public/plugin.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 { Plugin, CoreSetup, AppNavLinkStatus } from '@kbn/core/public'; +import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; +import type { UiActionsStart } from '@kbn/ui-actions-plugin/public'; +import { LensPublicStart } from '@kbn/lens-plugin/public'; +import { DeveloperExamplesSetup } from '@kbn/developer-examples-plugin/public'; +import { mount } from './mount'; +import image from './image.png'; + +export interface SetupDependencies { + developerExamples: DeveloperExamplesSetup; +} + +export interface StartDependencies { + dataViews: DataViewsPublicPluginStart; + lens: LensPublicStart; + uiActions: UiActionsStart; +} + +export class LensInlineEditingPlugin + implements Plugin +{ + public setup(core: CoreSetup, { developerExamples }: SetupDependencies) { + core.application.register({ + id: 'lens_embeddable_inline_editing_example', + title: 'Lens inline editing embeddable', + navLinkStatus: AppNavLinkStatus.hidden, + mount: mount(core), + }); + + developerExamples.register({ + appId: 'lens_embeddable_inline_editing_example', + title: 'Lens inline editing embeddable', + description: 'Inline editing of a Lens embeddable examples', + links: [ + { + label: 'README', + href: 'https://github.com/elastic/kibana/tree/main/x-pack/examples/lens_embeddable_inline_editing_example', + iconType: 'logoGithub', + size: 's', + target: '_blank', + }, + ], + image, + }); + } + + public start() {} + + public stop() {} +} diff --git a/x-pack/examples/lens_embeddable_inline_editing_example/public/utils.ts b/x-pack/examples/lens_embeddable_inline_editing_example/public/utils.ts new file mode 100644 index 0000000000000..f0069a543d368 --- /dev/null +++ b/x-pack/examples/lens_embeddable_inline_editing_example/public/utils.ts @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { DataView } from '@kbn/data-views-plugin/public'; +import type { + LensConfig, + LensConfigOptions, +} from '@kbn/lens-embeddable-utils/config_builder/types'; + +export const getConfigOptions = (dataView: DataView, isESQL?: boolean) => { + const index = dataView.getIndexPattern(); + const timeFieldName = dataView.getTimeField()?.name; + if (isESQL) { + return { + config: { + chartType: 'metric', + title: 'metric chart', + dataset: { + esql: `from ${index} | stats count=count()`, + }, + value: 'count', + } as LensConfig, + options: { + embeddable: true, + timeRange: { + from: 'now-30d', + to: 'now', + type: 'relative', + }, + query: { + esql: `from ${index} | stats count=count()`, + }, + } as unknown as LensConfigOptions, + }; + } else { + return { + config: { + chartType: 'heatmap', + title: 'heatmap chart', + dataset: { + index, + timeFieldName, + }, + xAxis: { + type: 'dateHistogram', + field: timeFieldName, + }, + value: 'count()', + } as LensConfig, + options: { + embeddable: true, + timeRange: { + from: 'now-30d', + to: 'now', + type: 'relative', + }, + } as LensConfigOptions, + }; + } +}; diff --git a/x-pack/examples/lens_embeddable_inline_editing_example/tsconfig.json b/x-pack/examples/lens_embeddable_inline_editing_example/tsconfig.json new file mode 100644 index 0000000000000..e4727650106bd --- /dev/null +++ b/x-pack/examples/lens_embeddable_inline_editing_example/tsconfig.json @@ -0,0 +1,26 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "index.ts", + "public/**/*.ts", + "public/**/*.tsx", + "server/**/*.ts", + "../../../typings/**/*" + ], + "exclude": [ + "target/**/*", + ], + "kbn_references": [ + "@kbn/core", + "@kbn/lens-plugin", + "@kbn/developer-examples-plugin", + "@kbn/data-views-plugin", + "@kbn/ui-actions-plugin", + "@kbn/kibana-react-plugin", + "@kbn/lens-embeddable-utils", + "@kbn/ui-theme", + ] +} diff --git a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.test.ts b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.test.ts index bb36de888b407..75a5c42c76444 100644 --- a/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.test.ts +++ b/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.test.ts @@ -118,7 +118,7 @@ describe('Lens Attribute', () => { ReportTypes.KPI ); - expect(lnsAttrKpi.getJSON().state.datasourceStates.formBased.layers.layer0.columns).toEqual({ + expect(lnsAttrKpi.getJSON().state.datasourceStates?.formBased?.layers.layer0.columns).toEqual({ 'x-axis-column-layer0': { dataType: 'date', isBucketed: true, diff --git a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/get_edit_lens_configuration.tsx b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/get_edit_lens_configuration.tsx index acef8feb6da50..0944326cf43c2 100644 --- a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/get_edit_lens_configuration.tsx +++ b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/get_edit_lens_configuration.tsx @@ -117,6 +117,8 @@ export async function getEditLensConfiguration( isNewPanel, deletePanel, hidesSuggestions, + onApplyCb, + onCancelCb, }: EditLensConfigurationProps) => { if (!lensServices || !datasourceMap || !visualizationMap) { return ; @@ -212,6 +214,8 @@ export async function getEditLensConfiguration( setCurrentAttributes, isNewPanel, deletePanel, + onApplyCb, + onCancelCb, }; return getWrapper( diff --git a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/lens_configuration_flyout.tsx b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/lens_configuration_flyout.tsx index e3df96840c883..1aae97977d714 100644 --- a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/lens_configuration_flyout.tsx +++ b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/lens_configuration_flyout.tsx @@ -65,6 +65,8 @@ export function LensEditConfigurationFlyout({ isNewPanel, deletePanel, hidesSuggestions, + onApplyCb, + onCancelCb, }: EditConfigPanelProps) { const euiTheme = useEuiTheme(); const previousAttributes = useRef(attributes); @@ -173,6 +175,7 @@ export function LensEditConfigurationFlyout({ if (isNewPanel && deletePanel) { deletePanel(); } + onCancelCb?.(); closeFlyout?.(); }, [ attributesChanged, @@ -186,6 +189,7 @@ export function LensEditConfigurationFlyout({ updatePanelState, updateSuggestion, updateByRefInput, + onCancelCb, ]); const onApply = useCallback(() => { @@ -220,10 +224,12 @@ export function LensEditConfigurationFlyout({ saveByRef?.(attrs); updateByRefInput?.(savedObjectId); } + onApplyCb?.(); closeFlyout?.(); }, [ savedObjectId, closeFlyout, + onApplyCb, datasourceStates, visualization.state, activeVisualization, diff --git a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/types.ts b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/types.ts index 6b5a2bb501275..bb6b1157f43b9 100644 --- a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/types.ts +++ b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/types.ts @@ -82,6 +82,10 @@ export interface EditConfigPanelProps { deletePanel?: () => void; /** If set to true the layout changes to accordion and the text based query (i.e. ES|QL) can be edited */ hidesSuggestions?: boolean; + /** Optional callback for apply flyout button */ + onApplyCb?: () => void; + /** Optional callback for cancel flyout button */ + onCancelCb?: () => void; } export interface LayerConfigurationProps { diff --git a/x-pack/plugins/lens/public/async_services.ts b/x-pack/plugins/lens/public/async_services.ts index 85724c871cda6..28becae5e6071 100644 --- a/x-pack/plugins/lens/public/async_services.ts +++ b/x-pack/plugins/lens/public/async_services.ts @@ -52,3 +52,4 @@ export * from './chart_info_api'; export * from './trigger_actions/open_in_discover_helpers'; export * from './trigger_actions/open_lens_config/edit_action_helpers'; export * from './trigger_actions/open_lens_config/create_action_helpers'; +export * from './trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_action_helpers'; diff --git a/x-pack/plugins/lens/public/embeddable/embeddable_component.tsx b/x-pack/plugins/lens/public/embeddable/embeddable_component.tsx index 986f2f65c693e..bdbcfb49617bb 100644 --- a/x-pack/plugins/lens/public/embeddable/embeddable_component.tsx +++ b/x-pack/plugins/lens/public/embeddable/embeddable_component.tsx @@ -46,7 +46,7 @@ type LensAttributes = Omit< visualizationType: TVisType; state: Omit & { datasourceStates: { - formBased: FormBasedPersistedState; + formBased?: FormBasedPersistedState; textBased?: TextBasedPersistedState; }; visualization: TVisState; diff --git a/x-pack/plugins/lens/public/index.ts b/x-pack/plugins/lens/public/index.ts index c611952f44f0a..a9f8e0eba3dc4 100644 --- a/x-pack/plugins/lens/public/index.ts +++ b/x-pack/plugins/lens/public/index.ts @@ -106,6 +106,8 @@ export type { ReferenceLineLayerConfig, } from '@kbn/expression-xy-plugin/common'; +export type { InlineEditLensEmbeddableContext } from './trigger_actions/open_lens_config/in_app_embeddable_edit/types'; + export type { LensEmbeddableInput, LensSavedObjectAttributes, diff --git a/x-pack/plugins/lens/public/plugin.ts b/x-pack/plugins/lens/public/plugin.ts index 872e1a566ab20..61ffb1d0686d0 100644 --- a/x-pack/plugins/lens/public/plugin.ts +++ b/x-pack/plugins/lens/public/plugin.ts @@ -107,6 +107,11 @@ import { getLensAliasConfig } from './vis_type_alias'; import { createOpenInDiscoverAction } from './trigger_actions/open_in_discover_action'; import { ConfigureInLensPanelAction } from './trigger_actions/open_lens_config/edit_action'; import { CreateESQLPanelAction } from './trigger_actions/open_lens_config/create_action'; +import { + inAppEmbeddableEditTrigger, + IN_APP_EMBEDDABLE_EDIT_TRIGGER, +} from './trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_trigger'; +import { EditLensEmbeddableAction } from './trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_action'; import { visualizeFieldAction } from './trigger_actions/visualize_field_actions'; import { visualizeTSVBAction } from './trigger_actions/visualize_tsvb_actions'; import { visualizeAggBasedVisAction } from './trigger_actions/visualize_agg_based_vis_actions'; @@ -575,6 +580,10 @@ export class LensPlugin { if (startDependencies.uiActions.hasAction(ACTION_VISUALIZE_FIELD)) { startDependencies.uiActions.unregisterAction(ACTION_VISUALIZE_FIELD); } + + // this trigger enables external consumers to use the inline editing flyout + startDependencies.uiActions.registerTrigger(inAppEmbeddableEditTrigger); + startDependencies.uiActions.addTriggerAction( VISUALIZE_FIELD_TRIGGER, visualizeFieldAction(core.application) @@ -600,8 +609,17 @@ export class LensPlugin { core.overlays, core.theme ); + // dashboard edit panel action startDependencies.uiActions.addTriggerAction('CONTEXT_MENU_TRIGGER', editInLensAction); + // Allows the Lens embeddable to easily open the inapp editing flyout + const editLensEmbeddableAction = new EditLensEmbeddableAction(startDependencies, core); + // embeddable edit panel action + startDependencies.uiActions.addTriggerAction( + IN_APP_EMBEDDABLE_EDIT_TRIGGER, + editLensEmbeddableAction + ); + // Displays the add ESQL panel in the dashboard add Panel menu const createESQLPanelAction = new CreateESQLPanelAction(startDependencies, core); startDependencies.uiActions.addTriggerAction('ADD_PANEL_TRIGGER', createESQLPanelAction); diff --git a/x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_action.test.tsx b/x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_action.test.tsx new file mode 100644 index 0000000000000..a6c7a8bcf6bc0 --- /dev/null +++ b/x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_action.test.tsx @@ -0,0 +1,97 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { CoreStart } from '@kbn/core/public'; +import { coreMock } from '@kbn/core/public/mocks'; +import type { LensPluginStartDependencies } from '../../../plugin'; +import { createMockStartDependencies } from '../../../editor_frame_service/mocks'; +import type { TypedLensByValueInput } from '../../../embeddable/embeddable_component'; +import { EditLensEmbeddableAction } from './in_app_embeddable_edit_action'; + +describe('inapp editing of Lens embeddable', () => { + const core = coreMock.createStart(); + const mockStartDependencies = + createMockStartDependencies() as unknown as LensPluginStartDependencies; + describe('compatibility check', () => { + const attributes = { + title: 'An extremely cool default document!', + expression: 'definitely a valid expression', + visualizationType: 'testVis', + state: { + query: { esql: 'from test' }, + filters: [{ query: { match_phrase: { src: 'test' } }, meta: { index: 'index-pattern-0' } }], + datasourceStates: { + testDatasource: 'datasource', + }, + visualization: {}, + }, + references: [{ type: 'index-pattern', id: '1', name: 'index-pattern-0' }], + } as unknown as TypedLensByValueInput['attributes']; + it('is incompatible for ESQL charts and if ui setting for ES|QL is off', async () => { + const inAppEditAction = new EditLensEmbeddableAction(mockStartDependencies, core); + const context = { + attributes, + lensEvent: { + adapters: {}, + embeddableOutput$: undefined, + }, + onUpdate: jest.fn(), + }; + const isCompatible = await inAppEditAction.isCompatible(context); + + expect(isCompatible).toBeFalsy(); + }); + + it('is compatible for ESQL charts and if ui setting for ES|QL is on', async () => { + const updatedCore = { + ...core, + uiSettings: { + ...core.uiSettings, + get: (setting: string) => { + return setting === 'discover:enableESQL'; + }, + }, + } as CoreStart; + const inAppEditAction = new EditLensEmbeddableAction(mockStartDependencies, updatedCore); + const context = { + attributes, + lensEvent: { + adapters: {}, + embeddableOutput$: undefined, + }, + onUpdate: jest.fn(), + }; + const isCompatible = await inAppEditAction.isCompatible(context); + + expect(isCompatible).toBeTruthy(); + }); + + it('is compatible for dataview charts', async () => { + const inAppEditAction = new EditLensEmbeddableAction(mockStartDependencies, core); + const newAttributes = { + ...attributes, + state: { + ...attributes.state, + query: { + language: 'kuery', + query: '', + }, + }, + }; + const context = { + attributes: newAttributes, + lensEvent: { + adapters: {}, + embeddableOutput$: undefined, + }, + onUpdate: jest.fn(), + }; + const isCompatible = await inAppEditAction.isCompatible(context); + + expect(isCompatible).toBeTruthy(); + }); + }); +}); diff --git a/x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_action.tsx b/x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_action.tsx new file mode 100644 index 0000000000000..c132b5e88c6c4 --- /dev/null +++ b/x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_action.tsx @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { i18n } from '@kbn/i18n'; +import type { CoreStart } from '@kbn/core/public'; +import { Action } from '@kbn/ui-actions-plugin/public'; +import type { LensPluginStartDependencies } from '../../../plugin'; +import type { InlineEditLensEmbeddableContext } from './types'; + +const ACTION_EDIT_LENS_EMBEDDABLE = 'ACTION_EDIT_LENS_EMBEDDABLE'; + +export const getAsyncHelpers = async () => await import('../../../async_services'); + +export class EditLensEmbeddableAction implements Action { + public type = ACTION_EDIT_LENS_EMBEDDABLE; + public id = ACTION_EDIT_LENS_EMBEDDABLE; + public order = 50; + + constructor( + protected readonly startDependencies: LensPluginStartDependencies, + protected readonly core: CoreStart + ) {} + + public getDisplayName(): string { + return i18n.translate('xpack.lens.app.editLensEmbeddableLabel', { + defaultMessage: 'Edit visualization', + }); + } + + public getIconType() { + return 'pencil'; + } + + public async isCompatible({ attributes }: InlineEditLensEmbeddableContext) { + const { isEmbeddableEditActionCompatible } = await getAsyncHelpers(); + return isEmbeddableEditActionCompatible(this.core, attributes); + } + + public async execute({ + attributes, + lensEvent, + container, + onUpdate, + onApply, + onCancel, + }: InlineEditLensEmbeddableContext) { + const { executeEditEmbeddableAction } = await getAsyncHelpers(); + if (attributes) { + executeEditEmbeddableAction({ + deps: this.startDependencies, + core: this.core, + attributes, + lensEvent, + container, + onUpdate, + onApply, + onCancel, + }); + } + } +} diff --git a/x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_action_helpers.tsx b/x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_action_helpers.tsx new file mode 100644 index 0000000000000..584aa7aaf132a --- /dev/null +++ b/x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_action_helpers.tsx @@ -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 React from 'react'; +import ReactDOM from 'react-dom'; +import type { CoreStart } from '@kbn/core/public'; +import { isOfAggregateQueryType } from '@kbn/es-query'; +import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { IncompatibleActionError } from '@kbn/ui-actions-plugin/public'; +import type { LensPluginStartDependencies } from '../../../plugin'; +import type { TypedLensByValueInput } from '../../../embeddable/embeddable_component'; +import { extractReferencesFromState } from '../../../utils'; +import type { LensChartLoadEvent } from './types'; + +export function isEmbeddableEditActionCompatible( + core: CoreStart, + attributes: TypedLensByValueInput['attributes'] +) { + // for ES|QL is compatible only when advanced setting is enabled + const query = attributes.state.query; + return isOfAggregateQueryType(query) ? core.uiSettings.get('discover:enableESQL') : true; +} + +export async function executeEditEmbeddableAction({ + deps, + core, + attributes, + lensEvent, + container, + onUpdate, + onApply, + onCancel, +}: { + deps: LensPluginStartDependencies; + core: CoreStart; + attributes: TypedLensByValueInput['attributes']; + lensEvent: LensChartLoadEvent; + container?: HTMLElement | null; + onUpdate: (newAttributes: TypedLensByValueInput['attributes']) => void; + onApply?: () => void; + onCancel?: () => void; +}) { + const isCompatibleAction = isEmbeddableEditActionCompatible(core, attributes); + if (!isCompatibleAction) { + throw new IncompatibleActionError(); + } + + const { getEditLensConfiguration, getVisualizationMap, getDatasourceMap } = await import( + '../../../async_services' + ); + const visualizationMap = getVisualizationMap(); + const datasourceMap = getDatasourceMap(); + const query = attributes.state.query; + const activeDatasourceId = isOfAggregateQueryType(query) ? 'textBased' : 'formBased'; + + const onUpdatePanelState = ( + datasourceState: unknown, + visualizationState: unknown, + visualizationType?: string + ) => { + if (attributes.state) { + const datasourceStates = { + ...attributes.state.datasourceStates, + [activeDatasourceId]: datasourceState, + }; + + const references = extractReferencesFromState({ + activeDatasources: Object.keys(datasourceStates).reduce( + (acc, datasourceId) => ({ + ...acc, + [datasourceId]: datasourceMap[datasourceId], + }), + {} + ), + datasourceStates: Object.fromEntries( + Object.entries(datasourceStates).map(([id, state]) => [id, { isLoading: false, state }]) + ), + visualizationState, + activeVisualization: visualizationType ? visualizationMap[visualizationType] : undefined, + }); + + const attrs = { + ...attributes, + state: { + ...attributes.state, + visualization: visualizationState, + datasourceStates, + }, + references, + visualizationType: visualizationType ?? attributes.visualizationType, + } as TypedLensByValueInput['attributes']; + + onUpdate(attrs); + } + }; + + const onUpdateSuggestion = (attrs: TypedLensByValueInput['attributes']) => { + const newAttributes = { + ...attributes, + ...attrs, + }; + onUpdate(newAttributes); + }; + + const Component = await getEditLensConfiguration(core, deps, visualizationMap, datasourceMap); + const ConfigPanel = ( + + ); + + // in case an element is given render the component in the container, + // otherwise a flyout will open + if (container) { + ReactDOM.render(ConfigPanel, container); + } else { + const handle = core.overlays.openFlyout( + toMountPoint( + React.cloneElement(ConfigPanel, { + closeFlyout: () => { + handle.close(); + }, + }), + { + theme$: core.theme.theme$, + } + ), + { + className: 'lnsConfigPanel__overlay', + size: 's', + 'data-test-subj': 'customizeLens', + type: 'push', + paddingSize: 'm', + hideCloseButton: true, + onClose: (overlayRef) => { + overlayRef.close(); + }, + outsideClickCloses: true, + } + ); + } +} diff --git a/x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_trigger.ts b/x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_trigger.ts new file mode 100644 index 0000000000000..41bd24e6a62ea --- /dev/null +++ b/x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_trigger.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { i18n } from '@kbn/i18n'; +import type { Trigger } from '@kbn/ui-actions-plugin/public'; + +export const IN_APP_EMBEDDABLE_EDIT_TRIGGER = 'IN_APP_EMBEDDABLE_EDIT_TRIGGER'; +export const inAppEmbeddableEditTrigger: Trigger = { + id: IN_APP_EMBEDDABLE_EDIT_TRIGGER, + title: i18n.translate('xpack.lens.inAppEditTrigger.title', { + defaultMessage: 'In-app embeddable edit', + }), + description: i18n.translate('xpack.lens.inAppEditTrigger.description', { + defaultMessage: 'Triggers an in app flyout on the current embeddable', + }), +}; diff --git a/x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/types.ts b/x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/types.ts new file mode 100644 index 0000000000000..e1eadf7a32660 --- /dev/null +++ b/x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/types.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { DefaultInspectorAdapters } from '@kbn/expressions-plugin/common'; +import type { EmbeddableOutput } from '@kbn/embeddable-plugin/public'; +import type { Observable } from 'rxjs'; +import type { TypedLensByValueInput } from '../../../embeddable/embeddable_component'; + +export interface LensChartLoadEvent { + /** + * Inspector adapters for the request + */ + adapters: Partial; + /** + * Observable of the lens embeddable output + */ + embeddableOutput$?: Observable; +} + +export interface InlineEditLensEmbeddableContext { + // attributes of the Lens embeddable + attributes: TypedLensByValueInput['attributes']; + // chart event, can be fetched from the onLoad embeddable callback + lensEvent: LensChartLoadEvent; + // callback which runs every time something changes in the dimension panel + onUpdate: (newAttributes: TypedLensByValueInput['attributes']) => void; + // optional onApply callback + onApply?: () => void; + // optional onCancel callback + onCancel?: () => void; + // custom container element, use in case you need to render outside a flyout + // in that case, the styling is responsibility of the consumer + container?: HTMLElement | null; +} diff --git a/x-pack/plugins/lens/readme.md b/x-pack/plugins/lens/readme.md index 764ff5f2df04f..fc2fd5df4c85a 100644 --- a/x-pack/plugins/lens/readme.md +++ b/x-pack/plugins/lens/readme.md @@ -271,3 +271,11 @@ Lens has a lot of UI elements – to make it easier to refer to them in issues o * **Suggestion panel** Panel to the bottom showing previews for suggestions on how to change the current chart ![Layout](./layout.png "Layout") + + +# Inline Editing of a Lens Embeddable + +If you have a Lens embeddable in your application and you want to allow inline editing you can do it with 3 ways: +- If you use a portable dashboard, the functionality is built in and you don't need to do anything +- If you don't have a portable dashboard then you can use UI actions to retrieve the inline editing component. For more information check out the example in `x-pack/examples/lens_embeddable_inline_editing_example`. +- The component is also exported from Lens start contract. Check the `EditLensConfigPanelApi`. This is advised to be used only when the 2 above cases can't be used. \ No newline at end of file diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.test.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.test.tsx index 1946c12aacdcf..b0ee36eff0747 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.test.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.test.tsx @@ -102,7 +102,9 @@ describe('RiskSummary', () => { const lensAttributes: LensAttributes = mockVisualizationEmbeddable.mock.calls[0][0].lensAttributes; - const datasourceLayers = Object.values(lensAttributes.state.datasourceStates.formBased.layers); + const datasourceLayers = Object.values( + lensAttributes.state.datasourceStates.formBased?.layers ?? {} + ); const firstColumn = Object.values(datasourceLayers[0].columns)[0]; expect(lensAttributes.state.query.query).toEqual('host.name: test'); @@ -126,7 +128,9 @@ describe('RiskSummary', () => { const lensAttributes: LensAttributes = mockVisualizationEmbeddable.mock.calls[0][0].lensAttributes; - const datasourceLayers = Object.values(lensAttributes.state.datasourceStates.formBased.layers); + const datasourceLayers = Object.values( + lensAttributes.state.datasourceStates.formBased?.layers ?? {} + ); const firstColumn = Object.values(datasourceLayers[0].columns)[0]; expect(lensAttributes.state.query.query).toEqual('user.name: test'); diff --git a/yarn.lock b/yarn.lock index 28057e7c10d95..9a5867e2361bc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4986,6 +4986,9 @@ version "0.0.0" uid "" +"@kbn/lens-inline-editing-example-plugin@link:x-pack/examples/lens_embeddable_inline_editing_example": + + "@kbn/lens-plugin@link:x-pack/plugins/lens": version "0.0.0" uid "" From 35cccc29631e199979e6887eaf469444b285f637 Mon Sep 17 00:00:00 2001 From: Maxim Palenov Date: Fri, 5 Jan 2024 14:26:30 +0100 Subject: [PATCH 139/323] [Security Solution] OpenAPI linter (#171851) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Resolves: https://github.com/elastic/security-team/issues/8099** ## Summary This PR adds an a command to lint OpenAPI specs defined in Security Solution plugin. ## Details We have a number of OpenAPI specs defined in Security Solution plugin. While `@kbn/openapi-generator` package processes the specs and makes sure the specs are parsable and processable we don't have proper specs linter set up. This PR introduces OpenAPI specs linting by leveraging [Redocly CLI](https://github.com/Redocly/redocly-cli)'s `lint` command with a custom configuration placed in `@kbn/openapi-generator` package . Configuration includes reasonable best practices by using [built-in Redocly rules](https://redocly.com/docs/cli/rules/built-in-rules/). The lint utility fulfil the following requirements - Validates yaml files against OpenAPI specification. It supports `3.0` and `3.1`. - Validates `x-modify` property to have only `partial`, `required` or `requiredOptional` values. - Checks for reasonable best practices and displays a warning message when it's not met. Reasonable best practices are based on the [recommended ruleset](https://redocly.com/docs/cli/rules/recommended/#recommended-ruleset). The lint utility has been incorporated into the existing OpenAPI generator, and linting is performed before generation. ### Tool selection [Swagger CLI](https://github.com/APIDevTools/swagger-cli) is a well known tool to validate OpenAPI specs. On November 15th 2023 the repo has been archived with a message in README > ⚠️ Swagger CLI has been deprecated, due to the maintenance burnden of trying to keep up with expectations of a huge userbase with little to no pull requests or support. [Redocly CLI](https://redocly.com/redocly-cli/) covers all of the same functionality, and has more advanced linting with custom rules, and we highly recommend using that instead. They have conveniently provided a [migration guide](https://redocly.com/docs/cli/guides/migrate-from-swagger-cli/) for existing Swagger CLI users. Read the review of [Redocly CLI from APIs You Won't Hate](https://apisyouwonthate.com/blog/redocly-cli/). Taking it into account choice falls on **Redocly CLI**. ## How to test? Change directory to Security Solution plugin's root and run linting by using the following commands from Kibana root ```sh cd x-pack/plugins/security_solution yarn openapi:generate ``` --------- Co-authored-by: Georgii Gorbachev --- package.json | 1 + packages/kbn-openapi-generator/index.ts | 1 + .../redocly_linter/config.yaml | 27 + .../extra_linter_rules_plugin.js | 49 ++ packages/kbn-openapi-generator/src/cli.ts | 5 + .../src/openapi_generator.ts | 11 +- .../src/openapi_linter.ts | 47 ++ src/dev/license_checker/config.ts | 2 +- src/dev/yarn_deduplicate/index.ts | 2 +- .../osquery/scripts/openapi/generate.js | 2 + .../create_asset_criticality.schema.yaml | 3 +- .../delete_asset_criticality.schema.yaml | 3 +- .../get_asset_criticality.schema.yaml | 3 +- ...t_asset_criticality_privileges.schema.yaml | 3 +- .../get_asset_criticality_status.schema.yaml | 1 + x-pack/plugins/security_solution/package.json | 2 +- yarn.lock | 515 ++++++++++++++++-- 17 files changed, 620 insertions(+), 57 deletions(-) create mode 100644 packages/kbn-openapi-generator/redocly_linter/config.yaml create mode 100644 packages/kbn-openapi-generator/redocly_linter/extra_linter_rules_plugin.js create mode 100644 packages/kbn-openapi-generator/src/openapi_linter.ts diff --git a/package.json b/package.json index 0a4d9ebfcebdb..23e49b0d4cb35 100644 --- a/package.json +++ b/package.json @@ -1307,6 +1307,7 @@ "@octokit/rest": "^16.35.0", "@openpgp/web-stream-tools": "^0.0.10", "@parcel/watcher": "^2.1.0", + "@redocly/cli": "^1.6.0", "@storybook/addon-a11y": "^6.5.16", "@storybook/addon-actions": "^6.5.16", "@storybook/addon-controls": "^6.5.16", diff --git a/packages/kbn-openapi-generator/index.ts b/packages/kbn-openapi-generator/index.ts index eeaad5343dc9f..711ee4b6269d1 100644 --- a/packages/kbn-openapi-generator/index.ts +++ b/packages/kbn-openapi-generator/index.ts @@ -6,5 +6,6 @@ * Side Public License, v 1. */ +export * from './src/openapi_linter'; export * from './src/openapi_generator'; export * from './src/cli'; diff --git a/packages/kbn-openapi-generator/redocly_linter/config.yaml b/packages/kbn-openapi-generator/redocly_linter/config.yaml new file mode 100644 index 0000000000000..b423d9172b1c8 --- /dev/null +++ b/packages/kbn-openapi-generator/redocly_linter/config.yaml @@ -0,0 +1,27 @@ +# Recommended Redocly CLI ruleset https://redocly.com/docs/cli/rules/recommended/#recommended-ruleset +# Redocly CLI custom plugins https://redocly.com/docs/cli/custom-plugins/ +plugins: + - extra_linter_rules_plugin.js + +rules: + spec: error + spec-strict-refs: warn + no-path-trailing-slash: error + no-identical-paths: error + no-ambiguous-paths: warn + no-unresolved-refs: error + no-enum-type-mismatch: error + component-name-unique: error + path-declaration-must-exist: error + path-not-include-query: error + path-parameters-defined: warn + operation-description: warn + operation-2xx-response: error + operation-4xx-response: warn + operation-operationId: error + operation-operationId-unique: error + operation-summary: warn + operation-operationId-url-safe: error + operation-parameters-unique: error + boolean-parameter-prefixes: warn + extra-linter-rules-plugin/valid-x-modify: error diff --git a/packages/kbn-openapi-generator/redocly_linter/extra_linter_rules_plugin.js b/packages/kbn-openapi-generator/redocly_linter/extra_linter_rules_plugin.js new file mode 100644 index 0000000000000..caef408c366b2 --- /dev/null +++ b/packages/kbn-openapi-generator/redocly_linter/extra_linter_rules_plugin.js @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +const KNOWN_X_MODIFY_VALUES = ['partial', 'required', 'requiredOptional']; + +function ValidXModify() { + return { + any: { + leave(node, ctx) { + if (typeof node !== 'object' || !('x-modify' in node)) { + return; + } + + if (!KNOWN_X_MODIFY_VALUES.includes(node['x-modify'])) + ctx.report({ + message: `Only ${KNOWN_X_MODIFY_VALUES.join(', ')} can be used for x-modify`, + location: ctx.location.child('x-modify'), + }); + }, + }, + ref: { + leave(node, ctx) { + if (typeof node !== 'object' || !('x-modify' in node)) { + return; + } + + if (!KNOWN_X_MODIFY_VALUES.includes(node['x-modify'])) + ctx.report({ + message: `Only ${KNOWN_X_MODIFY_VALUES.join(', ')} can be used for x-modify`, + location: ctx.location.child('x-modify'), + }); + }, + }, + }; +} + +module.exports = { + id: 'extra-linter-rules-plugin', + rules: { + oas3: { + 'valid-x-modify': ValidXModify, + }, + }, +}; diff --git a/packages/kbn-openapi-generator/src/cli.ts b/packages/kbn-openapi-generator/src/cli.ts index 9eb91dd9bba94..6361c0a20de3b 100644 --- a/packages/kbn-openapi-generator/src/cli.ts +++ b/packages/kbn-openapi-generator/src/cli.ts @@ -31,6 +31,11 @@ export function runCli() { default: 'zod_operation_schema' as const, choices: AVAILABLE_TEMPLATES, }) + .option('skipLinting', { + describe: 'Whether linting should be skipped', + type: 'boolean', + default: false, + }) .showHelpOnFail(false), (argv) => { generate(argv).catch((err) => { diff --git a/packages/kbn-openapi-generator/src/openapi_generator.ts b/packages/kbn-openapi-generator/src/openapi_generator.ts index 539994a258126..60efd762dade7 100644 --- a/packages/kbn-openapi-generator/src/openapi_generator.ts +++ b/packages/kbn-openapi-generator/src/openapi_generator.ts @@ -17,6 +17,7 @@ import { fixEslint } from './lib/fix_eslint'; import { formatOutput } from './lib/format_output'; import { getGeneratedFilePath } from './lib/get_generated_file_path'; import { removeGenArtifacts } from './lib/remove_gen_artifacts'; +import { lint } from './openapi_linter'; import { getGenerationContext } from './parser/get_generation_context'; import type { OpenApiDocument } from './parser/openapi_types'; import { initTemplateService, TemplateName } from './template_service/template_service'; @@ -25,10 +26,18 @@ export interface GeneratorConfig { rootDir: string; sourceGlob: string; templateName: TemplateName; + skipLinting?: boolean; } export const generate = async (config: GeneratorConfig) => { - const { rootDir, sourceGlob, templateName } = config; + const { rootDir, sourceGlob, templateName, skipLinting } = config; + + if (!skipLinting) { + await lint({ + rootDir, + sourceGlob, + }); + } console.log(chalk.bold(`Generating API route schemas`)); console.log(chalk.bold(`Working directory: ${chalk.underline(rootDir)}`)); diff --git a/packages/kbn-openapi-generator/src/openapi_linter.ts b/packages/kbn-openapi-generator/src/openapi_linter.ts new file mode 100644 index 0000000000000..afd31a77bdee1 --- /dev/null +++ b/packages/kbn-openapi-generator/src/openapi_linter.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. + */ + +/* eslint-disable no-console */ + +import { resolve } from 'path'; +import globby from 'globby'; +import execa from 'execa'; +import chalk from 'chalk'; +import { REPO_ROOT } from '@kbn/repo-info'; + +export interface LinterConfig { + rootDir: string; + sourceGlob: string; +} + +export const lint = async (config: LinterConfig) => { + const { rootDir, sourceGlob } = config; + + const sourceFilesGlob = resolve(rootDir, sourceGlob); + const schemaPaths = await globby([sourceFilesGlob]); + + console.log(chalk.bold(`Linting API route schemas`)); + + try { + await execa( + './node_modules/.bin/redocly', + [ + 'lint', + '--config=packages/kbn-openapi-generator/redocly_linter/config.yaml', + ...schemaPaths, + ], + { + cwd: REPO_ROOT, + stderr: process.stderr, + stdout: process.stdout, + } + ); + } catch { + throw new Error('Linter failed'); + } +}; diff --git a/src/dev/license_checker/config.ts b/src/dev/license_checker/config.ts index 6ba5deb6408ac..db69bab07e1ea 100644 --- a/src/dev/license_checker/config.ts +++ b/src/dev/license_checker/config.ts @@ -73,7 +73,7 @@ export const LICENSE_ALLOWED = [ // The following list only applies to licenses that // we wanna allow in packages only used as dev dependencies -export const DEV_ONLY_LICENSE_ALLOWED = ['MPL-2.0']; +export const DEV_ONLY_LICENSE_ALLOWED = ['MPL-2.0', '(MPL-2.0 OR Apache-2.0)']; // there are some licenses which should not be globally allowed // but can be brought in on a per-package basis diff --git a/src/dev/yarn_deduplicate/index.ts b/src/dev/yarn_deduplicate/index.ts index 13c12ac5e91b7..1b1bade3b8b2c 100644 --- a/src/dev/yarn_deduplicate/index.ts +++ b/src/dev/yarn_deduplicate/index.ts @@ -16,7 +16,7 @@ const yarnLock = readFileSync(yarnLockFile, 'utf-8'); const output = fixDuplicates(yarnLock, { useMostCommon: false, excludeScopes: ['@types'], - excludePackages: ['axe-core', '@babel/types'], + excludePackages: ['axe-core', '@babel/types', 'csstype'], }); writeFileSync(yarnLockFile, output); diff --git a/x-pack/plugins/osquery/scripts/openapi/generate.js b/x-pack/plugins/osquery/scripts/openapi/generate.js index 018a965702c3e..35c099301e81c 100644 --- a/x-pack/plugins/osquery/scripts/openapi/generate.js +++ b/x-pack/plugins/osquery/scripts/openapi/generate.js @@ -17,4 +17,6 @@ generate({ rootDir: OSQUERY_ROOT, sourceGlob: './**/*.schema.yaml', templateName: 'zod_operation_schema', + // TODO: Fix lint errors + skipLinting: true, }); diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/create_asset_criticality.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/create_asset_criticality.schema.yaml index bb5e682155064..cc8c980809f9b 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/create_asset_criticality.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/create_asset_criticality.schema.yaml @@ -12,6 +12,7 @@ servers: paths: /internal/asset_criticality: post: + operationId: AssetCriticalityCreateRecord summary: Create Criticality Record requestBody: required: true @@ -27,4 +28,4 @@ paths: schema: $ref: './common.schema.yaml#/components/schemas/AssetCriticalityRecord' '400': - description: Invalid request \ No newline at end of file + description: Invalid request diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/delete_asset_criticality.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/delete_asset_criticality.schema.yaml index fbdb4feb19e52..cada6a62fcaac 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/delete_asset_criticality.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/delete_asset_criticality.schema.yaml @@ -12,6 +12,7 @@ servers: paths: /internal/asset_criticality: delete: + operationId: AssetCriticalityDeleteRecord summary: Delete Criticality Record parameters: - $ref: './common.schema.yaml#/components/parameters/id_value' @@ -20,4 +21,4 @@ paths: '200': description: Successful response '400': - description: Invalid request \ No newline at end of file + description: Invalid request diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality.schema.yaml index 1411f2a08734f..777666daccb2f 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality.schema.yaml @@ -12,6 +12,7 @@ servers: paths: /internal/asset_criticality: get: + operationId: AssetCriticalityGetRecord summary: Get Criticality Record parameters: - $ref: './common.schema.yaml#/components/parameters/id_value' @@ -26,4 +27,4 @@ paths: '400': description: Invalid request '404': - description: Criticality record not found \ No newline at end of file + description: Criticality record not found diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_privileges.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_privileges.schema.yaml index b877b90efca94..6f1734262c667 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_privileges.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_privileges.schema.yaml @@ -12,6 +12,7 @@ servers: paths: /internal/asset_criticality/privileges: get: + operationId: AssetCriticalityGetPrivileges summary: Get Asset Criticality Privileges responses: '200': @@ -26,4 +27,4 @@ paths: ".asset-criticality.asset-criticality-*": read: true write: false - has_all_required: false \ No newline at end of file + has_all_required: false diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.schema.yaml index a5a6b50354688..a62450cbcff4d 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.schema.yaml @@ -12,6 +12,7 @@ servers: paths: /internal/asset_criticality/status: get: + operationId: AssetCriticalityGetStatus summary: Get Asset Criticality Status responses: '200': diff --git a/x-pack/plugins/security_solution/package.json b/x-pack/plugins/security_solution/package.json index 5f0613c3e89b8..3d9effa5983bf 100644 --- a/x-pack/plugins/security_solution/package.json +++ b/x-pack/plugins/security_solution/package.json @@ -29,4 +29,4 @@ "openapi:generate:debug": "node --inspect-brk scripts/openapi/generate", "openapi:bundle": "node scripts/openapi/bundle" } -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock index 9a5867e2361bc..21b560fc24e86 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2010,6 +2010,13 @@ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== +"@emotion/is-prop-valid@1.2.1", "@emotion/is-prop-valid@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" + integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw== + dependencies: + "@emotion/memoize" "^0.8.1" + "@emotion/is-prop-valid@^0.8.8": version "0.8.8" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" @@ -2017,13 +2024,6 @@ dependencies: "@emotion/memoize" "0.7.4" -"@emotion/is-prop-valid@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" - integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw== - dependencies: - "@emotion/memoize" "^0.8.1" - "@emotion/jest@^11.11.0": version "11.11.0" resolved "https://registry.yarnpkg.com/@emotion/jest/-/jest-11.11.0.tgz#4d64b33052308739dcdd7396fd2bc902f7244f82" @@ -2123,6 +2123,11 @@ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== +"@emotion/unitless@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" + integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== + "@emotion/unitless@^0.8.1": version "0.8.1" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" @@ -2295,6 +2300,11 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.46.0.tgz#3f7802972e8b6fe3f88ed1aabc74ec596c456db6" integrity sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA== +"@exodus/schemasafe@^1.0.0-rc.2": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@exodus/schemasafe/-/schemasafe-1.3.0.tgz#731656abe21e8e769a7f70a4d833e6312fe59b7f" + integrity sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw== + "@fastify/busboy@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.0.0.tgz#f22824caff3ae506b18207bad4126dbc6ccdb6b8" @@ -7475,6 +7485,54 @@ unbzip2-stream "1.4.3" yargs "17.7.2" +"@redocly/ajv@^8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@redocly/ajv/-/ajv-8.11.0.tgz#2fad322888dc0113af026e08fceb3e71aae495ae" + integrity sha512-9GWx27t7xWhDIR02PA18nzBdLcKQRgc46xNQvjFkrYk4UOmvKhJ/dawwiX0cCOeetN5LcaaiqQbVOWYK62SGHw== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +"@redocly/cli@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@redocly/cli/-/cli-1.6.0.tgz#d3f6c8d6822eead487c2cb814d131e17d05c961f" + integrity sha512-0naVFJGR2tVcpMIHSFRr2HAoyy70qMqDAP6kXcnOdkGkwLRJ8s/5n1STwsym/yZwNkhrt2M0cKT6KAMlTUeCeg== + dependencies: + "@redocly/openapi-core" "1.6.0" + chokidar "^3.5.1" + colorette "^1.2.0" + core-js "^3.32.1" + get-port-please "^3.0.1" + glob "^7.1.6" + handlebars "^4.7.6" + mobx "^6.0.4" + node-fetch "^2.6.1" + react "^17.0.0 || ^18.2.0" + react-dom "^17.0.0 || ^18.2.0" + redoc "~2.1.3" + semver "^7.5.2" + simple-websocket "^9.0.0" + styled-components "^6.0.7" + yargs "17.0.1" + +"@redocly/openapi-core@1.6.0", "@redocly/openapi-core@^1.0.0-rc.2": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-1.6.0.tgz#09aee5e21a9cbad08f3230ced16685d043a9b197" + integrity sha512-oao6Aey4peLKfagzWGb6N7OBI6CoDWEP4ka/XjrUNZw+UoKVVg3hVBXW4Vr3CJ2O8j6wEa2i+Lbb92VQQsoxwg== + dependencies: + "@redocly/ajv" "^8.11.0" + "@types/node" "^14.11.8" + colorette "^1.2.0" + js-levenshtein "^1.1.6" + js-yaml "^4.1.0" + lodash.isequal "^4.5.0" + minimatch "^5.0.1" + node-fetch "^2.6.1" + pluralize "^8.0.0" + yaml-ast-parser "0.0.43" + "@redux-saga/core@^1.1.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@redux-saga/core/-/core-1.1.3.tgz#3085097b57a4ea8db5528d58673f20ce0950f6a4" @@ -9564,6 +9622,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/json-schema@^7.0.7": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@types/json-stable-stringify@^1.0.32": version "1.0.32" resolved "https://registry.yarnpkg.com/@types/json-stable-stringify/-/json-stable-stringify-1.0.32.tgz#121f6917c4389db3923640b2e68de5fa64dda88e" @@ -9797,7 +9860,7 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@20.10.5", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@>=18.0.0", "@types/node@^10.1.0", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^18.11.18", "@types/node@^18.17.5": +"@types/node@*", "@types/node@20.10.5", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@>=18.0.0", "@types/node@^10.1.0", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.11.8", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^18.11.18", "@types/node@^18.17.5": version "20.10.5" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.5.tgz#47ad460b514096b7ed63a1dae26fad0914ed3ab2" integrity sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw== @@ -10234,6 +10297,11 @@ "@types/react-native" "*" csstype "^2.2.0" +"@types/stylis@4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@types/stylis/-/stylis-4.2.0.tgz#199a3f473f0c3a6f6e4e1b17cdbc967f274bdc6b" + integrity sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw== + "@types/superagent@*": version "3.8.4" resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-3.8.4.tgz#24a5973c7d1a9c024b4bbda742a79267c33fb86a" @@ -13039,7 +13107,7 @@ cheerio@^1.0.0-rc.12, cheerio@^1.0.0-rc.3: parse5 "^7.0.0" parse5-htmlparser2-tree-adapter "^7.0.0" -chokidar@3.5.3, chokidar@^2.1.2, chokidar@^2.1.8, chokidar@^3.4.0, chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.5.3: +chokidar@3.5.3, chokidar@^2.1.2, chokidar@^2.1.8, chokidar@^3.4.0, chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.5.1, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -13141,10 +13209,10 @@ classnames@2.2.6: resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== -classnames@^2.2.6, classnames@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" - integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== +classnames@^2.2.6, classnames@^2.3.1, classnames@^2.3.2: + version "2.5.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" + integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== clean-css@^4.2.3: version "4.2.3" @@ -13320,10 +13388,10 @@ cloneable-readable@^1.0.0: process-nextick-args "^2.0.0" readable-stream "^2.3.5" -clsx@^1.0.4, clsx@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" - integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== +clsx@^1.0.4, clsx@^1.1.0, clsx@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== co@^4.6.0: version "4.6.0" @@ -13418,10 +13486,10 @@ colord@^2.9.1, colord@^2.9.2: resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== -colorette@^1.2.1, colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== +colorette@^1.2.0, colorette@^1.2.1, colorette@^1.2.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== colorette@^2.0.10, colorette@^2.0.14: version "2.0.19" @@ -13764,10 +13832,10 @@ core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.9: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== -core-js@^3.0.4, core-js@^3.34.0, core-js@^3.6.5, core-js@^3.8.2, core-js@^3.8.3: - version "3.34.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.34.0.tgz#5705e6ad5982678612e96987d05b27c6c7c274a5" - integrity sha512-aDdvlDder8QmY91H88GzNi9EtQi2TjvQhpCX6B1v/dAZHU1AuLgHvRh54RiOerpEhEW46Tkf+vgAViB/CWC0ag== +core-js@^3.0.4, core-js@^3.32.1, core-js@^3.34.0, core-js@^3.6.5, core-js@^3.8.2, core-js@^3.8.3: + version "3.35.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.35.0.tgz#58e651688484f83c34196ca13f099574ee53d6b4" + integrity sha512-ntakECeqg81KqMueeGJ79Q5ZgQNR+6eaE8sxGCx62zMbAIj65q+uYvatToew3m6eAGdU4gNZwpZ34NMe4GYswg== core-util-is@1.0.2, core-util-is@^1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -14025,10 +14093,10 @@ css-select@^5.1.0: domutils "^3.0.1" nth-check "^2.0.1" -css-to-react-native@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" - integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== +css-to-react-native@3.2.0, css-to-react-native@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" + integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== dependencies: camelize "^1.0.0" css-color-keywords "^1.0.0" @@ -14145,6 +14213,11 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" +csstype@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + csstype@^2.2.0, csstype@^2.5.5, csstype@^2.5.7, csstype@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.7.tgz#20b0024c20b6718f4eda3853a1f5a1cce7f5e4a5" @@ -14685,6 +14758,11 @@ decimal.js@^10.4.1: resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.1.tgz#be75eeac4a2281aace80c1a8753587c27ef053e7" integrity sha512-F29o+vci4DodHYT9UrR5IEbfBw9pE5eSapIJdTqXK5+6hq+t8VRxwQyKlW2i+KDKFkkJQRvFyI/QXD83h8LyQw== +decko@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decko/-/decko-1.2.0.tgz#fd43c735e967b8013306884a56fbe665996b6817" + integrity sha512-m8FnyHXV1QX+S1cl+KPFDIl6NMkxtKsy6+U/aYyjrOqWMuwAwYWu7ePqrsUHtDR5Y8Yk2pi/KIDSgF+vT4cPOQ== + decode-uri-component@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" @@ -15299,6 +15377,11 @@ domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" +dompurify@^2.2.8: + version "2.4.7" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.7.tgz#277adeb40a2c84be2d42a8bcd45f582bfa4d0cfc" + integrity sha512-kxxKlPEDa6Nc5WJi+qRgPbOAbgTpSULL+vI3NUXsZMlkJxTqYI9wg5ZTay2sFrdZRWHPWNi+EdAhcJf81WtoMQ== + domutils@^2.0.0, domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" @@ -15931,6 +16014,11 @@ es6-map@^0.1.5: es6-symbol "~3.1.1" event-emitter "~0.3.5" +es6-promise@^3.2.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + integrity sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg== + es6-promise@^4.2.8: version "4.2.8" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" @@ -16445,7 +16533,7 @@ eventemitter2@6.4.7: resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.7.tgz#a7f6c4d7abf28a14c1ef3442f21cb306a054271d" integrity sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg== -eventemitter3@^4.0.0, eventemitter3@^4.0.4: +eventemitter3@^4.0.0, eventemitter3@^4.0.4, eventemitter3@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== @@ -17184,6 +17272,11 @@ for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +foreach@^2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.6.tgz#87bcc8a1a0e74000ff2bf9802110708cfb02eb6e" + integrity sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg== + foreground-child@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" @@ -17602,6 +17695,11 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== +get-port-please@^3.0.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/get-port-please/-/get-port-please-3.1.1.tgz#2556623cddb4801d823c0a6a15eec038abb483be" + integrity sha512-3UBAyM3u4ZBVYDsxOQfJDxEa6XTbpBDrOjp4mf7ExFRt5BKs/QywQQiJsh2B+hxcZLSapWqCRvElUe8DnKcFHA== + get-port@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" @@ -18097,7 +18195,7 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== -handlebars@4.7.8, handlebars@^4.7.7: +handlebars@4.7.8, handlebars@^4.7.6, handlebars@^4.7.7: version "4.7.8" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== @@ -18697,6 +18795,11 @@ http-signature@~1.3.6: jsprim "^2.0.2" sshpk "^1.14.1" +http2-client@^1.2.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/http2-client/-/http2-client-1.3.5.tgz#20c9dc909e3cc98284dd20af2432c524086df181" + integrity sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA== + http2-wrapper@^1.0.0-beta.5.2: version "1.0.0-beta.5.2" resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz#8b923deb90144aea65cf834b016a340fc98556f3" @@ -20616,6 +20719,13 @@ json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-pointer@0.6.2, json-pointer@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/json-pointer/-/json-pointer-0.6.2.tgz#f97bd7550be5e9ea901f8c9264c9d436a22a93cd" + integrity sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw== + dependencies: + foreach "^2.0.4" + json-schema-to-ts@^2.9.1: version "2.9.1" resolved "https://registry.yarnpkg.com/json-schema-to-ts/-/json-schema-to-ts-2.9.1.tgz#0e055b787587477abdb7e880c874efad3dba7779" @@ -21587,6 +21697,11 @@ lru-queue@0.1: dependencies: es5-ext "~0.10.2" +lunr@^2.3.9: + version "2.3.9" + resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" + integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== + luxon@^1.25.0: version "1.28.1" resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.28.1.tgz#528cdf3624a54506d710290a2341aa8e6e6c61b0" @@ -21732,6 +21847,11 @@ marge@^1.0.1: dependencies: yargs "^3.15.0" +mark.js@^8.11.1: + version "8.11.1" + resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" + integrity sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ== + markdown-escapes@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.1.tgz#1994df2d3af4811de59a6714934c2b2292734518" @@ -21767,6 +21887,11 @@ markdown-table@^2.0.0: dependencies: repeat-string "^1.0.0" +marked@^4.0.15: + version "4.3.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" + integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A== + material-colors@^1.2.1: version "1.2.5" resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.5.tgz#5292593e6754cb1bcc2b98030e4e0d6a3afc9ea1" @@ -22456,6 +22581,23 @@ ml-tree-similarity@^1.0.0: binary-search "^1.3.5" num-sort "^2.0.0" +mobx-react-lite@^3.4.0: + version "3.4.3" + resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-3.4.3.tgz#3a4c22c30bfaa8b1b2aa48d12b2ba811c0947ab7" + integrity sha512-NkJREyFTSUXR772Qaai51BnE1voWx56LOL80xG7qkZr6vo8vEaLF3sz1JNUVh+rxmUzxYaqOhfuxTfqUh0FXUg== + +mobx-react@^7.2.0: + version "7.6.0" + resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-7.6.0.tgz#ebf0456728a9bd2e5c24fdcf9b36e285a222a7d6" + integrity sha512-+HQUNuh7AoQ9ZnU6c4rvbiVVl+wEkb9WqYsVDzGLng+Dqj1XntHu79PvEWKtSMoMj67vFp/ZPXcElosuJO8ckA== + dependencies: + mobx-react-lite "^3.4.0" + +mobx@^6.0.4: + version "6.12.0" + resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.12.0.tgz#72b2685ca5af031aaa49e77a4d76ed67fcbf9135" + integrity sha512-Mn6CN6meXEnMa0a5u6a5+RKrqRedHBhZGd15AWLk9O6uFY4KYHzImdt8JI8WODo1bjTSRnwXhJox+FCUZhCKCQ== + mocha-junit-reporter@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/mocha-junit-reporter/-/mocha-junit-reporter-2.0.2.tgz#d521689b651dc52f52044739f8ffb368be415731" @@ -22937,6 +23079,13 @@ node-emoji@^1.10.0: dependencies: lodash.toarray "^4.4.0" +node-fetch-h2@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz#c6188325f9bd3d834020bf0f2d6dc17ced2241ac" + integrity sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg== + dependencies: + http2-client "^1.2.5" + node-fetch@^1.0.1, node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" @@ -23052,6 +23201,13 @@ node-preload@^0.2.1: dependencies: process-on-spawn "^1.0.0" +node-readfiles@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/node-readfiles/-/node-readfiles-0.2.0.tgz#dbbd4af12134e2e635c245ef93ffcf6f60673a5d" + integrity sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA== + dependencies: + es6-promise "^3.2.1" + node-releases@^2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" @@ -23240,6 +23396,52 @@ nyc@15.1.0, nyc@^15.1.0: test-exclude "^6.0.0" yargs "^15.0.2" +oas-kit-common@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/oas-kit-common/-/oas-kit-common-1.0.8.tgz#6d8cacf6e9097967a4c7ea8bcbcbd77018e1f535" + integrity sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ== + dependencies: + fast-safe-stringify "^2.0.7" + +oas-linter@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/oas-linter/-/oas-linter-3.2.2.tgz#ab6a33736313490659035ca6802dc4b35d48aa1e" + integrity sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ== + dependencies: + "@exodus/schemasafe" "^1.0.0-rc.2" + should "^13.2.1" + yaml "^1.10.0" + +oas-resolver@^2.5.6: + version "2.5.6" + resolved "https://registry.yarnpkg.com/oas-resolver/-/oas-resolver-2.5.6.tgz#10430569cb7daca56115c915e611ebc5515c561b" + integrity sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ== + dependencies: + node-fetch-h2 "^2.3.0" + oas-kit-common "^1.0.8" + reftools "^1.1.9" + yaml "^1.10.0" + yargs "^17.0.1" + +oas-schema-walker@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz#74c3cd47b70ff8e0b19adada14455b5d3ac38a22" + integrity sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ== + +oas-validator@^5.0.8: + version "5.0.8" + resolved "https://registry.yarnpkg.com/oas-validator/-/oas-validator-5.0.8.tgz#387e90df7cafa2d3ffc83b5fb976052b87e73c28" + integrity sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw== + dependencies: + call-me-maybe "^1.0.1" + oas-kit-common "^1.0.8" + oas-linter "^3.2.2" + oas-resolver "^2.5.6" + oas-schema-walker "^1.1.5" + reftools "^1.1.9" + should "^13.2.1" + yaml "^1.10.0" + object-assign@4.X, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -23477,6 +23679,14 @@ openai@^4.17.0, openai@^4.24.1: node-fetch "^2.6.7" web-streams-polyfill "^3.2.1" +openapi-sampler@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/openapi-sampler/-/openapi-sampler-1.4.0.tgz#c133cad6250481f2ec7e48b16eb70062adb514c0" + integrity sha512-3FKJQCHAMG9T7RsRy9u5Ft4ERPq1QQmn77C8T3OSofYL9uur59AqychvQ0YQKijrqRwIkAbzkh+nQnAE3gjMVA== + dependencies: + "@types/json-schema" "^7.0.7" + json-pointer "0.6.2" + openapi-types@^10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/openapi-types/-/openapi-types-10.0.0.tgz#0debbf663b2feed0322030b5b7c9080804076934" @@ -24086,6 +24296,11 @@ pend@~1.2.0: resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= +perfect-scrollbar@^1.5.5: + version "1.5.5" + resolved "https://registry.yarnpkg.com/perfect-scrollbar/-/perfect-scrollbar-1.5.5.tgz#41a211a2fb52a7191eff301432134ea47052b27f" + integrity sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g== + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -24335,7 +24550,7 @@ polished@^3.7.2: dependencies: "@babel/runtime" "^7.12.5" -polished@^4.2.2: +polished@^4.1.3, polished@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/polished/-/polished-4.2.2.tgz#2529bb7c3198945373c52e34618c8fe7b1aa84d1" integrity sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ== @@ -24650,15 +24865,7 @@ postcss-values-parser@^6.0.2: 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" - integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== - dependencies: - picocolors "^0.2.1" - source-map "^0.6.1" - -postcss@^8.4.14, postcss@^8.4.23, postcss@^8.4.31: +postcss@8.4.31, postcss@^8.4.14, postcss@^8.4.23, postcss@^8.4.31: version "8.4.31" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== @@ -24667,6 +24874,14 @@ postcss@^8.4.14, postcss@^8.4.23, postcss@^8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" +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" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== + dependencies: + picocolors "^0.2.1" + source-map "^0.6.1" + potpack@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/potpack/-/potpack-2.0.0.tgz#61f4dd2dc4b3d5e996e3698c0ec9426d0e169104" @@ -24810,7 +25025,12 @@ printj@~1.1.0: resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== -prismjs@^1.22.0, prismjs@~1.27.0: +prismjs@^1.22.0, prismjs@^1.27.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" + integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== + +prismjs@~1.27.0: version "1.27.0" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== @@ -24918,7 +25138,7 @@ prompts@^2.0.1, prompts@^2.4.0, prompts@~2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@15.x, prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.0, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@15.x, prop-types@^15.0.0, prop-types@^15.5.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.0, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -25184,6 +25404,11 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + queue-tick@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/queue-tick/-/queue-tick-1.0.1.tgz#f6f07ac82c1fd60f82e098b417a80e52f1f4c142" @@ -25421,6 +25646,14 @@ react-docgen@^5.0.0: node-dir "^0.1.10" strip-indent "^3.0.0" +"react-dom@^17.0.0 || ^18.2.0": + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + react-dom@^17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" @@ -25824,6 +26057,14 @@ react-syntax-highlighter@^15.3.1: prismjs "^1.22.0" refractor "^3.2.0" +react-tabs@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/react-tabs/-/react-tabs-4.3.0.tgz#9f4db0fd209ba4ab2c1e78993ff964435f84af62" + integrity sha512-2GfoG+f41kiBIIyd3gF+/GRCCYtamC8/2zlAcD8cqQmqI9Q+YVz7fJLHMmU9pXDVYYHpJeCgUSBJju85vu5q8Q== + dependencies: + clsx "^1.1.0" + prop-types "^15.5.0" + "react-test-renderer@^16.8.0 || ^17.0.0", react-test-renderer@^17.0.0, react-test-renderer@^17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-17.0.2.tgz#4cd4ae5ef1ad5670fc0ef776e8cc7e1231d9866c" @@ -25903,6 +26144,13 @@ react-window@^1.8.9: "@babel/runtime" "^7.0.0" memoize-one ">=3.1.1 <6" +"react@^17.0.0 || ^18.2.0": + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + react@^17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" @@ -26105,6 +26353,33 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +redoc@~2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/redoc/-/redoc-2.1.3.tgz#612c9fed744993d5fc99cbf39fe9056bd1034fa5" + integrity sha512-d7F9qLLxaiFW4GC03VkwlX9wuRIpx9aiIIf3o6mzMnqPfhxrn2IRKGndrkJeVdItgCfmg9jXZiFEowm60f1meQ== + dependencies: + "@redocly/openapi-core" "^1.0.0-rc.2" + classnames "^2.3.1" + decko "^1.2.0" + dompurify "^2.2.8" + eventemitter3 "^4.0.7" + json-pointer "^0.6.2" + lunr "^2.3.9" + mark.js "^8.11.1" + marked "^4.0.15" + mobx-react "^7.2.0" + openapi-sampler "^1.3.1" + path-browserify "^1.0.1" + perfect-scrollbar "^1.5.5" + polished "^4.1.3" + prismjs "^1.27.0" + prop-types "^15.7.2" + react-tabs "^4.3.0" + slugify "~1.4.7" + stickyfill "^1.1.1" + swagger2openapi "^7.0.6" + url-template "^2.0.8" + reduce-reducers@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/reduce-reducers/-/reduce-reducers-0.4.3.tgz#8e052618801cd8fc2714b4915adaa8937eb6d66c" @@ -26179,6 +26454,11 @@ refractor@^3.2.0, refractor@^3.6.0: parse-entities "^2.0.0" prismjs "~1.27.0" +reftools@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/reftools/-/reftools-1.1.9.tgz#e16e19f662ccd4648605312c06d34e5da3a2b77e" + integrity sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w== + regedit@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/regedit/-/regedit-5.0.0.tgz#7ec444ef027cc704e104fae00586f84752291116" @@ -27039,6 +27319,13 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + dependencies: + loose-envify "^1.1.0" + schema-utils@2.7.0, schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.5.0, schema-utils@^2.6.5, schema-utils@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" @@ -27323,7 +27610,7 @@ shallow-equal@^3.1.0: resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-3.1.0.tgz#e7a54bac629c7f248eff6c2f5b63122ba4320bec" integrity sha512-pfVOw8QZIXpMbhBWvzBISicvToTiM5WBF1EeAUZDDSb5Dt29yl4AYbyywbJFSEsRUMr7gJaxqCdr4L3tQf9wVg== -shallowequal@^1.1.0: +shallowequal@1.1.0, shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== @@ -27389,6 +27676,50 @@ shelljs@^0.8.5: interpret "^1.0.0" rechoir "^0.6.2" +should-equal@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-2.0.0.tgz#6072cf83047360867e68e98b09d71143d04ee0c3" + integrity sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA== + dependencies: + should-type "^1.4.0" + +should-format@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/should-format/-/should-format-3.0.3.tgz#9bfc8f74fa39205c53d38c34d717303e277124f1" + integrity sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q== + dependencies: + should-type "^1.3.0" + should-type-adaptors "^1.0.1" + +should-type-adaptors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz#401e7f33b5533033944d5cd8bf2b65027792e27a" + integrity sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA== + dependencies: + should-type "^1.3.0" + should-util "^1.0.0" + +should-type@^1.3.0, should-type@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3" + integrity sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ== + +should-util@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/should-util/-/should-util-1.0.1.tgz#fb0d71338f532a3a149213639e2d32cbea8bcb28" + integrity sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g== + +should@^13.2.1: + version "13.2.3" + resolved "https://registry.yarnpkg.com/should/-/should-13.2.3.tgz#96d8e5acf3e97b49d89b51feaa5ae8d07ef58f10" + integrity sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ== + dependencies: + should-equal "^2.0.0" + should-format "^3.0.3" + should-type "^1.4.0" + should-type-adaptors "^1.0.1" + should-util "^1.0.0" + 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" @@ -27453,6 +27784,17 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" +simple-websocket@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/simple-websocket/-/simple-websocket-9.1.0.tgz#91cbb39eafefbe7e66979da6c639109352786a7f" + integrity sha512-8MJPnjRN6A8UCp1I+H/dSFyjwJhp6wta4hsVRhjf8w9qBHRzxYt14RaOcjvQnhD1N4yKOddEjflwMnQM4VtXjQ== + dependencies: + debug "^4.3.1" + queue-microtask "^1.2.2" + randombytes "^2.1.0" + readable-stream "^3.6.0" + ws "^7.4.2" + sinon@^7.4.2: version "7.5.0" resolved "https://registry.yarnpkg.com/sinon/-/sinon-7.5.0.tgz#e9488ea466070ea908fd44a3d6478fd4923c67ec" @@ -27518,6 +27860,11 @@ slide@~1.1.3: resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= +slugify@~1.4.7: + version "1.4.7" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.7.tgz#e42359d505afd84a44513280868e31202a79a628" + integrity sha512-tf+h5W1IrjNm/9rKKj0JU2MDMruiopx0jjVA5zCdBtcGjfp0+c5rHw/zADLC3IeKlGHtVbHtpfzvYA0OYT+HKg== + smart-buffer@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" @@ -28060,6 +28407,11 @@ stats-lite@^2.2.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= +stickyfill@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stickyfill/-/stickyfill-1.1.1.tgz#39413fee9d025c74a7e59ceecb23784cc0f17f02" + integrity sha512-GCp7vHAfpao+Qh/3Flh9DXEJ/qSi0KJwJw6zYlZOtRYXWUIpMM6mC2rIep/dK8RQqwW0KxGJIllmjPIBOGN8AA== + store2@^2.12.0: version "2.12.0" resolved "https://registry.yarnpkg.com/store2/-/store2-2.12.0.tgz#e1f1b7e1a59b6083b2596a8d067f6ee88fd4d3cf" @@ -28398,6 +28750,21 @@ styled-components@^5.1.0: shallowequal "^1.1.0" supports-color "^5.5.0" +styled-components@^6.0.7: + version "6.1.6" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-6.1.6.tgz#c75c4f994136545b3bcc11608db5363710b78c0e" + integrity sha512-DgTLULSC29xpabJ24bbn1+hulU6vvGFQf4RPwBOJrm8WJFnN42yXpo5voBt3jDSJBa5tBd1L6PqswJjQ0wRKdg== + dependencies: + "@emotion/is-prop-valid" "1.2.1" + "@emotion/unitless" "0.8.0" + "@types/stylis" "4.2.0" + css-to-react-native "3.2.0" + csstype "3.1.2" + postcss "8.4.31" + shallowequal "1.1.0" + stylis "4.3.1" + tslib "2.5.0" + stylehacks@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.0.tgz#a40066490ca0caca04e96c6b02153ddc39913520" @@ -28473,6 +28840,11 @@ stylis@4.2.0: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== +stylis@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.1.tgz#ed8a9ebf9f76fe1e12d462f5cc3c4c980b23a7eb" + integrity sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ== + stylus-lookup@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/stylus-lookup/-/stylus-lookup-5.0.1.tgz#3c4d116c3b1e8e1a8169c0d9cd20e608595560f4" @@ -28592,6 +28964,23 @@ svgo@^2.7.0, svgo@^2.8.0: picocolors "^1.0.0" stable "^0.1.8" +swagger2openapi@^7.0.6: + version "7.0.8" + resolved "https://registry.yarnpkg.com/swagger2openapi/-/swagger2openapi-7.0.8.tgz#12c88d5de776cb1cbba758994930f40ad0afac59" + integrity sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g== + dependencies: + call-me-maybe "^1.0.1" + node-fetch "^2.6.1" + node-fetch-h2 "^2.3.0" + node-readfiles "^0.2.0" + oas-kit-common "^1.0.8" + oas-resolver "^2.5.6" + oas-schema-walker "^1.1.5" + oas-validator "^5.0.8" + reftools "^1.1.9" + yaml "^1.10.0" + yargs "^17.0.1" + symbol-observable@^1.0.4, symbol-observable@^1.1.0, symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -29272,6 +29661,11 @@ tslib@2.3.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== +tslib@2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + tslib@^1.10.0, tslib@^1.11.1, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -29892,6 +30286,11 @@ url-parse@^1.5.10, url-parse@^1.5.3: querystringify "^2.1.1" requires-port "^1.0.0" +url-template@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" + integrity sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw== + url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -31197,10 +31596,10 @@ ws@8.14.2, ws@>=8.14.2, ws@^8.2.3, ws@^8.4.2, ws@^8.9.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== -ws@^7.3.1: - version "7.5.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" - integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== +ws@^7.3.1, ws@^7.4.2: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== x-default-browser@^0.4.0: version "0.4.0" @@ -31320,6 +31719,11 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yaml-ast-parser@0.0.43: + version "0.0.43" + resolved "https://registry.yarnpkg.com/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz#e8a23e6fb4c38076ab92995c5dca33f3d3d7c9bb" + integrity sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A== + yaml-language-server-parser@^0.1.0: version "0.1.3" resolved "https://registry.yarnpkg.com/yaml-language-server-parser/-/yaml-language-server-parser-0.1.3.tgz#f0e9082068291c7c330eefa1f3c9f1b4c3c54183" @@ -31376,7 +31780,20 @@ yargs@16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@17.7.2, yargs@^17.2.1, yargs@^17.3.1, yargs@^17.4.0, yargs@^17.7.1, yargs@^17.7.2: +yargs@17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.0.1.tgz#6a1ced4ed5ee0b388010ba9fd67af83b9362e0bb" + integrity sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@17.7.2, yargs@^17.0.1, yargs@^17.2.1, yargs@^17.3.1, yargs@^17.4.0, yargs@^17.7.1, yargs@^17.7.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== From d458b5382fdbf29e7f35a35fe2792aa86f4d6c4c Mon Sep 17 00:00:00 2001 From: "Eyo O. Eyo" <7893459+eokoneyo@users.noreply.github.com> Date: Fri, 5 Jan 2024 14:35:09 +0100 Subject: [PATCH 140/323] Remove legacy kibana react code editor (#171047) ## Summary This PR removes the legacy kibana react code-editor, alongside replacing all import declarations of this legacy component to the one offered by shared-ux, i.e import declaration source of `'@kbn/kibana-react/public'` is switched to `@kbn/code-editor`. Also in this PR an helper for writing jest tests has been included through the package `@kbn/code-editor-mock`, this would facilitate mocking the editor, especially given that the code editor leverages couple of APIs that are aren't included by default in jsdom, among them, `matchMedia`, `ResizeObserver`. The provided mock is sufficient for most use cases and can be setup in any package within kibana as a [`node_module` mock](https://jestjs.io/docs/manual-mocks#mocking-node-modules) without having to repeatedly manually mock the editor within individual test files. An example for how this might be done can be found here https://github.com/elastic/kibana/pull/171047/commits/ec5ba253688e952c6e601fb6e07de860e2a25c3a ### Checklist - [x] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .github/CODEOWNERS | 3 +- .../public/editor/expression_editor.tsx | 2 +- examples/expressions_explorer/tsconfig.json | 1 + package.json | 3 +- .../components/field_input/code_editor.tsx | 5 +- .../components/field_input/tsconfig.json | 2 +- packages/kbn-monaco/index.ts | 10 +- packages/kbn-monaco/src/monaco_imports.ts | 14 +++ packages/kbn-monaco/src/typings.d.ts | 12 +++ .../src/text_based_languages_editor.tsx | 3 +- packages/kbn-text-based-editor/tsconfig.json | 3 +- packages/kbn-ui-shared-deps-src/BUILD.bazel | 1 + .../kbn-ui-shared-deps-src/src/definitions.js | 1 + packages/kbn-ui-shared-deps-src/src/entry.js | 1 + .../src/utils/get_render_cell_value.test.tsx | 3 +- .../shared-ux/code_editor/impl/BUILD.bazel | 37 +++++++ .../code_editor/{ => impl}/README.mdx | 0 .../__snapshots__/code_editor.test.tsx.snap | 34 ++++++- .../{ => impl}/code_editor.stories.tsx | 0 .../{ => impl}/code_editor.test.tsx | 20 +++- .../code_editor/{ => impl}/code_editor.tsx | 0 .../code_editor/{ => impl}/editor.styles.ts | 0 packages/shared-ux/code_editor/impl/index.tsx | 83 ++++++++++++++++ .../code_editor/{ => impl}/jest.config.js | 2 +- .../code_editor/{ => impl}/kibana.jsonc | 0 .../{ => impl}/languages/constants.ts | 0 .../{ => impl}/languages/css/constants.ts | 0 .../{ => impl}/languages/css/index.ts | 0 .../{ => impl}/languages/css/language.ts | 5 +- .../{ => impl}/languages/grok/constants.ts | 0 .../{ => impl}/languages/grok/index.ts | 0 .../languages/grok/language.test.ts | 0 .../{ => impl}/languages/grok/language.ts | 0 .../languages/handlebars/constants.ts | 0 .../{ => impl}/languages/handlebars/index.ts | 0 .../languages/handlebars/language.ts | 0 .../{ => impl}/languages/hjson/constants.ts | 0 .../{ => impl}/languages/hjson/index.ts | 0 .../{ => impl}/languages/hjson/language.ts | 0 .../code_editor/{ => impl}/languages/index.ts | 0 .../languages/markdown/constants.ts | 0 .../{ => impl}/languages/markdown/index.ts | 0 .../languages/markdown}/language.ts | 5 +- .../{ => impl}/languages/yaml/constants.ts | 0 .../{ => impl}/languages/yaml/index.ts | 0 .../languages/yaml}/language.ts | 5 +- .../code_editor/{ => impl}/mocks/storybook.ts | 0 .../code_editor/{ => impl}/package.json | 0 .../{ => impl}/placeholder_widget.ts | 0 .../{ => impl}/register_languages.ts | 0 .../code_editor/{ => impl}/remeasure_fonts.ts | 0 .../code_editor/{ => impl}/tsconfig.json | 5 +- .../shared-ux/code_editor/mocks/README.md | 23 +++++ .../code_editor/mocks/code_editor_mock.tsx | 28 ++++++ .../code_editor/{ => mocks}/index.ts | 2 +- .../code_editor/mocks/jest_helper.ts | 15 +-- .../shared-ux/code_editor/mocks/kibana.jsonc | 5 + .../monaco_mock/index.tsx} | 96 +++++++++++-------- .../shared-ux/code_editor/mocks/package.json | 6 ++ .../shared-ux/code_editor/mocks/tsconfig.json | 24 +++++ .../components/field/field.test.tsx | 1 + .../components/field/field_code_editor.tsx | 3 +- src/plugins/advanced_settings/tsconfig.json | 2 + .../components/actions/inspect_button.tsx | 7 +- src/plugins/data/tsconfig.json | 3 +- .../data_view_editor/public/shared_imports.ts | 9 +- src/plugins/data_view_editor/tsconfig.json | 1 + .../client_integration/helpers/jest.mocks.tsx | 4 +- .../public/shared_imports.ts | 8 +- .../data_view_field_editor/tsconfig.json | 1 + .../field_editor/field_editor.test.tsx | 4 +- .../components/field_editor/field_editor.tsx | 3 +- .../data_view_management/tsconfig.json | 1 + src/plugins/es_ui_shared/kibana.jsonc | 3 +- .../components/json_editor/json_editor.tsx | 2 +- src/plugins/es_ui_shared/tsconfig.json | 2 +- .../components/details/req_code_viewer.tsx | 3 +- src/plugins/inspector/tsconfig.json | 3 +- .../kibana_react/public/code_editor/README.md | 12 --- .../public/code_editor/code_editor_field.tsx | 38 -------- .../kibana_react/public/code_editor/index.tsx | 66 ------------- src/plugins/kibana_react/public/index.ts | 12 --- .../url_template_editor.stories.tsx | 2 +- .../url_template_editor.tsx | 3 +- src/plugins/kibana_react/tsconfig.json | 1 - .../components/expression_input/constants.ts | 2 +- .../expression_input/expression_input.tsx | 2 +- src/plugins/presentation_util/tsconfig.json | 3 +- .../object_view/components/inspect.tsx | 2 +- .../saved_objects_management/tsconfig.json | 1 + src/plugins/unified_doc_viewer/kibana.jsonc | 2 +- .../doc_viewer_source/source.test.tsx | 1 + .../json_code_editor_common.tsx | 2 +- src/plugins/unified_doc_viewer/tsconfig.json | 4 +- .../filter_editor/filter_editor.test.tsx | 4 +- .../filter_editor/filter_editor.tsx | 2 +- src/plugins/unified_search/tsconfig.json | 3 +- .../public/components/controls/raw_json.tsx | 2 +- src/plugins/vis_default_editor/tsconfig.json | 1 + .../components/timelion_expression_input.tsx | 3 +- src/plugins/vis_types/timelion/tsconfig.json | 1 + .../application/components/markdown_editor.js | 3 +- .../components/panel_config/markdown.tsx | 2 +- .../vis_types/timeseries/tsconfig.json | 1 + .../public/components/vega_vis_editor.tsx | 2 +- .../vega_inspector/components/spec_viewer.tsx | 2 +- src/plugins/vis_types/vega/tsconfig.json | 1 + tsconfig.base.json | 6 +- typings/index.d.ts | 5 - .../testing_embedded_lens/public/app.tsx | 3 +- .../testing_embedded_lens/tsconfig.json | 1 + .../cytoscape_example_data.stories.tsx | 2 +- .../settings_form/form_row_setting.tsx | 2 +- .../shared/monaco_code_editor/index.tsx | 2 +- x-pack/plugins/apm/tsconfig.json | 5 +- .../uis/arguments/editor.tsx | 2 +- .../uis/datasources/essql.js | 2 +- .../canvas_plugin_src/uis/views/markdown.js | 2 +- x-pack/plugins/canvas/tsconfig.json | 1 + .../control_settings/index.test.tsx | 3 +- .../control_yaml_view/index.test.tsx | 2 +- .../components/control_yaml_view/index.tsx | 2 +- .../components/policy_settings/index.test.tsx | 1 + .../public/test/test_provider.tsx | 2 +- x-pack/plugins/cloud_defend/tsconfig.json | 3 +- .../findings_flyout/json_tab.tsx | 2 +- .../vulnerability_finding_flyout.test.tsx | 1 + .../vulnerability_json_tab.tsx | 2 +- .../cloud_security_posture/tsconfig.json | 4 +- .../components/json_editor/json_editor.tsx | 2 +- x-pack/plugins/data_visualizer/tsconfig.json | 1 + .../sync_rules/advanced_sync_rules.tsx | 2 +- .../pipelines/ml_inference/test_pipeline.tsx | 2 +- .../shared/api_key/metadata_form.tsx | 2 +- .../api_key/security_privileges_form.tsx | 2 +- .../plugins/enterprise_search/tsconfig.json | 1 + .../components/import_complete_view.tsx | 3 +- x-pack/plugins/file_upload/tsconfig.json | 1 + .../package_policy_input_var_field.tsx | 2 +- .../sections/debug/components/code_block.tsx | 2 +- .../edit_output_flyout/index.test.tsx | 2 +- .../yaml_code_editor_with_placeholder.tsx | 3 +- x-pack/plugins/fleet/tsconfig.json | 1 + .../custom_patterns_input.js | 2 +- .../components/event_input/event_input.js | 2 +- .../components/pattern_input/pattern_input.js | 3 +- x-pack/plugins/grokdebugger/tsconfig.json | 1 + .../create_enrich_policy.test.tsx | 4 +- .../home/enrich_policies.test.tsx | 4 +- .../index_details_page.test.tsx | 4 +- .../template_create.test.tsx | 4 +- .../template_edit.test.tsx | 4 +- .../component_template_create.test.tsx | 4 +- .../component_template_edit.test.tsx | 8 +- .../helpers/mappings_editor.helpers.tsx | 4 +- .../helpers/setup_environment.tsx | 4 +- .../load_mappings_provider.test.tsx | 4 +- .../components/wizard_steps/step_aliases.tsx | 2 +- .../components/wizard_steps/step_settings.tsx | 2 +- .../details_flyout/policy_details_flyout.tsx | 2 +- .../details_page_settings_content.tsx | 2 +- x-pack/plugins/index_management/tsconfig.json | 1 + .../ingest_pipelines_create.test.tsx | 4 +- .../ingest_pipelines_create_from_csv.test.tsx | 4 +- .../pipeline_processors_editor.helpers.tsx | 4 +- .../__jest__/processors/processor.helpers.tsx | 4 +- .../__jest__/test_pipeline.helpers.tsx | 4 +- .../load_from_json/modal_provider.test.tsx | 4 +- .../pipelines_preview.tsx | 2 +- .../ingest_pipelines/public/shared_imports.ts | 3 +- x-pack/plugins/ingest_pipelines/tsconfig.json | 1 + .../formula/editor/formula_editor.tsx | 3 +- x-pack/plugins/lens/tsconfig.json | 2 + .../pipeline_editor/pipeline_editor.js | 2 +- x-pack/plugins/logstash/tsconfig.json | 1 + .../components/tile_request_tab.tsx | 2 +- .../components/vector_tile_inspector.tsx | 2 +- x-pack/plugins/maps/tsconfig.json | 1 + .../components/processor_configuration.tsx | 2 +- .../ml_inference/components/test_pipeline.tsx | 2 +- .../shared/on_failure_configuration.tsx | 2 +- .../create_analytics_advanced_editor.tsx | 2 +- .../runtime_mappings_editor.tsx | 2 +- .../ml_job_editor/ml_job_editor.tsx | 2 +- .../pipeline_details.tsx | 2 +- x-pack/plugins/ml/tsconfig.json | 1 + .../chat/chat_prompt_editor_function.tsx | 2 +- .../observability_ai_assistant/tsconfig.json | 3 +- .../plugins/osquery/public/editor/index.tsx | 2 +- x-pack/plugins/osquery/tsconfig.json | 3 +- .../public/application/components/editor.tsx | 2 +- .../components/output_pane/context_tab.tsx | 2 +- .../components/output_pane/parameters_tab.tsx | 2 +- x-pack/plugins/painless_lab/tsconfig.json | 1 + .../public/__jest__/setup_environment.tsx | 21 +--- .../runtime_fields/public/shared_imports.ts | 8 +- x-pack/plugins/runtime_fields/tsconfig.json | 2 + .../api_keys/api_keys_grid/api_key_flyout.tsx | 3 +- .../edit_role_mapping_page.test.tsx | 1 + .../json_rule_editor.test.tsx | 3 +- .../rule_editor_panel/json_rule_editor.tsx | 3 +- .../rule_editor_panel.test.tsx | 1 + .../es/index_privilege_form.test.tsx | 4 +- .../privileges/es/index_privilege_form.tsx | 2 +- .../privileges/es/index_privileges.test.tsx | 1 + x-pack/plugins/security/tsconfig.json | 6 +- .../components/api_key/metadata_form.tsx | 2 +- .../api_key/security_privileges_form.tsx | 2 +- .../plugins/serverless_search/tsconfig.json | 1 + .../client_integration/helpers/mocks.tsx | 19 +--- .../type_settings/hdfs_settings.tsx | 2 +- .../steps/step_settings.tsx | 2 +- x-pack/plugins/snapshot_restore/tsconfig.json | 2 + .../expression/es_query_expression.test.tsx | 12 ++- .../expression/es_query_expression.tsx | 2 +- .../es_query/expression/expression.test.tsx | 4 +- x-pack/plugins/stack_alerts/tsconfig.json | 1 + .../__mocks__/@kbn/code-editor/index.tsx | 8 ++ .../connector_types/bedrock/params.test.tsx | 12 --- .../cases_webhook/webhook_connectors.test.tsx | 12 --- .../cases_webhook/webhook_params.test.tsx | 17 +--- .../d3security/params.test.tsx | 12 --- .../es_index/es_index_params.test.tsx | 13 --- .../connector_types/openai/params.test.tsx | 12 --- .../opsgenie/create_alert/index.test.tsx | 13 --- .../create_alert/json_editor.test.tsx | 13 --- .../connector_types/opsgenie/params.test.tsx | 12 --- .../tines/tines_params.test.tsx | 12 --- .../connector_types/torq/torq_params.test.tsx | 13 --- .../webhook/webhook_params.test.tsx | 13 --- x-pack/plugins/stack_connectors/tsconfig.json | 2 + .../__mocks__/@kbn/code-editor/index.ts | 8 ++ .../monitor_add_edit/fields/code_editor.tsx | 2 +- .../fields/request_body_field.test.tsx | 26 +---- .../fields/source_field.test.tsx | 17 ---- .../monitor_add_page.test.tsx | 17 ---- .../monitor_edit_page.test.tsx | 17 ---- x-pack/plugins/synthetics/tsconfig.json | 5 +- .../advanced_pivot_editor.tsx | 2 +- .../advanced_runtime_mappings_editor.tsx | 2 +- .../advanced_source_editor.tsx | 2 +- .../filter_agg/components/editor_form.tsx | 2 +- x-pack/plugins/transform/tsconfig.json | 3 +- .../public/application/code_editor.mock.tsx | 35 ------- ...son_editor_with_message_variables.test.tsx | 10 +- .../json_editor_with_message_variables.tsx | 2 +- .../plugins/triggers_actions_ui/tsconfig.json | 4 +- ...ics_edit_policy_extension_wrapper.test.tsx | 4 +- .../watch_create_json_page.test.tsx | 4 +- .../watch_create_threshold_page.test.tsx | 4 +- .../watch_edit_page.test.tsx | 4 +- .../json_watch_edit/json_watch_edit_form.tsx | 2 +- .../json_watch_edit_simulate.tsx | 2 +- .../action_fields/webhook_action_fields.tsx | 2 +- x-pack/plugins/watcher/tsconfig.json | 1 + yarn.lock | 6 +- 256 files changed, 671 insertions(+), 696 deletions(-) create mode 100644 packages/kbn-monaco/src/typings.d.ts create mode 100644 packages/shared-ux/code_editor/impl/BUILD.bazel rename packages/shared-ux/code_editor/{ => impl}/README.mdx (100%) rename packages/shared-ux/code_editor/{ => impl}/__snapshots__/code_editor.test.tsx.snap (88%) rename packages/shared-ux/code_editor/{ => impl}/code_editor.stories.tsx (100%) rename packages/shared-ux/code_editor/{ => impl}/code_editor.test.tsx (94%) rename packages/shared-ux/code_editor/{ => impl}/code_editor.tsx (100%) rename packages/shared-ux/code_editor/{ => impl}/editor.styles.ts (100%) create mode 100644 packages/shared-ux/code_editor/impl/index.tsx rename packages/shared-ux/code_editor/{ => impl}/jest.config.js (94%) rename packages/shared-ux/code_editor/{ => impl}/kibana.jsonc (100%) rename packages/shared-ux/code_editor/{ => impl}/languages/constants.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/languages/css/constants.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/languages/css/index.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/languages/css/language.ts (64%) rename packages/shared-ux/code_editor/{ => impl}/languages/grok/constants.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/languages/grok/index.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/languages/grok/language.test.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/languages/grok/language.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/languages/handlebars/constants.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/languages/handlebars/index.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/languages/handlebars/language.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/languages/hjson/constants.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/languages/hjson/index.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/languages/hjson/language.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/languages/index.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/languages/markdown/constants.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/languages/markdown/index.ts (100%) rename packages/shared-ux/code_editor/{languages/yaml => impl/languages/markdown}/language.ts (64%) rename packages/shared-ux/code_editor/{ => impl}/languages/yaml/constants.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/languages/yaml/index.ts (100%) rename packages/shared-ux/code_editor/{languages/markdown => impl/languages/yaml}/language.ts (63%) rename packages/shared-ux/code_editor/{ => impl}/mocks/storybook.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/package.json (100%) rename packages/shared-ux/code_editor/{ => impl}/placeholder_widget.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/register_languages.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/remeasure_fonts.ts (100%) rename packages/shared-ux/code_editor/{ => impl}/tsconfig.json (80%) create mode 100644 packages/shared-ux/code_editor/mocks/README.md create mode 100644 packages/shared-ux/code_editor/mocks/code_editor_mock.tsx rename packages/shared-ux/code_editor/{ => mocks}/index.ts (84%) rename src/plugins/kibana_react/public/code_editor/code_editor.tsx => packages/shared-ux/code_editor/mocks/jest_helper.ts (58%) create mode 100644 packages/shared-ux/code_editor/mocks/kibana.jsonc rename packages/shared-ux/code_editor/{code_editor.test.helpers.tsx => mocks/monaco_mock/index.tsx} (66%) create mode 100644 packages/shared-ux/code_editor/mocks/package.json create mode 100644 packages/shared-ux/code_editor/mocks/tsconfig.json delete mode 100644 src/plugins/kibana_react/public/code_editor/README.md delete mode 100644 src/plugins/kibana_react/public/code_editor/code_editor_field.tsx delete mode 100644 src/plugins/kibana_react/public/code_editor/index.tsx create mode 100644 x-pack/plugins/stack_connectors/__mocks__/@kbn/code-editor/index.tsx create mode 100644 x-pack/plugins/synthetics/__mocks__/@kbn/code-editor/index.ts delete mode 100644 x-pack/plugins/triggers_actions_ui/public/application/code_editor.mock.tsx diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 4dae217dce6ad..d2d3d6b0f1b33 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -86,7 +86,8 @@ x-pack/test/cloud_integration/plugins/saml_provider @elastic/kibana-core x-pack/plugins/cloud_integrations/cloud_links @elastic/kibana-core x-pack/plugins/cloud @elastic/kibana-core x-pack/plugins/cloud_security_posture @elastic/kibana-cloud-security-posture -packages/shared-ux/code_editor @elastic/appex-sharedux +packages/shared-ux/code_editor/impl @elastic/appex-sharedux +packages/shared-ux/code_editor/mocks @elastic/appex-sharedux packages/kbn-code-owners @elastic/appex-qa packages/kbn-coloring @elastic/kibana-visualizations packages/kbn-config @elastic/kibana-core diff --git a/examples/expressions_explorer/public/editor/expression_editor.tsx b/examples/expressions_explorer/public/editor/expression_editor.tsx index c940a21fada27..998a9e486ba19 100644 --- a/examples/expressions_explorer/public/editor/expression_editor.tsx +++ b/examples/expressions_explorer/public/editor/expression_editor.tsx @@ -7,7 +7,7 @@ */ import React from 'react'; -import { CodeEditor } from '@kbn/kibana-react-plugin/public'; +import { CodeEditor } from '@kbn/code-editor'; interface Props { value: string; diff --git a/examples/expressions_explorer/tsconfig.json b/examples/expressions_explorer/tsconfig.json index 717a797173597..b75817c68be7c 100644 --- a/examples/expressions_explorer/tsconfig.json +++ b/examples/expressions_explorer/tsconfig.json @@ -22,5 +22,6 @@ "@kbn/i18n", "@kbn/i18n-react", "@kbn/core-ui-settings-browser", + "@kbn/code-editor", ] } diff --git a/package.json b/package.json index 23e49b0d4cb35..22ac585845216 100644 --- a/package.json +++ b/package.json @@ -192,7 +192,8 @@ "@kbn/cloud-links-plugin": "link:x-pack/plugins/cloud_integrations/cloud_links", "@kbn/cloud-plugin": "link:x-pack/plugins/cloud", "@kbn/cloud-security-posture-plugin": "link:x-pack/plugins/cloud_security_posture", - "@kbn/code-editor": "link:packages/shared-ux/code_editor", + "@kbn/code-editor": "link:packages/shared-ux/code_editor/impl", + "@kbn/code-editor-mock": "link:packages/shared-ux/code_editor/mocks", "@kbn/coloring": "link:packages/kbn-coloring", "@kbn/config": "link:packages/kbn-config", "@kbn/config-mocks": "link:packages/kbn-config-mocks", diff --git a/packages/kbn-management/settings/components/field_input/code_editor.tsx b/packages/kbn-management/settings/components/field_input/code_editor.tsx index 3f46778917fdd..ac1ea672d8a15 100644 --- a/packages/kbn-management/settings/components/field_input/code_editor.tsx +++ b/packages/kbn-management/settings/components/field_input/code_editor.tsx @@ -15,11 +15,12 @@ import React, { useCallback } from 'react'; import { monaco, XJsonLang } from '@kbn/monaco'; + import { CodeEditor as KibanaReactCodeEditor, - MarkdownLang, type CodeEditorProps as KibanaReactCodeEditorProps, -} from '@kbn/kibana-react-plugin/public'; + MarkdownLang, +} from '@kbn/code-editor'; type Props = Pick; type Options = KibanaReactCodeEditorProps['options']; diff --git a/packages/kbn-management/settings/components/field_input/tsconfig.json b/packages/kbn-management/settings/components/field_input/tsconfig.json index bb4c6b4aa57d0..d971549abb2d4 100644 --- a/packages/kbn-management/settings/components/field_input/tsconfig.json +++ b/packages/kbn-management/settings/components/field_input/tsconfig.json @@ -19,7 +19,6 @@ "@kbn/management-settings-types", "@kbn/management-settings-field-definition", "@kbn/monaco", - "@kbn/kibana-react-plugin", "@kbn/management-settings-utilities", "@kbn/i18n-react", "@kbn/i18n", @@ -30,5 +29,6 @@ "@kbn/core-i18n-browser", "@kbn/core-analytics-browser-mocks", "@kbn/core-ui-settings-browser", + "@kbn/code-editor", ] } diff --git a/packages/kbn-monaco/index.ts b/packages/kbn-monaco/index.ts index 2ebb05bd0e393..e2e3c32d9d0fd 100644 --- a/packages/kbn-monaco/index.ts +++ b/packages/kbn-monaco/index.ts @@ -8,7 +8,15 @@ import './src/register_globals'; -export { monaco } from './src/monaco_imports'; +export { + monaco, + cssConf, + cssLanguage, + markdownConf, + markdownLanguage, + yamlConf, + yamlLanguage, +} from './src/monaco_imports'; export { XJsonLang } from './src/xjson'; export { SQLLang } from './src/sql'; export { ESQL_LANG_ID, ESQL_THEME_ID, ESQLLang } from './src/esql'; diff --git a/packages/kbn-monaco/src/monaco_imports.ts b/packages/kbn-monaco/src/monaco_imports.ts index 9da2a3f4562f3..cebdb7ffa1045 100644 --- a/packages/kbn-monaco/src/monaco_imports.ts +++ b/packages/kbn-monaco/src/monaco_imports.ts @@ -28,4 +28,18 @@ import 'monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution. import 'monaco-editor/esm/vs/basic-languages/xml/xml.contribution.js'; // Needed for basic xml support import 'monaco-editor/esm/vs/basic-languages/yaml/yaml.contribution'; // Needed for yaml support +// config for supported base languages +export { + conf as cssConf, + language as cssLanguage, +} from 'monaco-editor/esm/vs/basic-languages/css/css'; +export { + conf as markdownConf, + language as markdownLanguage, +} from 'monaco-editor/esm/vs/basic-languages/markdown/markdown'; +export { + conf as yamlConf, + language as yamlLanguage, +} from 'monaco-editor/esm/vs/basic-languages/yaml/yaml'; + export { monaco }; diff --git a/packages/kbn-monaco/src/typings.d.ts b/packages/kbn-monaco/src/typings.d.ts new file mode 100644 index 0000000000000..64301b9a59683 --- /dev/null +++ b/packages/kbn-monaco/src/typings.d.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +// Monaco languages support +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'; diff --git a/packages/kbn-text-based-editor/src/text_based_languages_editor.tsx b/packages/kbn-text-based-editor/src/text_based_languages_editor.tsx index 24966c78960bb..3546fcec41af4 100644 --- a/packages/kbn-text-based-editor/src/text_based_languages_editor.tsx +++ b/packages/kbn-text-based-editor/src/text_based_languages_editor.tsx @@ -39,8 +39,7 @@ import { EuiOutsideClickDetector, EuiToolTip, } from '@elastic/eui'; -import { CodeEditor } from '@kbn/kibana-react-plugin/public'; -import type { CodeEditorProps } from '@kbn/kibana-react-plugin/public'; +import { CodeEditor, CodeEditorProps } from '@kbn/code-editor'; import { textBasedLanguagedEditorStyles, diff --git a/packages/kbn-text-based-editor/tsconfig.json b/packages/kbn-text-based-editor/tsconfig.json index 72240c8aa060d..1c71fc544155d 100644 --- a/packages/kbn-text-based-editor/tsconfig.json +++ b/packages/kbn-text-based-editor/tsconfig.json @@ -24,7 +24,8 @@ "@kbn/expressions-plugin", "@kbn/data-views-plugin", "@kbn/index-management-plugin", - "@kbn/visualization-utils" + "@kbn/visualization-utils", + "@kbn/code-editor", ], "exclude": [ "target/**/*", diff --git a/packages/kbn-ui-shared-deps-src/BUILD.bazel b/packages/kbn-ui-shared-deps-src/BUILD.bazel index cd97c193f9f86..9e62a7418f153 100644 --- a/packages/kbn-ui-shared-deps-src/BUILD.bazel +++ b/packages/kbn-ui-shared-deps-src/BUILD.bazel @@ -35,6 +35,7 @@ webpack_cli( "//packages/kbn-peggy-loader", "//packages/shared-ux/error_boundary", "//packages/kbn-rison", + "//packages/shared-ux/code_editor/impl:code_editor", ], output_dir = True, args = [ diff --git a/packages/kbn-ui-shared-deps-src/src/definitions.js b/packages/kbn-ui-shared-deps-src/src/definitions.js index 9ae258dca6bc8..7480303087b6c 100644 --- a/packages/kbn-ui-shared-deps-src/src/definitions.js +++ b/packages/kbn-ui-shared-deps-src/src/definitions.js @@ -98,6 +98,7 @@ const externals = { classnames: '__kbnSharedDeps__.Classnames', '@tanstack/react-query': '__kbnSharedDeps__.ReactQuery', '@tanstack/react-query-devtools': '__kbnSharedDeps__.ReactQueryDevtools', + '@kbn/code-editor': '__kbnSharedDeps__.KbnCodeEditor', }; module.exports = { distDir, jsFilename, cssDistFilename, externals }; diff --git a/packages/kbn-ui-shared-deps-src/src/entry.js b/packages/kbn-ui-shared-deps-src/src/entry.js index 6ba856cbbc2d1..d0585d0cacc04 100644 --- a/packages/kbn-ui-shared-deps-src/src/entry.js +++ b/packages/kbn-ui-shared-deps-src/src/entry.js @@ -74,3 +74,4 @@ export const History = require('history'); export const Classnames = require('classnames'); export const ReactQuery = require('@tanstack/react-query'); export const ReactQueryDevtools = require('@tanstack/react-query-devtools'); +export const KbnCodeEditor = require('@kbn/code-editor'); diff --git a/packages/kbn-unified-data-table/src/utils/get_render_cell_value.test.tsx b/packages/kbn-unified-data-table/src/utils/get_render_cell_value.test.tsx index 7db7ffedfdecf..c59acdc815389 100644 --- a/packages/kbn-unified-data-table/src/utils/get_render_cell_value.test.tsx +++ b/packages/kbn-unified-data-table/src/utils/get_render_cell_value.test.tsx @@ -13,7 +13,8 @@ import { findTestSubject } from '@elastic/eui/lib/test'; import { mountWithIntl } from '@kbn/test-jest-helpers'; import { getRenderCellValueFn } from './get_render_cell_value'; import { dataViewMock } from '@kbn/discover-utils/src/__mocks__'; -import { CodeEditorProps, KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import { CodeEditorProps } from '@kbn/code-editor'; import { buildDataTableRecord } from '@kbn/discover-utils'; import type { EsHitRecord } from '@kbn/discover-utils/types'; import { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; diff --git a/packages/shared-ux/code_editor/impl/BUILD.bazel b/packages/shared-ux/code_editor/impl/BUILD.bazel new file mode 100644 index 0000000000000..ad571cb379afd --- /dev/null +++ b/packages/shared-ux/code_editor/impl/BUILD.bazel @@ -0,0 +1,37 @@ +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") + +SRCS = glob( + [ + "**/*.ts", + "**/*.tsx", + ], + exclude = [ + "**/test_helpers.ts", + "**/*.config.js", + "**/*.mock.*", + "**/*.test.*", + "**/*.stories.*", + "**/__snapshots__/**", + "**/integration_tests/**", + "**/mocks/**", + "**/scripts/**", + "**/storybook/**", + "**/test_fixtures/**", + "**/test_helpers/**", + ], +) + +BUNDLER_DEPS = [ + "@npm//react", + "@npm//tslib", + "@npm//react-monaco-editor", + "@npm//react-resize-detector", +] + +js_library( + name = "code_editor", + package_name = "@kbn/code-editor", + srcs = SRCS + ["package.json"], + deps = BUNDLER_DEPS, + visibility = ["//visibility:public"], +) diff --git a/packages/shared-ux/code_editor/README.mdx b/packages/shared-ux/code_editor/impl/README.mdx similarity index 100% rename from packages/shared-ux/code_editor/README.mdx rename to packages/shared-ux/code_editor/impl/README.mdx diff --git a/packages/shared-ux/code_editor/__snapshots__/code_editor.test.tsx.snap b/packages/shared-ux/code_editor/impl/__snapshots__/code_editor.test.tsx.snap similarity index 88% rename from packages/shared-ux/code_editor/__snapshots__/code_editor.test.tsx.snap rename to packages/shared-ux/code_editor/impl/__snapshots__/code_editor.test.tsx.snap index 790a4f05f8c50..4fb960f82cc7d 100644 --- a/packages/shared-ux/code_editor/__snapshots__/code_editor.test.tsx.snap +++ b/packages/shared-ux/code_editor/impl/__snapshots__/code_editor.test.tsx.snap @@ -290,7 +290,7 @@ exports[` is rendered 1`] = ` - is rendered 1`] = `