2025-04-01 10:38:02 +09:00

170 lines
4.5 KiB
TypeScript

import { PluginLoadingStrategy, PluginMeta, PluginType } from '@grafana/data';
import { AppPluginConfig, setPluginComponentsHook, setPluginExtensionsHook } from '@grafana/runtime';
import { SupportedPlugin } from 'app/features/alerting/unified/types/pluginBridges';
import { mockPluginLinkExtension } from '../mocks';
export function setupPluginsExtensionsHook() {
setPluginExtensionsHook(() => ({
extensions: plugins.map((plugin) =>
mockPluginLinkExtension({
pluginId: plugin.id,
title: plugin.name,
path: `/a/${plugin.id}`,
})
),
isLoading: false,
}));
setPluginComponentsHook(() => ({
components: [],
isLoading: false,
}));
}
export const pluginMeta = {
[SupportedPlugin.Slo]: {
id: SupportedPlugin.Slo,
name: 'SLO dashboard',
type: PluginType.app,
enabled: true,
info: {
author: {
name: 'Grafana Labs',
url: '',
},
description: 'Create and manage Service Level Objectives',
links: [],
logos: {
small: 'public/plugins/grafana-slo-app/img/logo.svg',
large: 'public/plugins/grafana-slo-app/img/logo.svg',
},
screenshots: [],
version: 'local-dev',
updated: '2024-04-09',
},
module: 'public/plugins/grafana-slo-app/module.js',
baseUrl: 'public/plugins/grafana-slo-app',
} satisfies PluginMeta,
[SupportedPlugin.Irm]: {
id: SupportedPlugin.Irm,
name: 'Grafana IRM',
type: PluginType.app,
enabled: true,
info: {
author: { name: 'Grafana Labs', url: '' },
description: 'Grafana IRM',
links: [],
logos: {
small: 'public/plugins/grafana-irm-app/img/logo.svg',
large: 'public/plugins/grafana-irm-app/img/logo.svg',
},
screenshots: [],
version: 'local-dev',
updated: '2024-04-09',
},
module: 'public/plugins/grafana-irm-app/module.js',
baseUrl: 'public/plugins/grafana-irm-app',
} satisfies PluginMeta,
[SupportedPlugin.Incident]: {
id: SupportedPlugin.Incident,
name: 'Incident management',
type: PluginType.app,
enabled: true,
info: {
author: {
name: 'Grafana Labs',
url: '',
},
description: 'Incident management',
links: [],
logos: {
small: 'public/plugins/grafana-incident-app/img/logo.svg',
large: 'public/plugins/grafana-incident-app/img/logo.svg',
},
screenshots: [],
version: 'local-dev',
updated: '2024-04-09',
},
module: 'public/plugins/grafana-incident-app/module.js',
baseUrl: 'public/plugins/grafana-incident-app',
} satisfies PluginMeta,
[SupportedPlugin.OnCall]: {
id: SupportedPlugin.OnCall,
name: 'OnCall',
type: PluginType.app,
enabled: true,
info: {
author: {
name: 'Grafana Labs',
url: '',
},
description: 'OnCall',
links: [],
logos: {
small: '',
large: '',
},
screenshots: [],
version: 'local-dev',
updated: '2024-04-09',
},
module: 'public/plugins/grafana-oncall-app/module.js',
baseUrl: 'public/plugins/grafana-oncall-app',
} satisfies PluginMeta,
['grafana-asserts-app']: {
id: 'grafana-asserts-app',
name: 'Asserts',
type: PluginType.app,
enabled: true,
info: {
author: {
name: 'Grafana Labs',
url: '',
},
description: 'Asserts',
links: [],
logos: {
small: 'public/plugins/grafana-asserts-app/img/logo.svg',
large: 'public/plugins/grafana-asserts-app/img/logo.svg',
},
screenshots: [],
version: 'local-dev',
updated: '2024-04-09',
},
module: 'public/plugins/grafana-asserts-app/module.js',
baseUrl: 'public/plugins/grafana-asserts-app',
} satisfies PluginMeta,
};
export const plugins: PluginMeta[] = [
pluginMeta[SupportedPlugin.Slo],
pluginMeta[SupportedPlugin.Incident],
pluginMeta[SupportedPlugin.OnCall],
pluginMeta['grafana-asserts-app'],
];
export function pluginMetaToPluginConfig(pluginMeta: PluginMeta): AppPluginConfig {
return {
id: pluginMeta.id,
path: pluginMeta.baseUrl,
preload: true,
version: pluginMeta.info.version,
angular: { detected: false, hideDeprecation: false },
loadingStrategy: PluginLoadingStrategy.script,
dependencies: {
plugins: [],
grafanaVersion: 'local-dev',
extensions: {
exposedComponents: [],
},
},
extensions: {
addedLinks: [],
addedComponents: [],
extensionPoints: [],
exposedComponents: [],
addedFunctions: [],
},
};
}