Files
grafana/packages/grafana-toolkit/src/config/utils/pluginValidation.ts
Dominik Prokop c052d89af4 Fix ts error
2019-07-10 14:40:07 +02:00

47 lines
1.1 KiB
TypeScript

// See: packages/grafana-ui/src/types/plugin.ts
interface PluginJSONSchema {
id: string;
info: PluginMetaInfo;
}
interface PluginMetaInfo {
version: string;
}
export const validatePluginJson = (pluginJson: any) => {
if (!pluginJson.id) {
throw new Error('Plugin id is missing in plugin.json');
}
if (!pluginJson.info) {
throw new Error('Plugin info node is missing in plugin.json');
}
if (!pluginJson.info.version) {
throw new Error('Plugin info.version is missing in plugin.json');
}
const types = ['panel', 'datasource', 'app'];
const type = pluginJson.type;
if (!types.includes(type)) {
throw new Error('Invalid plugin type in plugin.json: ' + type);
}
if (!pluginJson.id.endsWith('-' + type)) {
throw new Error('[plugin.json] id should end with: -' + type);
}
};
export const getPluginJson = (path: string): PluginJSONSchema => {
let pluginJson;
try {
pluginJson = require(path);
} catch (e) {
throw new Error('Unable to find: ' + path);
}
validatePluginJson(pluginJson);
return pluginJson as PluginJSONSchema;
};