diff --git a/x-pack/plugins/infra/public/plugin.ts b/x-pack/plugins/infra/public/plugin.ts index 40366b2a54f24..26f206c06203b 100644 --- a/x-pack/plugins/infra/public/plugin.ts +++ b/x-pack/plugins/infra/public/plugin.ts @@ -21,8 +21,6 @@ import { UsageCollectionSetup } from '../../../../src/plugins/usage_collection/p import { DataEnhancedSetup, DataEnhancedStart } from '../../data_enhanced/public'; import { TriggersAndActionsUIPublicPluginSetup } from '../../../plugins/triggers_actions_ui/public'; -import { getAlertType as getMetricsAlertType } from './components/alerting/metrics/metric_threshold_alert_type'; -import { getAlertType as getLogsAlertType } from './components/alerting/logs/log_threshold_alert_type'; export type ClientSetup = void; export type ClientStart = void; @@ -53,9 +51,6 @@ export class Plugin setup(core: CoreSetup, pluginsSetup: ClientPluginsSetup) { registerFeatures(pluginsSetup.home); - pluginsSetup.triggers_actions_ui.alertTypeRegistry.register(getMetricsAlertType()); - pluginsSetup.triggers_actions_ui.alertTypeRegistry.register(getLogsAlertType()); - core.application.register({ id: 'logs', title: i18n.translate('xpack.infra.logs.pluginTitle', { @@ -70,6 +65,8 @@ export class Plugin const plugins = getMergedPlugins(pluginsSetup, pluginsStart as ClientPluginsStart); const { startApp, composeLibs, LogsRouter } = await this.downloadAssets(); + await this.registerLogsAlertType(pluginsSetup); + return startApp( composeLibs(coreStart), coreStart, @@ -95,6 +92,8 @@ export class Plugin const plugins = getMergedPlugins(pluginsSetup, pluginsStart as ClientPluginsStart); const { startApp, composeLibs, MetricsRouter } = await this.downloadAssets(); + await this.registerMetricsAlertType(pluginsSetup); + return startApp( composeLibs(coreStart), coreStart, @@ -138,4 +137,24 @@ export class Plugin MetricsRouter, }; } + + // NOTE: apm is importing from `infra/public` and async importing that + // allow us to reduce the apm bundle size + private async registerLogsAlertType(pluginsSetup: ClientPluginsSetup) { + const { getAlertType } = await import('./components/alerting/logs/log_threshold_alert_type'); + + if (!pluginsSetup.triggers_actions_ui.alertTypeRegistry.has(getAlertType().id)) { + pluginsSetup.triggers_actions_ui.alertTypeRegistry.register(getAlertType()); + } + } + + private async registerMetricsAlertType(pluginsSetup: ClientPluginsSetup) { + const { getAlertType } = await import( + './components/alerting/metrics/metric_threshold_alert_type' + ); + + if (!pluginsSetup.triggers_actions_ui.alertTypeRegistry.has(getAlertType().id)) { + pluginsSetup.triggers_actions_ui.alertTypeRegistry.register(getAlertType()); + } + } }