frontend-plugin-api: add OverridableFrontendPlugin type
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
@@ -719,7 +719,7 @@ export function createFrontendPlugin<
|
||||
TExtensions extends readonly ExtensionDefinition[] = [],
|
||||
>(
|
||||
options: PluginOptions<TId, TRoutes, TExternalRoutes, TExtensions>,
|
||||
): FrontendPlugin<
|
||||
): OverridableFrontendPlugin<
|
||||
TRoutes,
|
||||
TExternalRoutes,
|
||||
MakeSortedExtensionsMap<TExtensions[number], TId>
|
||||
@@ -880,7 +880,7 @@ export interface ExtensionBlueprint<
|
||||
// (undocumented)
|
||||
make<
|
||||
TName extends string | undefined,
|
||||
TParamsInput extends AnyParamsInput_2<NonNullable<T['params']>>,
|
||||
TParamsInput extends AnyParamsInput<NonNullable<T['params']>>,
|
||||
>(args: {
|
||||
name?: TName;
|
||||
attachTo?: ExtensionAttachToSpec;
|
||||
@@ -932,7 +932,7 @@ export interface ExtensionBlueprint<
|
||||
};
|
||||
factory(
|
||||
originalFactory: <
|
||||
TParamsInput extends AnyParamsInput_2<NonNullable<T['params']>>,
|
||||
TParamsInput extends AnyParamsInput<NonNullable<T['params']>>,
|
||||
>(
|
||||
params: TParamsInput extends ExtensionBlueprintDefineParams
|
||||
? TParamsInput
|
||||
@@ -1122,7 +1122,7 @@ export type ExtensionDefinition<
|
||||
}
|
||||
>;
|
||||
},
|
||||
TParamsInput extends AnyParamsInput<NonNullable<T['params']>>,
|
||||
TParamsInput extends AnyParamsInput_2<NonNullable<T['params']>>,
|
||||
>(
|
||||
args: Expand<
|
||||
{
|
||||
@@ -1141,7 +1141,7 @@ export type ExtensionDefinition<
|
||||
};
|
||||
factory?(
|
||||
originalFactory: <
|
||||
TFactoryParamsReturn extends AnyParamsInput<
|
||||
TFactoryParamsReturn extends AnyParamsInput_2<
|
||||
NonNullable<T['params']>
|
||||
>,
|
||||
>(
|
||||
@@ -1328,28 +1328,16 @@ export interface FrontendPlugin<
|
||||
} = {
|
||||
[name in string]: ExternalRouteRef;
|
||||
},
|
||||
TExtensionMap extends {
|
||||
[id in string]: ExtensionDefinition;
|
||||
} = {
|
||||
[id in string]: ExtensionDefinition;
|
||||
},
|
||||
> {
|
||||
// (undocumented)
|
||||
readonly $$type: '@backstage/FrontendPlugin';
|
||||
// (undocumented)
|
||||
readonly externalRoutes: TExternalRoutes;
|
||||
// (undocumented)
|
||||
getExtension<TId extends keyof TExtensionMap>(id: TId): TExtensionMap[TId];
|
||||
// (undocumented)
|
||||
readonly id: string;
|
||||
info(): Promise<FrontendPluginInfo>;
|
||||
// (undocumented)
|
||||
readonly routes: TRoutes;
|
||||
// (undocumented)
|
||||
withOverrides(options: {
|
||||
extensions: Array<ExtensionDefinition>;
|
||||
info?: FrontendPluginInfoOptions;
|
||||
}): FrontendPlugin<TRoutes, TExternalRoutes, TExtensionMap>;
|
||||
}
|
||||
|
||||
// @public
|
||||
@@ -1530,6 +1518,33 @@ export { oneloginAuthApiRef };
|
||||
|
||||
export { OpenIdConnectApi };
|
||||
|
||||
// @public
|
||||
export interface OverridableFrontendPlugin<
|
||||
TRoutes extends {
|
||||
[name in string]: RouteRef | SubRouteRef;
|
||||
} = {
|
||||
[name in string]: RouteRef | SubRouteRef;
|
||||
},
|
||||
TExternalRoutes extends {
|
||||
[name in string]: ExternalRouteRef;
|
||||
} = {
|
||||
[name in string]: ExternalRouteRef;
|
||||
},
|
||||
TExtensionMap extends {
|
||||
[id in string]: ExtensionDefinition;
|
||||
} = {
|
||||
[id in string]: ExtensionDefinition;
|
||||
},
|
||||
> extends FrontendPlugin<TRoutes, TExternalRoutes> {
|
||||
// (undocumented)
|
||||
getExtension<TId extends keyof TExtensionMap>(id: TId): TExtensionMap[TId];
|
||||
// (undocumented)
|
||||
withOverrides(options: {
|
||||
extensions: Array<ExtensionDefinition>;
|
||||
info?: FrontendPluginInfoOptions;
|
||||
}): OverridableFrontendPlugin<TRoutes, TExternalRoutes, TExtensionMap>;
|
||||
}
|
||||
|
||||
// @public
|
||||
export const PageBlueprint: ExtensionBlueprint<{
|
||||
kind: 'page';
|
||||
|
||||
@@ -88,8 +88,12 @@ export type FrontendPluginInfoOptions = {
|
||||
manifest?: () => Promise<JsonObject>;
|
||||
};
|
||||
|
||||
/** @public */
|
||||
export interface FrontendPlugin<
|
||||
/**
|
||||
* A variant of the {@link FrontendPlugin} interface that can also be used to install overrides for the plugin.
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export interface OverridableFrontendPlugin<
|
||||
TRoutes extends { [name in string]: RouteRef | SubRouteRef } = {
|
||||
[name in string]: RouteRef | SubRouteRef;
|
||||
},
|
||||
@@ -99,6 +103,26 @@ export interface FrontendPlugin<
|
||||
TExtensionMap extends { [id in string]: ExtensionDefinition } = {
|
||||
[id in string]: ExtensionDefinition;
|
||||
},
|
||||
> extends FrontendPlugin<TRoutes, TExternalRoutes> {
|
||||
getExtension<TId extends keyof TExtensionMap>(id: TId): TExtensionMap[TId];
|
||||
withOverrides(options: {
|
||||
extensions: Array<ExtensionDefinition>;
|
||||
|
||||
/**
|
||||
* Overrides the original info loaders of the plugin one by one.
|
||||
*/
|
||||
info?: FrontendPluginInfoOptions;
|
||||
}): OverridableFrontendPlugin<TRoutes, TExternalRoutes, TExtensionMap>;
|
||||
}
|
||||
|
||||
/** @public */
|
||||
export interface FrontendPlugin<
|
||||
TRoutes extends { [name in string]: RouteRef | SubRouteRef } = {
|
||||
[name in string]: RouteRef | SubRouteRef;
|
||||
},
|
||||
TExternalRoutes extends { [name in string]: ExternalRouteRef } = {
|
||||
[name in string]: ExternalRouteRef;
|
||||
},
|
||||
> {
|
||||
readonly $$type: '@backstage/FrontendPlugin';
|
||||
readonly id: string;
|
||||
@@ -109,15 +133,6 @@ export interface FrontendPlugin<
|
||||
* Loads the plugin info.
|
||||
*/
|
||||
info(): Promise<FrontendPluginInfo>;
|
||||
getExtension<TId extends keyof TExtensionMap>(id: TId): TExtensionMap[TId];
|
||||
withOverrides(options: {
|
||||
extensions: Array<ExtensionDefinition>;
|
||||
|
||||
/**
|
||||
* Overrides the original info loaders of the plugin one by one.
|
||||
*/
|
||||
info?: FrontendPluginInfoOptions;
|
||||
}): FrontendPlugin<TRoutes, TExternalRoutes, TExtensionMap>;
|
||||
}
|
||||
|
||||
/** @public */
|
||||
@@ -172,7 +187,7 @@ export function createFrontendPlugin<
|
||||
TExtensions extends readonly ExtensionDefinition[] = [],
|
||||
>(
|
||||
options: PluginOptions<TId, TRoutes, TExternalRoutes, TExtensions>,
|
||||
): FrontendPlugin<
|
||||
): OverridableFrontendPlugin<
|
||||
TRoutes,
|
||||
TExternalRoutes,
|
||||
MakeSortedExtensionsMap<TExtensions[number], TId>
|
||||
|
||||
@@ -39,6 +39,7 @@ export {
|
||||
export {
|
||||
createFrontendPlugin,
|
||||
type FrontendPlugin,
|
||||
type OverridableFrontendPlugin,
|
||||
type PluginOptions,
|
||||
type FrontendPluginInfo,
|
||||
type FrontendPluginInfoOptions,
|
||||
|
||||
Reference in New Issue
Block a user