async-import plugins in the server side (#170856)

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
Alejandro Fernández Haro 2023-11-15 08:55:56 +01:00 committed by GitHub
parent feee02bb69
commit fd09c26d15
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
246 changed files with 757 additions and 591 deletions

View file

@ -122,7 +122,7 @@ If you are developing in TypeScript (which we recommend), you will need to add a
core capabilities as an argument. It should return an instance of its plugin class for Kibana to load.
```ts
import type { PluginInitializerContext } from '@kbn/core/server';
import type { PluginInitializerContext } from '@kbn/core/public';
import { DemoPlugin } from './plugin';
export function plugin(initializerContext: PluginInitializerContext) {
@ -177,7 +177,16 @@ export class DemoPlugin implements Plugin {
### server/index.ts
`server/index.ts` is the entry-point into the server-side code of this plugin. It is identical in almost every way to the client-side entry-point:
`server/index.ts` is the entry-point into the server-side code of this plugin.
```ts
import type { PluginInitializerContext } from '@kbn/core/server';
export async function plugin(initializerContext: PluginInitializerContext) {
const { DemoPlugin } = await import('./plugin');
return new DemoPlugin(initializerContext);
}
```
### server/plugin.ts

View file

@ -35,7 +35,7 @@ export type MyPluginConfigType = TypeOf<typeof config.schema>;
* Read config value exposed via `PluginInitializerContext`:
*my_plugin/server/index.ts*
*my_plugin/server/plugin.ts*
[source,typescript]
----
import type { PluginInitializerContext } from '@kbn/core/server';

View file

@ -100,9 +100,9 @@ entry-point:
[source,typescript]
----
import type { PluginInitializerContext } from '@kbn/core/server';
import { MyPlugin } from './plugin';
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { MyPlugin } = await import('./plugin');
return new MyPlugin(initializerContext);
}
----

View file

@ -6,6 +6,7 @@
* Side Public License, v 1.
*/
import { BfetchExplorerPlugin } from './plugin';
export const plugin = () => new BfetchExplorerPlugin();
export const plugin = async () => {
const { BfetchExplorerPlugin } = await import('./plugin');
return new BfetchExplorerPlugin();
};

View file

@ -7,8 +7,8 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { ContentManagementExamplesPlugin } from './plugin';
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { ContentManagementExamplesPlugin } = await import('./plugin');
return new ContentManagementExamplesPlugin(initializerContext);
}

View file

@ -8,6 +8,7 @@
import { PluginInitializer } from '@kbn/core/server';
import { EmbeddableExamplesPlugin } from './plugin';
export const plugin: PluginInitializer<void, void> = () => new EmbeddableExamplesPlugin();
export const plugin: PluginInitializer<void, void> = async () => {
const { EmbeddableExamplesPlugin } = await import('./plugin');
return new EmbeddableExamplesPlugin();
};

View file

@ -6,6 +6,8 @@
* Side Public License, v 1.
*/
import { PluginInitializer } from '@kbn/core/server';
import { FeatureControlsPluginExample } from './plugin';
export const plugin: PluginInitializer<void, void> = () => new FeatureControlsPluginExample();
export const plugin: PluginInitializer<void, void> = async () => {
const { FeatureControlsPluginExample } = await import('./plugin');
return new FeatureControlsPluginExample();
};

View file

@ -6,8 +6,7 @@
* Side Public License, v 1.
*/
import { FieldFormatsExamplePlugin } from './plugin';
export function plugin() {
export async function plugin() {
const { FieldFormatsExamplePlugin } = await import('./plugin');
return new FieldFormatsExamplePlugin();
}

View file

@ -7,11 +7,11 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { FilesExamplePlugin } from './plugin';
// This exports static code and TypeScript types,
// as well as, Kibana Platform `plugin()` initializer.
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { FilesExamplePlugin } = await import('./plugin');
return new FilesExamplePlugin(initializerContext);
}

View file

@ -7,6 +7,8 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { GuidedOnboardingExamplePlugin } from './plugin';
export const plugin = (ctx: PluginInitializerContext) => new GuidedOnboardingExamplePlugin(ctx);
export const plugin = async (ctx: PluginInitializerContext) => {
const { GuidedOnboardingExamplePlugin } = await import('./plugin');
return new GuidedOnboardingExamplePlugin(ctx);
};

View file

@ -10,11 +10,13 @@ import type { TypeOf } from '@kbn/config-schema';
import type { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server';
import { ConfigSchema } from './config';
import { PrebootExamplePlugin } from './plugin';
export const config: PluginConfigDescriptor<TypeOf<typeof ConfigSchema>> = {
schema: ConfigSchema,
exposeToBrowser: { token: true },
};
export const plugin = (context: PluginInitializerContext) => new PrebootExamplePlugin(context);
export const plugin = async (context: PluginInitializerContext) => {
const { PrebootExamplePlugin } = await import('./plugin');
return new PrebootExamplePlugin(context);
};

View file

@ -8,8 +8,7 @@
import { PluginInitializerContext } from '@kbn/core/server';
import { ResponseStreamPlugin } from './plugin';
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { ResponseStreamPlugin } = await import('./plugin');
return new ResponseStreamPlugin(initializerContext);
}

View file

@ -8,6 +8,7 @@
import { PluginInitializer } from '@kbn/core/server';
import { RoutingExamplePlugin } from './plugin';
export const plugin: PluginInitializer<{}, {}> = () => new RoutingExamplePlugin();
export const plugin: PluginInitializer<{}, {}> = async () => {
const { RoutingExamplePlugin } = await import('./plugin');
return new RoutingExamplePlugin();
};

View file

@ -7,6 +7,8 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { ScreenshotModeExamplePlugin } from './plugin';
export const plugin = (ctx: PluginInitializerContext) => new ScreenshotModeExamplePlugin(ctx);
export const plugin = async (ctx: PluginInitializerContext) => {
const { ScreenshotModeExamplePlugin } = await import('./plugin');
return new ScreenshotModeExamplePlugin(ctx);
};

View file

@ -7,9 +7,9 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { SearchExamplesPlugin } from './plugin';
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { SearchExamplesPlugin } = await import('./plugin');
return new SearchExamplesPlugin(initializerContext);
}

View file

@ -5,6 +5,8 @@
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
import { UserProfilesPlugin } from './plugin';
export const plugin = () => new UserProfilesPlugin();
export const plugin = async () => {
const { UserProfilesPlugin } = await import('./plugin');
return new UserProfilesPlugin();
};

View file

@ -7,8 +7,8 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { V8ProfilerExamplesPlugin } from './plugin';
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { V8ProfilerExamplesPlugin } = await import('./plugin');
return new V8ProfilerExamplesPlugin(initializerContext);
}

View file

@ -157,7 +157,7 @@ describe('`constructor` correctly sets non-external source', () => {
});
});
test('`setup` fails if `plugin` initializer is not exported', () => {
test('`setup` fails if the plugin has not been initialized', () => {
const manifest = createPluginManifest();
const opaqueId = Symbol();
const plugin = new PluginWrapper({
@ -176,11 +176,32 @@ test('`setup` fails if `plugin` initializer is not exported', () => {
expect(() =>
plugin.setup(createPluginSetupContext({ deps: setupDeps, plugin, runtimeResolver }), {})
).toThrowErrorMatchingInlineSnapshot(
`"The plugin is not initialized. Call the init method first."`
);
});
test('`init` fails if `plugin` initializer is not exported', async () => {
const manifest = createPluginManifest();
const opaqueId = Symbol();
const plugin = new PluginWrapper({
path: 'plugin-without-initializer-path',
manifest,
opaqueId,
initializerContext: createPluginInitializerContext({
coreContext,
opaqueId,
manifest,
instanceInfo,
nodeInfo,
}),
});
await expect(() => plugin.init()).rejects.toThrowErrorMatchingInlineSnapshot(
`"Plugin \\"some-plugin-id\\" does not export \\"plugin\\" definition (plugin-without-initializer-path)."`
);
});
test('`setup` fails if plugin initializer is not a function', () => {
test('`init` fails if plugin initializer is not a function', async () => {
const manifest = createPluginManifest();
const opaqueId = Symbol();
const plugin = new PluginWrapper({
@ -196,14 +217,12 @@ test('`setup` fails if plugin initializer is not a function', () => {
}),
});
expect(() =>
plugin.setup(createPluginSetupContext({ deps: setupDeps, plugin, runtimeResolver }), {})
).toThrowErrorMatchingInlineSnapshot(
await expect(() => plugin.init()).rejects.toThrowErrorMatchingInlineSnapshot(
`"Definition of plugin \\"some-plugin-id\\" should be a function (plugin-with-wrong-initializer-path)."`
);
});
test('`setup` fails if initializer does not return object', () => {
test('`init` fails if initializer does not return object', async () => {
const manifest = createPluginManifest();
const opaqueId = Symbol();
const plugin = new PluginWrapper({
@ -219,16 +238,14 @@ test('`setup` fails if initializer does not return object', () => {
}),
});
mockPluginInitializer.mockReturnValue(null);
mockPluginInitializer.mockResolvedValue(null);
expect(() =>
plugin.setup(createPluginSetupContext({ deps: setupDeps, plugin, runtimeResolver }), {})
).toThrowErrorMatchingInlineSnapshot(
await expect(() => plugin.init()).rejects.toThrowErrorMatchingInlineSnapshot(
`"Initializer for plugin \\"some-plugin-id\\" is expected to return plugin instance, but returned \\"null\\"."`
);
});
test('`setup` fails if object returned from initializer does not define `setup` function', () => {
test('`init` fails if object returned from initializer does not define `setup` function', async () => {
const manifest = createPluginManifest();
const opaqueId = Symbol();
const plugin = new PluginWrapper({
@ -245,11 +262,9 @@ test('`setup` fails if object returned from initializer does not define `setup`
});
const mockPluginInstance = { run: jest.fn() };
mockPluginInitializer.mockReturnValue(mockPluginInstance);
mockPluginInitializer.mockResolvedValue(mockPluginInstance);
expect(() =>
plugin.setup(createPluginSetupContext({ deps: setupDeps, plugin, runtimeResolver }), {})
).toThrowErrorMatchingInlineSnapshot(
await expect(() => plugin.init()).rejects.toThrowErrorMatchingInlineSnapshot(
`"Instance of plugin \\"some-plugin-id\\" does not define \\"setup\\" function."`
);
});
@ -272,7 +287,9 @@ test('`setup` initializes plugin and calls appropriate lifecycle hook', async ()
});
const mockPluginInstance = { setup: jest.fn().mockResolvedValue({ contract: 'yes' }) };
mockPluginInitializer.mockReturnValue(mockPluginInstance);
mockPluginInitializer.mockResolvedValue(mockPluginInstance);
await plugin.init();
const setupContext = createPluginSetupContext({ deps: setupDeps, plugin, runtimeResolver });
const setupDependencies = { 'some-required-dep': { contract: 'no' } };
@ -323,8 +340,9 @@ test('`start` fails invoked for the `preboot` plugin', async () => {
});
const mockPluginInstance = { setup: jest.fn() };
mockPluginInitializer.mockReturnValue(mockPluginInstance);
mockPluginInitializer.mockResolvedValue(mockPluginInstance);
await plugin.init();
await plugin.setup({} as any, {} as any);
expect(() => plugin.start({} as any, {} as any)).toThrowErrorMatchingInlineSnapshot(
@ -355,8 +373,9 @@ test('`start` calls plugin.start with context and dependencies', async () => {
setup: jest.fn(),
start: jest.fn().mockResolvedValue(pluginStartContract),
};
mockPluginInitializer.mockReturnValue(mockPluginInstance);
mockPluginInitializer.mockResolvedValue(mockPluginInstance);
await plugin.init();
await plugin.setup({} as any, {} as any);
const startContract = await plugin.start(context, deps);
@ -399,8 +418,9 @@ test("`start` resolves `startDependencies` Promise after plugin's start", async
return pluginStartContract;
},
};
mockPluginInitializer.mockReturnValue(mockPluginInstance);
mockPluginInitializer.mockResolvedValue(mockPluginInstance);
await plugin.init();
await plugin.setup({} as any, {} as any);
const startDependenciesCheck = plugin.startDependencies.then((resolvedStartDeps) => {
@ -429,7 +449,7 @@ test('`stop` fails if plugin is not set up', async () => {
});
const mockPluginInstance = { setup: jest.fn(), stop: jest.fn() };
mockPluginInitializer.mockReturnValue(mockPluginInstance);
mockPluginInitializer.mockResolvedValue(mockPluginInstance);
await expect(plugin.stop()).rejects.toMatchInlineSnapshot(
`[Error: Plugin "some-plugin-id" can't be stopped since it isn't set up.]`
@ -453,7 +473,8 @@ test('`stop` does nothing if plugin does not define `stop` function', async () =
}),
});
mockPluginInitializer.mockReturnValue({ setup: jest.fn() });
mockPluginInitializer.mockResolvedValue({ setup: jest.fn() });
await plugin.init();
await plugin.setup(createPluginSetupContext({ deps: setupDeps, plugin, runtimeResolver }), {});
await expect(plugin.stop()).resolves.toBeUndefined();
@ -476,7 +497,8 @@ test('`stop` calls `stop` defined by the plugin instance', async () => {
});
const mockPluginInstance = { setup: jest.fn(), stop: jest.fn() };
mockPluginInitializer.mockReturnValue(mockPluginInstance);
mockPluginInitializer.mockResolvedValue(mockPluginInstance);
await plugin.init();
await plugin.setup(createPluginSetupContext({ deps: setupDeps, plugin, runtimeResolver }), {});
await expect(plugin.stop()).resolves.toBeUndefined();

View file

@ -87,6 +87,10 @@ export class PluginWrapper<
this.includesUiPlugin = params.manifest.ui;
}
public async init() {
this.instance = await this.createPluginInstance();
}
/**
* Instantiates plugin and calls `setup` function exposed by the plugin initializer.
* @param setupContext Context that consists of various core services tailored specifically
@ -98,7 +102,9 @@ export class PluginWrapper<
setupContext: CoreSetup<TPluginsStart> | CorePreboot,
plugins: TPluginsSetup
): TSetup | Promise<TSetup> {
this.instance = this.createPluginInstance();
if (!this.instance) {
throw new Error('The plugin is not initialized. Call the init method first.');
}
if (this.isPrebootPluginInstance(this.instance)) {
return this.instance.setup(setupContext as CorePreboot, plugins);
@ -170,7 +176,7 @@ export class PluginWrapper<
return configDescriptor;
}
private createPluginInstance() {
private async createPluginInstance() {
this.log.debug('Initializing plugin');
// eslint-disable-next-line @typescript-eslint/no-var-requires
@ -186,7 +192,7 @@ export class PluginWrapper<
throw new Error(`Definition of plugin "${this.name}" should be a function (${this.path}).`);
}
const instance = initializer(this.initializerContext);
const instance = await initializer(this.initializerContext);
if (!instance || typeof instance !== 'object') {
throw new Error(
`Initializer for plugin "${

View file

@ -43,7 +43,7 @@ function createPlugin(
type?: PluginType;
} = {}
): PluginWrapper<any, any> {
return new PluginWrapper<any, any>({
const plugin = new PluginWrapper<any, any>({
path: 'some-path',
manifest: {
id,
@ -62,6 +62,8 @@ function createPlugin(
opaqueId: Symbol(id),
initializerContext: { logger } as any,
});
jest.spyOn(plugin, 'init').mockResolvedValue();
return plugin;
}
const prebootDeps = coreInternalLifecycleMock.createInternalPreboot();
@ -602,7 +604,10 @@ describe('setup', () => {
mockCreatePluginSetupContext.mockImplementation(() => ({}));
const promise = pluginsSystem.setupPlugins(setupDeps);
jest.runAllTimers();
process.nextTick(() => {
// let the await init go through. then simulate the timeout
jest.runAllTimers();
});
await expect(promise).rejects.toMatchInlineSnapshot(
`[Error: Setup lifecycle of "timeout-setup" plugin wasn't completed in 10sec. Consider disabling the plugin and re-start.]`

View file

@ -131,6 +131,7 @@ export class PluginsSystem<T extends PluginType> {
});
}
await plugin.init();
let contract: unknown;
const contractOrPromise = plugin.setup(pluginSetupContext, pluginDepContracts);
if (isPromise(contractOrPromise)) {

View file

@ -473,7 +473,8 @@ export type PluginInitializer<
TPluginsStart extends object = object
> = (
core: PluginInitializerContext
) =>
) => Promise<
| Plugin<TSetup, TStart, TPluginsSetup, TPluginsStart>
| PrebootPlugin<TSetup, TPluginsSetup>
| AsyncPlugin<TSetup, TStart, TPluginsSetup, TPluginsStart>;
| AsyncPlugin<TSetup, TStart, TPluginsSetup, TPluginsStart>
>;

View file

@ -1,11 +1,10 @@
import { PluginInitializerContext } from '<%= importFromRoot('src/core/server') %>';
import { <%= upperCamelCase(name) %>Plugin } from './plugin';
// This exports static code and TypeScript types,
// as well as, Kibana Platform `plugin()` initializer.
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { <%= upperCamelCase(name) %>Plugin } = await import('./plugin');
return new <%= upperCamelCase(name) %>Plugin(initializerContext);
}

View file

@ -7,9 +7,10 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { AdvancedSettingsServerPlugin } from './plugin';
export { config } from './config';
export const plugin = (initContext: PluginInitializerContext) =>
new AdvancedSettingsServerPlugin(initContext);
export const plugin = async (initContext: PluginInitializerContext) => {
const { AdvancedSettingsServerPlugin } = await import('./plugin');
return new AdvancedSettingsServerPlugin(initContext);
};

View file

@ -7,10 +7,10 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { BfetchServerPlugin } from './plugin';
export type { BfetchServerSetup, BfetchServerStart, BatchProcessingRouteParams } from './plugin';
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { BfetchServerPlugin } = await import('./plugin');
return new BfetchServerPlugin(initializerContext);
}

View file

@ -31,7 +31,7 @@ const createPlugin = async () => {
const pluginInitializerContext = coreMock.createPluginInitializerContext();
const coreSetup = coreMock.createSetup();
const coreStart = coreMock.createStart();
const plugin = pluginInitializer(pluginInitializerContext);
const plugin = await pluginInitializer(pluginInitializerContext);
const setup = await plugin.setup(coreSetup, {});
return {

View file

@ -6,8 +6,7 @@
* Side Public License, v 1.
*/
import { ExpressionGaugePlugin } from './plugin';
export function plugin() {
export async function plugin() {
const { ExpressionGaugePlugin } = await import('./plugin');
return new ExpressionGaugePlugin();
}

View file

@ -6,8 +6,7 @@
* Side Public License, v 1.
*/
import { ExpressionHeatmapPlugin } from './plugin';
export function plugin() {
export async function plugin() {
const { ExpressionHeatmapPlugin } = await import('./plugin');
return new ExpressionHeatmapPlugin();
}

View file

@ -6,8 +6,7 @@
* Side Public License, v 1.
*/
import { ExpressionLegacyMetricPlugin } from './plugin';
export function plugin() {
export async function plugin() {
const { ExpressionLegacyMetricPlugin } = await import('./plugin');
return new ExpressionLegacyMetricPlugin();
}

View file

@ -6,8 +6,7 @@
* Side Public License, v 1.
*/
import { ExpressionMetricPlugin } from './plugin';
export function plugin() {
export async function plugin() {
const { ExpressionMetricPlugin } = await import('./plugin');
return new ExpressionMetricPlugin();
}

View file

@ -6,9 +6,8 @@
* Side Public License, v 1.
*/
import { ExpressionPartitionVisPlugin } from './plugin';
export function plugin() {
export async function plugin() {
const { ExpressionPartitionVisPlugin } = await import('./plugin');
return new ExpressionPartitionVisPlugin();
}

View file

@ -6,8 +6,7 @@
* Side Public License, v 1.
*/
import { ExpressionTagcloudPlugin } from './plugin';
export function plugin() {
export async function plugin() {
const { ExpressionTagcloudPlugin } = await import('./plugin');
return new ExpressionTagcloudPlugin();
}

View file

@ -6,9 +6,8 @@
* Side Public License, v 1.
*/
import { ExpressionXyPlugin } from './plugin';
export function plugin() {
export async function plugin() {
const { ExpressionXyPlugin } = await import('./plugin');
return new ExpressionXyPlugin();
}

View file

@ -6,8 +6,10 @@
* Side Public License, v 1.
*/
import { ChartsServerPlugin } from './plugin';
export type { CustomPaletteArguments, CustomPaletteState, SystemPaletteArguments } from '../common';
export { paletteIds } from '../common';
export const plugin = () => new ChartsServerPlugin();
export const plugin = async () => {
const { ChartsServerPlugin } = await import('./plugin');
return new ChartsServerPlugin();
};

View file

@ -8,10 +8,12 @@
import { PluginInitializerContext } from '@kbn/core/server';
import { ConsoleServerPlugin } from './plugin';
export type { ConsoleSetup, ConsoleStart } from './types';
export { config } from './config';
export const plugin = (ctx: PluginInitializerContext) => new ConsoleServerPlugin(ctx);
export const plugin = async (ctx: PluginInitializerContext) => {
const { ConsoleServerPlugin } = await import('./plugin');
return new ConsoleServerPlugin(ctx);
};

View file

@ -7,9 +7,8 @@
*/
import type { PluginInitializerContext } from '@kbn/core/server';
import { ContentManagementPlugin } from './plugin';
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { ContentManagementPlugin } = await import('./plugin');
return new ContentManagementPlugin(initializerContext);
}

View file

@ -6,8 +6,9 @@
* Side Public License, v 1.
*/
import { ControlsPlugin } from './plugin';
export const plugin = () => new ControlsPlugin();
export const plugin = async () => {
const { ControlsPlugin } = await import('./plugin');
return new ControlsPlugin();
};
export { initializeControlGroupTelemetry } from './control_group/control_group_telemetry';

View file

@ -8,12 +8,12 @@
import { schema } from '@kbn/config-schema';
import { PluginInitializerContext } from '@kbn/core/server';
import { CustomIntegrationsPlugin } from './plugin';
// This exports static code and TypeScript types,
// as well as, Kibana Platform `plugin()` initializer.
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { CustomIntegrationsPlugin } = await import('./plugin');
return new CustomIntegrationsPlugin(initializerContext);
}

View file

@ -7,7 +7,6 @@
*/
import { PluginInitializerContext, PluginConfigDescriptor } from '@kbn/core/server';
import { DashboardPlugin } from './plugin';
import { configSchema, ConfigSchema } from '../config';
export const config: PluginConfigDescriptor<ConfigSchema> = {
@ -20,7 +19,8 @@ export const config: PluginConfigDescriptor<ConfigSchema> = {
// This exports static code and TypeScript types,
// as well as, Kibana Platform `plugin()` initializer.
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { DashboardPlugin } = await import('./plugin');
return new DashboardPlugin(initializerContext);
}

View file

@ -8,7 +8,7 @@
import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server';
import { ConfigSchema, configSchema } from '../config';
import { DataServerPlugin, DataPluginSetup, DataPluginStart } from './plugin';
import type { DataServerPlugin, DataPluginSetup, DataPluginStart } from './plugin';
export { getEsQueryConfig, DEFAULT_QUERY_LANGUAGE } from '../common';
@ -101,12 +101,13 @@ export { getTime, parseInterval } from '../common';
* @public
*/
export function plugin(initializerContext: PluginInitializerContext<ConfigSchema>) {
export async function plugin(initializerContext: PluginInitializerContext<ConfigSchema>) {
const { DataServerPlugin } = await import('./plugin');
return new DataServerPlugin(initializerContext);
}
export type { DataPluginSetup as PluginSetup, DataPluginStart as PluginStart };
export { DataServerPlugin as Plugin };
export type { DataServerPlugin as Plugin };
export const config: PluginConfigDescriptor<ConfigSchema> = {
deprecations: configDeprecationProvider,

View file

@ -6,8 +6,8 @@
* Side Public License, v 1.
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { IndexPatternPlugin } from './plugin';
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { IndexPatternPlugin } = await import('./plugin');
return new IndexPatternPlugin(initializerContext);
}

View file

@ -7,8 +7,8 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { IndexPatternManagementPlugin } from './plugin';
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { IndexPatternManagementPlugin } = await import('./plugin');
return new IndexPatternManagementPlugin(initializerContext);
}

View file

@ -19,7 +19,7 @@ export type {
} from './types';
import { PluginInitializerContext } from '@kbn/core/server';
import { DataViewsServerPlugin } from './plugin';
import type { DataViewsServerPlugin } from './plugin';
import { DataViewsServerPluginSetup, DataViewsServerPluginStart } from './types';
export type { dataViewsServiceFactory } from './data_views_service_factory';
@ -28,7 +28,8 @@ export type { dataViewsServiceFactory } from './data_views_service_factory';
* @public
*/
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { DataViewsServerPlugin } = await import('./plugin');
return new DataViewsServerPlugin(initializerContext);
}
@ -36,7 +37,7 @@ export type {
DataViewsServerPluginSetup as PluginSetup,
DataViewsServerPluginStart as PluginStart,
};
export { DataViewsServerPlugin as Plugin };
export type { DataViewsServerPlugin as Plugin };
const configSchema = schema.object({
scriptedFieldsEnabled: schema.conditional(

View file

@ -7,9 +7,10 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { DevToolsServerPlugin } from './plugin';
export { config } from './config';
export const plugin = (initContext: PluginInitializerContext) =>
new DevToolsServerPlugin(initContext);
export const plugin = async (initContext: PluginInitializerContext) => {
const { DevToolsServerPlugin } = await import('./plugin');
return new DevToolsServerPlugin(initContext);
};

View file

@ -9,7 +9,6 @@
import { KibanaRequest } from '@kbn/core/server';
import { DataPluginStart } from '@kbn/data-plugin/server/plugin';
import { ColumnsFromLocatorFn, SearchSourceFromLocatorFn, TitleFromLocatorFn } from './locator';
import { DiscoverServerPlugin } from './plugin';
export interface DiscoverServerPluginStartDeps {
data: DataPluginStart;
@ -29,4 +28,7 @@ export interface DiscoverServerPluginStart {
locator: DiscoverServerPluginLocatorService;
}
export const plugin = () => new DiscoverServerPlugin();
export const plugin = async () => {
const { DiscoverServerPlugin } = await import('./plugin');
return new DiscoverServerPlugin();
};

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import { EmbeddableServerPlugin, EmbeddableSetup, EmbeddableStart } from './plugin';
import { EmbeddableSetup, EmbeddableStart } from './plugin';
export type { EmbeddableSetup, EmbeddableStart };
@ -14,4 +14,7 @@ export type { EnhancementRegistryDefinition } from './types';
export type { EmbeddableRegistryDefinition } from '../common';
export const plugin = () => new EmbeddableServerPlugin();
export const plugin = async () => {
const { EmbeddableServerPlugin } = await import('./plugin');
return new EmbeddableServerPlugin();
};

View file

@ -9,7 +9,7 @@
export { handleEsError, parseEsError } from './errors';
/** dummy plugin*/
export function plugin() {
export async function plugin() {
return new (class EsUiSharedPlugin {
setup() {}
start() {}

View file

@ -7,7 +7,8 @@
*/
import { PluginInitializerContext } from '@kbn/core-plugins-server';
import { EventAnnotationServerPlugin } from './plugin';
export const plugin = (initializerContext: PluginInitializerContext) =>
new EventAnnotationServerPlugin(initializerContext);
export const plugin = async (initializerContext: PluginInitializerContext) => {
const { EventAnnotationServerPlugin } = await import('./plugin');
return new EventAnnotationServerPlugin(initializerContext);
};

View file

@ -6,10 +6,9 @@
* Side Public License, v 1.
*/
import { ExpressionImagePlugin } from './plugin';
export type { ExpressionImagePluginSetup, ExpressionImagePluginStart } from './plugin';
export function plugin() {
export async function plugin() {
const { ExpressionImagePlugin } = await import('./plugin');
return new ExpressionImagePlugin();
}

View file

@ -6,10 +6,9 @@
* Side Public License, v 1.
*/
import { ExpressionMetricPlugin } from './plugin';
export type { ExpressionMetricPluginSetup, ExpressionMetricPluginStart } from './plugin';
export function plugin() {
export async function plugin() {
const { ExpressionMetricPlugin } = await import('./plugin');
return new ExpressionMetricPlugin();
}

View file

@ -6,10 +6,9 @@
* Side Public License, v 1.
*/
import { ExpressionRepeatImagePlugin } from './plugin';
export type { ExpressionRepeatImagePluginSetup, ExpressionRepeatImagePluginStart } from './plugin';
export function plugin() {
export async function plugin() {
const { ExpressionRepeatImagePlugin } = await import('./plugin');
return new ExpressionRepeatImagePlugin();
}

View file

@ -6,10 +6,9 @@
* Side Public License, v 1.
*/
import { ExpressionRevealImagePlugin } from './plugin';
export type { ExpressionRevealImagePluginSetup, ExpressionRevealImagePluginStart } from './plugin';
export function plugin() {
export async function plugin() {
const { ExpressionRevealImagePlugin } = await import('./plugin');
return new ExpressionRevealImagePlugin();
}

View file

@ -6,10 +6,9 @@
* Side Public License, v 1.
*/
import { ExpressionShapePlugin } from './plugin';
export type { ExpressionShapePluginSetup, ExpressionShapePluginStart } from './plugin';
export function plugin() {
export async function plugin() {
const { ExpressionShapePlugin } = await import('./plugin');
return new ExpressionShapePlugin();
}

View file

@ -7,13 +7,14 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { ExpressionsServerPlugin } from './plugin';
import type { ExpressionsServerPlugin } from './plugin';
export type { ExpressionsServerSetup, ExpressionsServerStart } from './plugin';
// Kibana Platform.
export { ExpressionsServerPlugin as Plugin };
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { ExpressionsServerPlugin } = await import('./plugin');
return new ExpressionsServerPlugin(initializerContext);
}

View file

@ -41,7 +41,7 @@ const createPlugin = async () => {
const pluginInitializerContext = coreMock.createPluginInitializerContext();
const coreSetup = coreMock.createSetup();
const coreStart = coreMock.createStart();
const plugin = pluginInitializer(pluginInitializerContext);
const plugin = await pluginInitializer(pluginInitializerContext);
const setup = await plugin.setup(coreSetup);
return {

View file

@ -7,10 +7,10 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { FieldFormatsPlugin } from './plugin';
export { DateFormat, DateNanosFormat } from './lib/converters';
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { FieldFormatsPlugin } = await import('./plugin');
return new FieldFormatsPlugin(initializerContext);
}

View file

@ -7,7 +7,6 @@
*/
import type { PluginInitializerContext } from '@kbn/core/server';
import { FilesPlugin } from './plugin';
export type {
FileClient,
@ -44,6 +43,7 @@ export type {
} from './file_service';
export type { FileServiceFactory } from './file_service/file_service_factory';
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { FilesPlugin } = await import('./plugin');
return new FilesPlugin(initializerContext);
}

View file

@ -7,9 +7,9 @@
*/
import type { PluginInitializerContext } from '@kbn/core/server';
import { FtrApisPlugin } from './plugin';
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { FtrApisPlugin } = await import('./plugin');
return new FtrApisPlugin(initializerContext);
}

View file

@ -7,9 +7,9 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { GuidedOnboardingPlugin } from './plugin';
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { GuidedOnboardingPlugin } = await import('./plugin');
return new GuidedOnboardingPlugin(initializerContext);
}

View file

@ -23,7 +23,6 @@ export type {
ScopedTutorialContextFactory,
} from './services';
import { PluginInitializerContext, PluginConfigDescriptor } from '@kbn/core/server';
import { HomeServerPlugin } from './plugin';
import { configSchema, ConfigSchema } from '../config';
export const config: PluginConfigDescriptor<ConfigSchema> = {
@ -33,6 +32,9 @@ export const config: PluginConfigDescriptor<ConfigSchema> = {
schema: configSchema,
};
export const plugin = (initContext: PluginInitializerContext) => new HomeServerPlugin(initContext);
export const plugin = async (initContext: PluginInitializerContext) => {
const { HomeServerPlugin } = await import('./plugin');
return new HomeServerPlugin(initContext);
};
export { INSTRUCTION_VARIANT } from '../common/instruction_variant';

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import { CoreSetup, PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server';
import type { CoreSetup, PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server';
import type { VisualizationsServerSetup } from '@kbn/visualizations-plugin/server';
import { configSchema, InputControlConfig } from '../config';
@ -22,7 +22,7 @@ interface PluginSetupDependencies {
visualizations: VisualizationsServerSetup;
}
export const plugin = (initializerContext: PluginInitializerContext) => ({
export const plugin = async (initializerContext: PluginInitializerContext) => ({
setup(core: CoreSetup, plugins: PluginSetupDependencies) {
const { readOnly } = initializerContext.config.get<InputControlConfig>();
if (readOnly) {

View file

@ -14,12 +14,14 @@ import type {
} from '@kbn/core/server';
import { ConfigSchema } from './config';
import { InteractiveSetupPlugin } from './plugin';
export const config: PluginConfigDescriptor<TypeOf<typeof ConfigSchema>> = {
schema: ConfigSchema,
};
export const plugin: PluginInitializer<void, never> = (
export const plugin: PluginInitializer<void, never> = async (
initializerContext: PluginInitializerContext
) => new InteractiveSetupPlugin(initializerContext);
) => {
const { InteractiveSetupPlugin } = await import('./plugin');
return new InteractiveSetupPlugin(initializerContext);
};

View file

@ -7,11 +7,11 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { KibanaUsageCollectionPlugin } from './plugin';
// This exports static code and TypeScript types,
// as well as, Kibana Platform `plugin()` initializer.
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { KibanaUsageCollectionPlugin } = await import('./plugin');
return new KibanaUsageCollectionPlugin(initializerContext);
}

View file

@ -17,9 +17,10 @@ import {
} from '@kbn/usage-collection-plugin/server/mocks';
import { cloudDetailsMock, registerEbtCountersMock } from './plugin.test.mocks';
import { plugin } from '.';
import type { KibanaUsageCollectionPlugin } from './plugin';
describe('kibana_usage_collection', () => {
const pluginInstance = plugin(coreMock.createPluginInitializerContext({}));
let pluginInstance: KibanaUsageCollectionPlugin;
const usageCollectors: CollectorOptions[] = [];
@ -33,6 +34,10 @@ describe('kibana_usage_collection', () => {
return createUsageCollectionSetupMock().makeStatsCollector(opts);
});
beforeAll(async () => {
pluginInstance = await plugin(coreMock.createPluginInitializerContext({}));
});
beforeEach(() => {
cloudDetailsMock.mockClear();
});

View file

@ -7,6 +7,8 @@
*/
import { PluginInitializerContext } from '@kbn/core-plugins-server';
import { LinksServerPlugin } from './plugin';
export const plugin = (initContext: PluginInitializerContext) => new LinksServerPlugin(initContext);
export const plugin = async (initContext: PluginInitializerContext) => {
const { LinksServerPlugin } = await import('./plugin');
return new LinksServerPlugin(initContext);
};

View file

@ -7,8 +7,9 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { ManagementServerPlugin } from './plugin';
export { config } from './config';
export const plugin = (initContext: PluginInitializerContext) =>
new ManagementServerPlugin(initContext);
export const plugin = async (initContext: PluginInitializerContext) => {
const { ManagementServerPlugin } = await import('./plugin');
return new ManagementServerPlugin(initContext);
};

View file

@ -6,17 +6,10 @@
* Side Public License, v 1.
*/
import {
CoreSetup,
PluginInitializerContext,
Plugin,
PluginConfigDescriptor,
} from '@kbn/core/server';
import { LicensingPluginSetup } from '@kbn/licensing-plugin/server';
import { ILicense } from '@kbn/licensing-plugin/common/types';
import { PluginInitializerContext, PluginConfigDescriptor } from '@kbn/core/server';
import { MapConfig, mapConfigSchema } from '../config';
import { EMSSettings, LICENSE_CHECK_ID } from '../common';
export type { EMSSettings } from '../common';
export type { MapsEmsPluginServerSetup } from './plugin';
export const config: PluginConfigDescriptor<MapConfig> = {
exposeToBrowser: {
@ -32,48 +25,7 @@ export const config: PluginConfigDescriptor<MapConfig> = {
schema: mapConfigSchema,
};
export interface MapsEmsPluginServerSetup {
config: MapConfig;
createEMSSettings: () => EMSSettings;
}
interface MapsEmsSetupServerDependencies {
licensing?: LicensingPluginSetup;
}
export class MapsEmsPlugin implements Plugin<MapsEmsPluginServerSetup> {
readonly _initializerContext: PluginInitializerContext<MapConfig>;
constructor(initializerContext: PluginInitializerContext<MapConfig>) {
this._initializerContext = initializerContext;
}
public setup(core: CoreSetup, plugins: MapsEmsSetupServerDependencies) {
const mapConfig = this._initializerContext.config.get();
let isEnterprisePlus = false;
if (plugins.licensing) {
function updateLicenseState(license: ILicense) {
const enterprise = license.check(LICENSE_CHECK_ID, 'enterprise');
isEnterprisePlus = enterprise.state === 'valid';
}
plugins.licensing.refresh().then(updateLicenseState);
plugins.licensing.license$.subscribe(updateLicenseState);
}
return {
config: mapConfig,
createEMSSettings: () => {
return new EMSSettings(mapConfig, () => {
return isEnterprisePlus;
});
},
};
}
public start() {}
}
export const plugin = (initializerContext: PluginInitializerContext) =>
new MapsEmsPlugin(initializerContext);
export const plugin = async (initializerContext: PluginInitializerContext) => {
const { MapsEmsPlugin } = await import('./plugin');
return new MapsEmsPlugin(initializerContext);
};

View file

@ -0,0 +1,56 @@
/*
* 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 { ILicense, LicensingPluginSetup } from '@kbn/licensing-plugin/server';
import { Plugin, PluginInitializerContext } from '@kbn/core-plugins-server';
import { CoreSetup } from '@kbn/core-lifecycle-server';
import { MapConfig } from '../config';
import { LICENSE_CHECK_ID, EMSSettings } from '../common';
export interface MapsEmsPluginServerSetup {
config: MapConfig;
createEMSSettings: () => EMSSettings;
}
interface MapsEmsSetupServerDependencies {
licensing?: LicensingPluginSetup;
}
export class MapsEmsPlugin implements Plugin<MapsEmsPluginServerSetup> {
readonly _initializerContext: PluginInitializerContext<MapConfig>;
constructor(initializerContext: PluginInitializerContext<MapConfig>) {
this._initializerContext = initializerContext;
}
public setup(core: CoreSetup, plugins: MapsEmsSetupServerDependencies) {
const mapConfig = this._initializerContext.config.get();
let isEnterprisePlus = false;
if (plugins.licensing) {
function updateLicenseState(license: ILicense) {
const enterprise = license.check(LICENSE_CHECK_ID, 'enterprise');
isEnterprisePlus = enterprise.state === 'valid';
}
plugins.licensing.refresh().then(updateLicenseState);
plugins.licensing.license$.subscribe(updateLicenseState);
}
return {
config: mapConfig,
createEMSSettings: () => {
return new EMSSettings(mapConfig, () => {
return isEnterprisePlus;
});
},
};
}
public start() {}
}

View file

@ -11,6 +11,8 @@
"@kbn/config-schema",
"@kbn/config",
"@kbn/core-http-common",
"@kbn/core-plugins-server",
"@kbn/core-lifecycle-server",
],
"exclude": [
"target/**/*",

View file

@ -7,7 +7,6 @@
*/
import { PluginConfigDescriptor } from '@kbn/core/server';
import { NewsfeedPlugin } from './plugin';
import { configSchema, NewsfeedConfigType } from './config';
export const config: PluginConfigDescriptor<NewsfeedConfigType> = {
@ -19,6 +18,7 @@ export const config: PluginConfigDescriptor<NewsfeedConfigType> = {
},
};
export function plugin() {
export async function plugin() {
const { NewsfeedPlugin } = await import('./plugin');
return new NewsfeedPlugin();
}

View file

@ -6,7 +6,8 @@
* Side Public License, v 1.
*/
import { PresentationUtilPlugin } from './plugin';
export { SETTING_CATEGORY } from './ui_settings';
export const plugin = () => new PresentationUtilPlugin();
export const plugin = async () => {
const { PresentationUtilPlugin } = await import('./plugin');
return new PresentationUtilPlugin();
};

View file

@ -6,6 +6,7 @@
* Side Public License, v 1.
*/
import { SavedObjectsServerPlugin } from './plugin';
export const plugin = () => new SavedObjectsServerPlugin();
export const plugin = async () => {
const { SavedObjectsServerPlugin } = await import('./plugin');
return new SavedObjectsServerPlugin();
};

View file

@ -7,10 +7,11 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { SavedObjectsManagementPlugin } from './plugin';
export const plugin = (context: PluginInitializerContext) =>
new SavedObjectsManagementPlugin(context);
export const plugin = async (context: PluginInitializerContext) => {
const { SavedObjectsManagementPlugin } = await import('./plugin');
return new SavedObjectsManagementPlugin(context);
};
export type {
SavedObjectsManagementPluginSetup,

View file

@ -7,9 +7,10 @@
*/
import type { PluginInitializerContext } from '@kbn/core-plugins-server';
import { SavedSearchServerPlugin } from './plugin';
export { getSavedSearch } from './services/saved_searches';
export const plugin = (initContext: PluginInitializerContext) =>
new SavedSearchServerPlugin(initContext);
export const plugin = async (initContext: PluginInitializerContext) => {
const { SavedSearchServerPlugin } = await import('./plugin');
return new SavedSearchServerPlugin(initContext);
};

View file

@ -6,8 +6,6 @@
* Side Public License, v 1.
*/
import { ScreenshotModePlugin } from './plugin';
export {
setScreenshotModeEnabled,
KBN_SCREENSHOT_MODE_HEADER,
@ -20,6 +18,7 @@ export type {
ScreenshotModePluginStart,
} from './types';
export function plugin() {
export async function plugin() {
const { ScreenshotModePlugin } = await import('./plugin');
return new ScreenshotModePlugin();
}

View file

@ -7,12 +7,12 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { SharePlugin } from './plugin';
export type { SharePluginSetup, SharePluginStart } from './plugin';
export { CSV_QUOTE_VALUES_SETTING, CSV_SEPARATOR_SETTING } from '../common/constants';
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { SharePlugin } = await import('./plugin');
return new SharePlugin(initializerContext);
}

View file

@ -8,13 +8,14 @@
import type { PluginInitializerContext } from '@kbn/core/server';
import type { TelemetryConfigType } from './config';
import { TelemetryPlugin } from './plugin';
export { config } from './config';
export type { TelemetryPluginSetup, TelemetryPluginStart } from './plugin';
export const plugin = (initializerContext: PluginInitializerContext<TelemetryConfigType>) =>
new TelemetryPlugin(initializerContext);
export const plugin = async (initializerContext: PluginInitializerContext<TelemetryConfigType>) => {
const { TelemetryPlugin } = await import('./plugin');
return new TelemetryPlugin(initializerContext);
};
export { getClusterUuids, getLocalStats } from './telemetry_collection';
export type {

View file

@ -7,12 +7,12 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { TelemetryCollectionManagerPlugin } from './plugin';
// This exports static code and TypeScript types,
// as well as, Kibana Platform `plugin()` initializer.
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { TelemetryCollectionManagerPlugin } = await import('./plugin');
return new TelemetryCollectionManagerPlugin(initializerContext);
}

View file

@ -6,14 +6,13 @@
* Side Public License, v 1.
*/
import { AdvancedUiActionsServerPlugin } from './plugin';
export function plugin() {
export async function plugin() {
const { AdvancedUiActionsServerPlugin } = await import('./plugin');
return new AdvancedUiActionsServerPlugin();
}
export { AdvancedUiActionsServerPlugin as Plugin };
export type {
AdvancedUiActionsServerPlugin as Plugin,
SetupContract as AdvancedUiActionsSetup,
StartContract as AdvancedUiActionsStart,
} from './plugin';

View file

@ -8,7 +8,7 @@
import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server';
import { ConfigSchema, configSchema } from '../config';
import {
import type {
UnifiedSearchServerPlugin,
UnifiedSearchServerPluginSetup,
UnifiedSearchServerPluginStart,
@ -21,7 +21,8 @@ import { autocompleteConfigDeprecationProvider } from './config_deprecations';
* @public
*/
export function plugin(initializerContext: PluginInitializerContext<ConfigSchema>) {
export async function plugin(initializerContext: PluginInitializerContext<ConfigSchema>) {
const { UnifiedSearchServerPlugin } = await import('./plugin');
return new UnifiedSearchServerPlugin(initializerContext);
}
@ -29,7 +30,7 @@ export type {
UnifiedSearchServerPluginSetup as PluginSetup,
UnifiedSearchServerPluginStart as PluginStart,
};
export { UnifiedSearchServerPlugin as Plugin };
export type { UnifiedSearchServerPlugin as Plugin };
export const config: PluginConfigDescriptor<ConfigSchema> = {
deprecations: autocompleteConfigDeprecationProvider,

View file

@ -7,7 +7,6 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { UsageCollectionPlugin } from './plugin';
export type {
Collector,
@ -31,5 +30,7 @@ export { USAGE_COUNTERS_SAVED_OBJECT_TYPE, serializeCounterKey } from './usage_c
export type { UsageCollectionSetup } from './plugin';
export { config } from './config';
export const plugin = (initializerContext: PluginInitializerContext) =>
new UsageCollectionPlugin(initializerContext);
export const plugin = async (initializerContext: PluginInitializerContext) => {
const { UsageCollectionPlugin } = await import('./plugin');
return new UsageCollectionPlugin(initializerContext);
};

View file

@ -17,7 +17,7 @@ export const config: PluginConfigDescriptor<ConfigSchema> = {
],
};
export const plugin = () => ({
export const plugin = async () => ({
setup() {},
start() {},
});

View file

@ -8,7 +8,6 @@
import { PluginInitializerContext, PluginConfigDescriptor } from '@kbn/core/server';
import { configSchema, GaugeConfig } from '../config';
import { VisTypeGaugeServerPlugin } from './plugin';
export const config: PluginConfigDescriptor<GaugeConfig> = {
exposeToBrowser: {
@ -17,5 +16,7 @@ export const config: PluginConfigDescriptor<GaugeConfig> = {
schema: configSchema,
};
export const plugin = (initializerContext: PluginInitializerContext) =>
new VisTypeGaugeServerPlugin(initializerContext);
export const plugin = async (initializerContext: PluginInitializerContext) => {
const { VisTypeGaugeServerPlugin } = await import('./plugin');
return new VisTypeGaugeServerPlugin(initializerContext);
};

View file

@ -8,7 +8,6 @@
import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server';
import { configSchema, HeatmapConfig } from '../config';
import { VisTypeHeatmapServerPlugin } from './plugin';
export const config: PluginConfigDescriptor<HeatmapConfig> = {
exposeToBrowser: {
@ -17,5 +16,7 @@ export const config: PluginConfigDescriptor<HeatmapConfig> = {
schema: configSchema,
};
export const plugin = (initializerContext: PluginInitializerContext) =>
new VisTypeHeatmapServerPlugin(initializerContext);
export const plugin = async (initializerContext: PluginInitializerContext) => {
const { VisTypeHeatmapServerPlugin } = await import('./plugin');
return new VisTypeHeatmapServerPlugin(initializerContext);
};

View file

@ -22,7 +22,7 @@ interface PluginSetupDependencies {
visualizations: VisualizationsServerSetup;
}
export const plugin = (initializerContext: PluginInitializerContext) => ({
export const plugin = async (initializerContext: PluginInitializerContext) => ({
setup(core: CoreSetup, plugins: PluginSetupDependencies) {
const { readOnly } = initializerContext.config.get<MetricConfig>();
if (readOnly) {

View file

@ -8,7 +8,6 @@
import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server';
import { configSchema, PieConfig } from '../config';
import { VisTypePieServerPlugin } from './plugin';
export const config: PluginConfigDescriptor<PieConfig> = {
exposeToBrowser: {
@ -17,5 +16,7 @@ export const config: PluginConfigDescriptor<PieConfig> = {
schema: configSchema,
};
export const plugin = (initializerContext: PluginInitializerContext) =>
new VisTypePieServerPlugin(initializerContext);
export const plugin = async (initializerContext: PluginInitializerContext) => {
const { VisTypePieServerPlugin } = await import('./plugin');
return new VisTypePieServerPlugin(initializerContext);
};

View file

@ -8,7 +8,6 @@
import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server';
import { configSchema, TimelionConfig } from '../config';
import { TimelionPlugin } from './plugin';
export const config: PluginConfigDescriptor<TimelionConfig> = {
exposeToBrowser: {
@ -18,5 +17,7 @@ export const config: PluginConfigDescriptor<TimelionConfig> = {
deprecations: ({ unused }) => [unused('graphiteUrls', { level: 'warning' })],
};
export const plugin = (initializerContext: PluginInitializerContext) =>
new TimelionPlugin(initializerContext);
export const plugin = async (initializerContext: PluginInitializerContext) => {
const { TimelionPlugin } = await import('./plugin');
return new TimelionPlugin(initializerContext);
};

View file

@ -8,7 +8,6 @@
import { PluginInitializerContext, PluginConfigDescriptor } from '@kbn/core/server';
import { VisTypeTimeseriesConfig, config as configSchema } from '../config';
import { VisTypeTimeseriesPlugin } from './plugin';
export type { VisTypeTimeseriesSetup } from './plugin';
@ -21,7 +20,8 @@ export const config: PluginConfigDescriptor<VisTypeTimeseriesConfig> = {
schema: configSchema,
};
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { VisTypeTimeseriesPlugin } = await import('./plugin');
return new VisTypeTimeseriesPlugin(initializerContext);
}

View file

@ -9,7 +9,6 @@
import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server';
import { configSchema, ConfigSchema } from '../config';
import { VisTypeVegaPlugin } from './plugin';
export const config: PluginConfigDescriptor<ConfigSchema> = {
exposeToBrowser: {
@ -18,7 +17,8 @@ export const config: PluginConfigDescriptor<ConfigSchema> = {
schema: configSchema,
};
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { VisTypeVegaPlugin } = await import('./plugin');
return new VisTypeVegaPlugin(initializerContext);
}

View file

@ -8,7 +8,6 @@
import { PluginConfigDescriptor } from '@kbn/core/server';
import { configSchema, VislibConfig } from '../config';
import { VisTypeVislibServerPlugin } from './plugin';
export const config: PluginConfigDescriptor<VislibConfig> = {
exposeToBrowser: {
@ -17,4 +16,7 @@ export const config: PluginConfigDescriptor<VislibConfig> = {
schema: configSchema,
};
export const plugin = () => new VisTypeVislibServerPlugin();
export const plugin = async () => {
const { VisTypeVislibServerPlugin } = await import('./plugin');
return new VisTypeVislibServerPlugin();
};

View file

@ -8,7 +8,6 @@
import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server';
import { configSchema, XyConfig } from '../config';
import { VisTypeXYServerPlugin } from './plugin';
export const config: PluginConfigDescriptor<XyConfig> = {
exposeToBrowser: {
@ -17,5 +16,7 @@ export const config: PluginConfigDescriptor<XyConfig> = {
schema: configSchema,
};
export const plugin = (initializerContext: PluginInitializerContext) =>
new VisTypeXYServerPlugin(initializerContext);
export const plugin = async (initializerContext: PluginInitializerContext) => {
const { VisTypeXYServerPlugin } = await import('./plugin');
return new VisTypeXYServerPlugin(initializerContext);
};

View file

@ -7,12 +7,12 @@
*/
import { PluginInitializerContext } from '@kbn/core/server';
import { VisualizationsPlugin } from './plugin';
// This exports static code and TypeScript types,
// as well as, Kibana Platform `plugin()` initializer.
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
const { VisualizationsPlugin } = await import('./plugin');
return new VisualizationsPlugin(initializerContext);
}

View file

@ -8,4 +8,4 @@
import { AnalyticsFTRHelpers } from './plugin';
export const plugin = () => new AnalyticsFTRHelpers();
export const plugin = async () => new AnalyticsFTRHelpers();

View file

@ -8,4 +8,4 @@
import { AnalyticsPluginAPlugin } from './plugin';
export const plugin = () => new AnalyticsPluginAPlugin();
export const plugin = async () => new AnalyticsPluginAPlugin();

View file

@ -9,6 +9,6 @@
import type { PluginInitializerContext } from '@kbn/core/server';
import { NewsFeedSimulatorPlugin } from './plugin';
export function plugin(initializerContext: PluginInitializerContext) {
export async function plugin(initializerContext: PluginInitializerContext) {
return new NewsFeedSimulatorPlugin(initializerContext);
}

View file

@ -8,4 +8,4 @@
import { OpenTelemetryUsageTest } from './plugin';
export const plugin = () => new OpenTelemetryUsageTest();
export const plugin = async () => new OpenTelemetryUsageTest();

View file

@ -8,6 +8,6 @@
import { HealthGatewayStatusPlugin } from './plugin';
export function plugin() {
export async function plugin() {
return new HealthGatewayStatusPlugin();
}

View file

@ -11,7 +11,9 @@ import path from 'path';
import type { PluginInitializer, PrebootPlugin } from '@kbn/core/server';
export const plugin: PluginInitializer<void, never> = (initializerContext): PrebootPlugin => ({
export const plugin: PluginInitializer<void, never> = async (
initializerContext
): Promise<PrebootPlugin> => ({
setup: (core) => {
core.http.registerRoutes('', (router) => {
router.get(

View file

@ -9,4 +9,5 @@
import { PluginInitializer } from '@kbn/core/server';
import { TestPlugin, TestPluginSetup, TestPluginStart } from './plugin';
export const plugin: PluginInitializer<TestPluginSetup, TestPluginStart> = () => new TestPlugin();
export const plugin: PluginInitializer<TestPluginSetup, TestPluginStart> = async () =>
new TestPlugin();

View file

@ -9,5 +9,5 @@
import type { PluginInitializerContext } from '@kbn/core/server';
import { CorePluginInitializerContextPlugin } from './plugin';
export const plugin = (initializerContext: PluginInitializerContext) =>
export const plugin = async (initializerContext: PluginInitializerContext) =>
new CorePluginInitializerContextPlugin(initializerContext);

Some files were not shown because too many files have changed in this diff Show more