core-api: add unused optional bindRoutes method to AppOptions

This commit is contained in:
Patrik Oldsberg
2020-12-03 10:43:20 +01:00
parent c78bc66cfb
commit ad5eab923c
+27 -1
View File
@@ -16,7 +16,8 @@
import { ComponentType } from 'react';
import { IconComponent, SystemIconKey, SystemIcons } from '../icons';
import { BackstagePlugin } from '../plugin';
import { BackstagePlugin, AnyExternalRoutes } from '../plugin';
import { RouteRef } from '../routing';
import { AnyApiFactory } from '../apis';
import { AppTheme, ProfileInfo } from '../apis/definitions';
import { AppConfig } from '@backstage/config';
@@ -78,6 +79,11 @@ export type AppComponents = {
*/
export type AppConfigLoader = () => Promise<AppConfig[]>;
type BindRouteFunc = <T extends AnyExternalRoutes>(
externalRoutes: T,
targetRoutes: { [key in keyof T]: RouteRef<any> },
) => void;
export type AppOptions = {
/**
* A collection of ApiFactories to register in the application to either
@@ -134,6 +140,26 @@ export type AppOptions = {
* that was packaged by the backstage-cli and default docker container boot script.
*/
configLoader?: AppConfigLoader;
/**
* A function that is used to register associations between cross-plugin route
* references, enabling plugins to navigate between each other.
*
* The `bind` function that is passed in should be used to bind all external
* routes of all used plugins.
*
* ```ts
* bindRoutes({ bind }) {
* bind(docsPlugin.externalRoutes, {
* homePage: managePlugin.routes.managePage,
* })
* bind(homePagePlugin.externalRoutes, {
* settingsPage: settingsPlugin.routes.settingsPage,
* })
* }
* ```
*/
bindRoutes?(context: { bind: BindRouteFunc }): void;
};
export type BackstageApp = {