123456789101112131415161718192021222324252627282930 |
- import { GrafanaPlugin, PanelPluginMeta, PluginType } from '@grafana/data';
- import { importPanelPluginFromMeta } from './importPanelPlugin';
- import { getPluginSettings } from './pluginSettings';
- import { importAppPlugin, importDataSourcePlugin } from './plugin_loader';
- export async function loadPlugin(pluginId: string): Promise<GrafanaPlugin> {
- const info = await getPluginSettings(pluginId);
- let result: GrafanaPlugin | undefined;
- if (info.type === PluginType.app) {
- result = await importAppPlugin(info);
- }
- if (info.type === PluginType.datasource) {
- result = await importDataSourcePlugin(info);
- }
- if (info.type === PluginType.panel) {
- const panelPlugin = await importPanelPluginFromMeta(info as PanelPluginMeta);
- result = panelPlugin as unknown as GrafanaPlugin;
- }
- if (info.type === PluginType.renderer) {
- result = { meta: info } as GrafanaPlugin;
- }
- if (!result) {
- throw new Error('Unknown Plugin type: ' + info.type);
- }
- return result;
- }
|