Skip to content

Commit

Permalink
chore(NA): add async import into infra plugin to reduce apm bundle si…
Browse files Browse the repository at this point in the history
…ze (#63292)

* chore(NA): async import on infra plugin in order to avoid infra plugin on apm

* chore(NA): add async import into infra plugin to reduce apm bundle size

* docs(NA): including small note

* fix(NA): pass pluginsSetup as an argument

* chore(NA): fix missing type

* chore(NA): split register in two functions

* chore(NA): only register once

Co-authored-by: Elastic Machine <[email protected]>
  • Loading branch information
mistic and elasticmachine authored Apr 29, 2020
1 parent 7dc3972 commit 30439f6
Showing 1 changed file with 24 additions and 5 deletions.
29 changes: 24 additions & 5 deletions x-pack/plugins/infra/public/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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', {
Expand All @@ -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,
Expand All @@ -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,
Expand Down Expand Up @@ -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());
}
}
}

0 comments on commit 30439f6

Please sign in to comment.