From 934cfee245bdbce731e6cdb1a14e9189683bdf87 Mon Sep 17 00:00:00 2001
From: Milosz Marcinkowski
<38698566+miloszmarcinkowski@users.noreply.github.com>
Date: Thu, 2 Jan 2025 14:30:47 +0100
Subject: [PATCH] Add `consistent-type-imports` eslint rule in
`obs-ux-infra_services-team` owned plugins (#204549)
Closes #204412
## Summary
This PR enforces `consistent-type-imports` eslint rule in
`x-pack/solutions/observability/plugins/*` plugins owned by
`obs-ux-infra_services-team`.
Detailed list of plugins:
- `x-pack/solutions/observability/plugins/apm`,
- `x-pack/solutions/observability/plugins/apm_data_access`,
- `x-pack/solutions/observability/plugins/infra`,
- `x-pack/solutions/observability/plugins/inventory`,
- `x-pack/solutions/observability/plugins/metrics_data_access`,
- `x-pack/solutions/observability/plugins/profiling`,
- `x-pack/solutions/observability/plugins/profiling_data_access`
Script for fixing eslint rules in above plugins:
```bash
yarn eslint --no-error-on-unmatched-pattern --quiet --fix "x-pack/solutions/observability/plugins/apm/**/*.{js,mjs,ts,tsx}" "x-pack/solutions/observability/plugins/apm_data_access/**/*.{js,mjs,ts,tsx}" "x-pack/solutions/observability/plugins/infra/**/*.{js,mjs,ts,tsx}" "x-pack/solutions/observability/plugins/inventory/**/*.{js,mjs,ts,tsx}" "x-pack/solutions/observability/plugins/metrics_data_access/**/*.{js,mjs,ts,tsx}" "x-pack/solutions/observability/plugins/profiling/**/*.{js,mjs,ts,tsx}" "x-pack/solutions/observability/plugins/profiling_data_access/**/*.{js,mjs,ts,tsx}"
```
## Results
The affected plugins have been profiled using `node
scripts/build_kibana_platform_plugins.js --dist --profile --focus=apm
--no-cache` command and bundle size checked manually (`du -s` command).
#### APM plugin
Zero benefits in terms of size.
#### Infra plugin
Zero benefits in terms of size.
#### Profiling plugin
Zero benefits in terms of size.
## Conclusions
- Using [type-only
imports](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export)
in Kibana doesn't provide any benefits in terms of bundle size,
- Possible safeguarding against edge-case TS errors
- avoiding unintentional side effects
([source](https://typescript-eslint.io/blog/consistent-type-imports-and-exports-why-and-how/#avoiding-unintentional-side-effects))
- circular dependency reference error
[(source)](https://stackoverflow.com/questions/40982927/using-import-type-statement-to-fix-circular-dependency-reference-error)
- Better ground for incoming tooling (improving performance, reliability
with type definition analysis),
- Clearer code intent.
(cherry picked from commit 6461b7e26a9afb2710353c0a84a67e4935504da4)
# Conflicts:
# x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/failed_transaction_chart.tsx
# x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/chart_preview/index.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/alerts_overview/index.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/correlations/correlations_table.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/correlations/use_failed_transactions_correlations.test.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/correlations/use_latency_correlations.test.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/entities/entity_link/entity_link.test.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/entities/entity_link/index.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/error_group_details/distribution/index.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/error_group_details/error_sampler/sample_summary.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/help_popover/help_popover.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/infra_overview/infra_tabs/use_tabs.test.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/embedded_map.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/index.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_http_requests_map_layer_list.ts
# x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_layer_list.ts
# x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_map_layer_style.ts
# x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_session_map_layer_list.ts
# x-pack/plugins/observability_solution/apm/public/components/app/service_groups/service_groups_list/service_group_card.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/service_list/health_badge.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/service_logs/index.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/service_map/cytoscape.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/service_map/cytoscape_options.ts
# x-pack/plugins/observability_solution/apm/public/components/app/service_map/index.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/service_map/popover/anomaly_detection.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/service_map/popover/externals_list_contents.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/service_map/popover/index.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/service_map/popover/resource_contents.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/service_overview/service_overview_instances_table/intance_details.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/top_traces_overview/trace_list.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/waterfall/accordion_waterfall.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/waterfall/failure_badge.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/waterfall/span_flyout/truncate_height_section.tsx
# x-pack/plugins/observability_solution/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/waterfall/waterfall_item.tsx
# x-pack/plugins/observability_solution/apm/public/components/fleet_integration/apm_agents/agent_instructions_accordion.tsx
# x-pack/plugins/observability_solution/apm/public/components/routing/app_root/apm_header_action_menu/anomaly_detection_setup_link.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/charts/breakdown_chart/index.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/charts/duration_distribution_chart/index.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/charts/instances_latency_distribution_chart/custom_tooltip.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/charts/instances_latency_distribution_chart/index.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/charts/spark_plot/index.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/charts/timeline/marker/agent_marker.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/charts/timeline/marker/error_marker.test.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/charts/timeline/marker/error_marker.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/charts/timeline/marker/index.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/charts/timeline/timeline_axis.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/charts/timeline/vertical_lines.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/links/apm/service_link/index.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/overview_table_container/index.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/service_icons/index.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/stacktrace/context.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/stacktrace/frame_heading.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/stacktrace/library_stacktrace.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/stacktrace/stackframe.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/stacktrace/variables.tsx
# x-pack/plugins/observability_solution/apm/public/components/shared/summary/user_agent_summary_item.tsx
# x-pack/plugins/observability_solution/apm/public/context/apm_plugin/apm_plugin_context.tsx
# x-pack/plugins/observability_solution/apm/public/hooks/use_breakpoints.test.tsx
# x-pack/plugins/observability_solution/apm/public/hooks/use_fetcher.test.tsx
# x-pack/plugins/observability_solution/apm/public/hooks/use_time_range.test.ts
# x-pack/plugins/observability_solution/apm/public/plugin.ts
# x-pack/plugins/observability_solution/apm/public/tutorial/config_agent/index.tsx
# x-pack/plugins/observability_solution/apm/public/tutorial/tutorial_fleet_instructions/index.tsx
# x-pack/plugins/observability_solution/apm/server/feature.ts
# x-pack/plugins/observability_solution/apm/server/lib/helpers/get_random_sampler/index.ts
# x-pack/plugins/observability_solution/apm/server/plugin.ts
# x-pack/plugins/observability_solution/apm/server/routes/agent_keys/get_agent_keys_privileges.ts
# x-pack/plugins/observability_solution/apm/server/routes/alerts/register_apm_rule_types.ts
# x-pack/plugins/observability_solution/apm/server/routes/alerts/test_utils/index.ts
# x-pack/plugins/observability_solution/apm/server/routes/apm_routes/register_apm_server_routes.ts
# x-pack/plugins/observability_solution/apm/server/routes/assistant_functions/get_observability_alert_details_context/index.ts
# x-pack/plugins/observability_solution/apm/server/routes/fleet/is_superuser.ts
# x-pack/plugins/observability_solution/apm/server/types.ts
# x-pack/plugins/observability_solution/infra/common/alerting/metrics/types.ts
# x-pack/plugins/observability_solution/infra/common/constants.ts
# x-pack/plugins/observability_solution/infra/public/alerting/metric_threshold/components/expression_row.tsx
# x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_container_metrics_charts.test.ts
# x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_host_metrics_charts.test.ts
# x-pack/plugins/observability_solution/infra/public/components/autocomplete_field/autocomplete_field.tsx
# x-pack/plugins/observability_solution/infra/public/components/autocomplete_field/suggestion_item.tsx
# x-pack/plugins/observability_solution/infra/public/components/fixed_datepicker.tsx
# x-pack/plugins/observability_solution/infra/public/components/loading_overlay_wrapper.tsx
# x-pack/plugins/observability_solution/infra/public/components/log_stream/log_stream_react_embeddable.tsx
# x-pack/plugins/observability_solution/infra/public/components/logging/log_analysis_job_status/quality_warning_notices.tsx
# x-pack/plugins/observability_solution/infra/public/components/logging/log_entry_examples/log_entry_examples.tsx
# x-pack/plugins/observability_solution/infra/public/components/logging/log_minimap/density_chart.tsx
# x-pack/plugins/observability_solution/infra/public/components/logging/log_minimap/log_minimap.tsx
# x-pack/plugins/observability_solution/infra/public/components/logging/log_minimap/search_marker.tsx
# x-pack/plugins/observability_solution/infra/public/components/logs_deprecation_callout.tsx
# x-pack/plugins/observability_solution/infra/public/components/shared/alerts/alerts_overview.tsx
# x-pack/plugins/observability_solution/infra/public/hooks/use_lens_attributes.ts
# x-pack/plugins/observability_solution/infra/public/pages/logs/log_entry_categories/sections/top_categories/datasets_list.tsx
# x-pack/plugins/observability_solution/infra/public/pages/logs/log_entry_categories/sections/top_categories/top_categories_table.tsx
# x-pack/plugins/observability_solution/infra/public/pages/logs/settings/add_log_column_popover.tsx
# x-pack/plugins/observability_solution/infra/public/pages/logs/stream/page_logs_content.tsx
# x-pack/plugins/observability_solution/infra/public/pages/logs/stream/page_view_log_in_context.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/components/tabs/alerts/alerts_tab_content.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/hooks/use_hosts_table.test.ts
# x-pack/plugins/observability_solution/infra/public/pages/metrics/index.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/dropdown_button.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/layout.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/nodes_overview.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/table_view.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/timeline/timeline.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/gradient_legend.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/group_name.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/group_of_groups.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/group_of_nodes.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/legend.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/legend_controls.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/map.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/node.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/node_context_menu.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/node_square.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/stepped_gradient_legend.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/steps_legend.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/waffle_sort_controls.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/waffle_time_controls.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/hooks/use_waffle_filters.test.ts
# x-pack/plugins/observability_solution/infra/public/pages/metrics/metric_detail/components/gauges_section_vis.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/metric_detail/components/metadata_details.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/metric_detail/components/time_controls.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/metric_detail/types.ts
# x-pack/plugins/observability_solution/infra/public/pages/metrics/metrics_explorer/hooks/use_metrics_explorer_data.test.tsx
# x-pack/plugins/observability_solution/infra/public/pages/metrics/metrics_explorer/hooks/use_metrics_explorer_options.test.tsx
# x-pack/plugins/observability_solution/infra/public/plugin.ts
# x-pack/plugins/observability_solution/infra/public/test_utils/entries.ts
# x-pack/plugins/observability_solution/infra/server/index.ts
# x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/adapter_types.ts
# x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts
# x-pack/plugins/observability_solution/infra/server/lib/alerting/inventory_metric_threshold/register_inventory_metric_threshold_rule_type.ts
# x-pack/plugins/observability_solution/infra/server/lib/alerting/register_rule_types.ts
# x-pack/plugins/observability_solution/infra/server/plugin.ts
# x-pack/plugins/observability_solution/infra/server/routes/infra/lib/host/get_hosts_alerts_count.ts
# x-pack/plugins/observability_solution/infra/server/services/rules/types.ts
# x-pack/plugins/observability_solution/inventory/public/components/grouped_inventory/grouped_entities_grid.tsx
# x-pack/plugins/observability_solution/inventory/server/lib/create_alerts_client.ts/create_alerts_client.ts
# x-pack/plugins/observability_solution/inventory/server/routes/entities/get_latest_entities_alerts.ts
# x-pack/plugins/observability_solution/inventory/server/routes/entities/route.ts
# x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/host/metrics/index.ts
# x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/adapter_types.ts
# x-pack/plugins/observability_solution/profiling/public/components/topn_functions/function_row.tsx
# x-pack/plugins/observability_solution/profiling/public/types.ts
# x-pack/plugins/observability_solution/profiling/server/lib/setup/get_has_setup_privileges.ts
# x-pack/solutions/observability/plugins/apm/public/assistant_functions/get_apm_timeseries.tsx
# x-pack/solutions/observability/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/waterfall/responsive_flyout.tsx
# x-pack/solutions/observability/plugins/apm/server/deprecations/apm_user_role.test.ts
# x-pack/solutions/observability/plugins/apm/server/deprecations/apm_user_role.ts
# x-pack/solutions/observability/plugins/apm/server/deprecations/index.ts
# x-pack/solutions/observability/plugins/apm/server/lib/deprecations/index.ts
# x-pack/solutions/observability/plugins/apm/server/routes/entities/utils/merge_entities.test.ts
# x-pack/solutions/observability/plugins/infra/public/pages/metrics/hosts/hooks/use_host_count.test.ts
# x-pack/solutions/observability/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx
# x-pack/solutions/observability/plugins/infra/public/utils/theme_utils/with_attrs.tsx
# x-pack/solutions/observability/plugins/infra/server/config.ts
# x-pack/solutions/observability/plugins/inventory/public/components/search_bar/entity_types_multi_select.tsx
# x-pack/solutions/observability/plugins/inventory/public/utils/group_entity_types_by_status.ts
---
.eslintrc.js | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/.eslintrc.js b/.eslintrc.js
index 730c9599f23f9..27741abd6632c 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1020,6 +1020,20 @@ module.exports = {
],
},
},
+ {
+ files: [
+ 'x-pack/solutions/observability/plugins/apm/**/*.{js,mjs,ts,tsx}',
+ 'x-pack/solutions/observability/plugins/apm_data_access/**/*.{js,mjs,ts,tsx}',
+ 'x-pack/solutions/observability/plugins/infra/**/*.{js,mjs,ts,tsx}',
+ 'x-pack/solutions/observability/plugins/inventory/**/*.{js,mjs,ts,tsx}',
+ 'x-pack/solutions/observability/plugins/metrics_data_access/**/*.{js,mjs,ts,tsx}',
+ 'x-pack/solutions/observability/plugins/profiling/**/*.{js,mjs,ts,tsx}',
+ 'x-pack/solutions/observability/plugins/profiling_data_access/**/*.{js,mjs,ts,tsx}',
+ ],
+ rules: {
+ '@typescript-eslint/consistent-type-imports': 'error',
+ },
+ },
/**
* Fleet overrides