6096f46774
* 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>
103 lines
2.8 KiB
JSON
103 lines
2.8 KiB
JSON
{
|
|
"$schema": "https://raw.githubusercontent.com/grafana/grafana/main/docs/sources/developers/plugins/plugin.schema.json",
|
|
"type": "app",
|
|
"name": "Extensions test app",
|
|
"preload": true,
|
|
"id": "grafana-extensionstest-app",
|
|
"info": {
|
|
"keywords": ["app"],
|
|
"description": "",
|
|
"author": {
|
|
"name": "Grafana"
|
|
},
|
|
"logos": {
|
|
"small": "img/logo.svg",
|
|
"large": "img/logo.svg"
|
|
},
|
|
"screenshots": [],
|
|
"version": "%VERSION%",
|
|
"updated": "%TODAY%"
|
|
},
|
|
"includes": [
|
|
{
|
|
"type": "page",
|
|
"name": "Legacy Getters",
|
|
"path": "/a/grafana-extensionstest-app/legacy-getters",
|
|
"role": "Admin",
|
|
"addToNav": true,
|
|
"defaultNav": false
|
|
},
|
|
{
|
|
"type": "page",
|
|
"name": "Legacy Hooks",
|
|
"path": "/a/grafana-extensionstest-app/legacy-hooks",
|
|
"role": "Admin",
|
|
"addToNav": true,
|
|
"defaultNav": false
|
|
},
|
|
{
|
|
"type": "page",
|
|
"name": "Exposed components",
|
|
"path": "/a/grafana-extensionstest-app/exposed-components",
|
|
"role": "Admin",
|
|
"addToNav": true,
|
|
"defaultNav": false
|
|
},
|
|
{
|
|
"type": "page",
|
|
"name": "Added components",
|
|
"path": "/a/grafana-extensionstest-app/added-components",
|
|
"role": "Admin",
|
|
"addToNav": true,
|
|
"defaultNav": false
|
|
},
|
|
{
|
|
"type": "page",
|
|
"name": "Added links",
|
|
"path": "/a/grafana-extensionstest-app/added-links",
|
|
"role": "Admin",
|
|
"addToNav": true,
|
|
"defaultNav": false
|
|
}
|
|
],
|
|
"extensions": {
|
|
"addedLinks": [
|
|
{
|
|
"targets": ["grafana/dashboard/panel/menu"],
|
|
"title": "Open from time series or pie charts (path)",
|
|
"description": "This link will only be visible on time series and pie charts"
|
|
},
|
|
{
|
|
"targets": ["grafana/dashboard/panel/menu"],
|
|
"title": "Open from time series or pie charts (onClick)",
|
|
"description": "This link will only be visible on time series and pie charts"
|
|
}
|
|
],
|
|
"extensionPoints": [
|
|
{
|
|
"id": "plugins/grafana-extensionstest-app/use-plugin-links/v1",
|
|
"title": "Extension point - links"
|
|
},
|
|
{
|
|
"id": "plugins/grafana-extensionstest-app/addComponent/v1",
|
|
"title": "Extension point - components"
|
|
},
|
|
{
|
|
"id": "plugins/grafana-extensionstest-app/actions",
|
|
"title": "Legacy extension point - usePluginExtensions() and usePluginLinkExtensions()"
|
|
},
|
|
{
|
|
"id": "plugins/grafana-extensionstest-app/configure-extension-component/v1",
|
|
"title": "Legacy extension point - usePluginComponentExtensions()"
|
|
}
|
|
]
|
|
},
|
|
"dependencies": {
|
|
"grafanaDependency": ">=10.4.0",
|
|
"plugins": [],
|
|
"extensions": {
|
|
"exposedComponents": ["grafana-extensionexample1-app/reusable-component/v1"]
|
|
}
|
|
}
|
|
}
|