mirror of
https://github.com/grafana/grafana.git
synced 2025-07-29 22:22:25 +08:00
Plugin Extensions: Require meta-data to be defined in plugin.json
during development mode (#93429)
* feat: add extensions to the backend plugin model * feat: update the frontend plugin types * feat(pluginContext): return a `null` if there is no context found This will be necessary to understand if a certain hook is running inside a plugin context or not. * feat: add utility functions for checking extension configs * tests: fix failing tests due to the type updates * feat(AddedComponentsRegistry): validate plugin meta-info * feat(AddedLinksRegistry): validate meta-info * feat(ExposedComponentsRegistry): validate meta-info * feat(usePluginComponent): add meta-info validation * feat(usePluginComponents): add meta-info validation * feat(usePluginLinks): add meta-info validation * fix: only validate meta-info in registries if dev mode is enabled * tests: add unit tests for the restrictions functionality * tests: fix Go tests * fix(tests): revert accidental changes * fix: run goimports * fix: api tests * add nested app so that meta data can bested e2e tested * refactor(types): extract the ExtensionInfo into a separate type * refactor(extensions/utils): use Array.prototype.some() instead of .find() * refactor(usePluginLinks): update warning message * feat(usePluginExtensions()): validate plugin meta-info * Wip * fix(e2e): E2E tests for extensions * fix(extensions): allow multiple "/" slashes in the extension point id * fix(extensions/validators): stop validating the plugin id pattern --------- Co-authored-by: Erik Sundell <erik.sundell87@gmail.com>
This commit is contained in:
@ -109,7 +109,8 @@ type JSONData struct {
|
||||
SkipDataQuery bool `json:"skipDataQuery"`
|
||||
|
||||
// App settings
|
||||
AutoEnabled bool `json:"autoEnabled"`
|
||||
AutoEnabled bool `json:"autoEnabled"`
|
||||
Extensions Extensions `json:"extensions"`
|
||||
|
||||
// Datasource settings
|
||||
Annotations bool `json:"annotations"`
|
||||
@ -173,6 +174,26 @@ func ReadPluginJSON(reader io.Reader) (JSONData, error) {
|
||||
plugin.Dependencies.GrafanaVersion = "*"
|
||||
}
|
||||
|
||||
if len(plugin.Dependencies.Extensions.ExposedComponents) == 0 {
|
||||
plugin.Dependencies.Extensions.ExposedComponents = make([]string, 0)
|
||||
}
|
||||
|
||||
if plugin.Extensions.AddedLinks == nil {
|
||||
plugin.Extensions.AddedLinks = []AddedLink{}
|
||||
}
|
||||
|
||||
if plugin.Extensions.AddedComponents == nil {
|
||||
plugin.Extensions.AddedComponents = []AddedComponent{}
|
||||
}
|
||||
|
||||
if plugin.Extensions.ExposedComponents == nil {
|
||||
plugin.Extensions.ExposedComponents = []ExposedComponent{}
|
||||
}
|
||||
|
||||
if plugin.Extensions.ExtensionPoints == nil {
|
||||
plugin.Extensions.ExtensionPoints = []ExtensionPoint{}
|
||||
}
|
||||
|
||||
for _, include := range plugin.Includes {
|
||||
if include.Role == "" {
|
||||
include.Role = org.RoleViewer
|
||||
|
Reference in New Issue
Block a user