chore(NA): add async import into infra plugin to reduce apm bundle size (#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 <elasticmachine@users.noreply.github.com>
This commit is contained in:
Tiago Costa 2020-04-29 01:29:38 +01:00 committed by GitHub
parent 7dc3972576
commit 30439f6df0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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());
}
}
}