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 { 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; }