frontend-plugin-api: fix alpha API report exports

Re-export the PluginWrapperBlueprint support types from the alpha entrypoint and regenerate the affected API reports so verify passes after the rebase.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
This commit is contained in:
Patrik Oldsberg
2026-03-17 13:37:17 +01:00
parent 7ffb61b703
commit 11328fc31b
4 changed files with 723 additions and 100 deletions
@@ -3,13 +3,572 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { ApiRef } from '@backstage/frontend-plugin-api';
import { ApiRef as ApiRef_2 } from '@backstage/core-plugin-api';
import { ComponentType } from 'react';
import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api';
import { ExtensionBlueprint } from '@backstage/frontend-plugin-api';
import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api';
import { ExtensionDataRef } from '@backstage/frontend-plugin-api';
import { Expand } from '@backstage/types';
import { FilterPredicate } from '@backstage/filter-predicates';
import { JsonObject } from '@backstage/types';
import { JSX as JSX_2 } from 'react';
import { ReactNode } from 'react';
import type { z } from 'zod';
// @public
export type AnyRouteRefParams =
| {
[param in string]: string;
}
| undefined;
// @public
export type ApiHolder = {
get<T>(api: ApiRef<T>): T | undefined;
};
// @public
export type ApiRef<T, TId extends string = string> = {
readonly $$type?: '@backstage/ApiRef';
readonly id: TId;
readonly T: T;
};
// @public
export interface AppNode {
readonly edges: AppNodeEdges;
readonly instance?: AppNodeInstance;
readonly spec: AppNodeSpec;
}
// @public
export interface AppNodeEdges {
// (undocumented)
readonly attachedTo?: {
node: AppNode;
input: string;
};
// (undocumented)
readonly attachments: ReadonlyMap<string, AppNode[]>;
}
// @public
export interface AppNodeInstance {
getData<T>(ref: ExtensionDataRef<T>): T | undefined;
getDataRefs(): Iterable<ExtensionDataRef<unknown>>;
}
// @public
export interface AppNodeSpec {
// (undocumented)
readonly attachTo: ExtensionAttachTo;
// (undocumented)
readonly config?: unknown;
// (undocumented)
readonly disabled: boolean;
// (undocumented)
readonly extension: Extension<unknown, unknown>;
// (undocumented)
readonly id: string;
// (undocumented)
readonly if?: FilterPredicate;
// (undocumented)
readonly plugin: FrontendPlugin;
}
// @public
export interface AppTree {
readonly nodes: ReadonlyMap<string, AppNode>;
readonly orphans: Iterable<AppNode>;
readonly root: AppNode;
}
// @public (undocumented)
export interface ConfigurableExtensionDataRef<
TData,
TId extends string,
TConfig extends {
optional?: true;
} = {},
> extends ExtensionDataRef<TData, TId, TConfig> {
// (undocumented)
(t: TData): ExtensionDataValue<TData, TId>;
// (undocumented)
optional(): ConfigurableExtensionDataRef<
TData,
TId,
TConfig & {
optional: true;
}
>;
}
// @public
export function createExtensionBlueprintParams<T extends object = object>(
params: T,
): ExtensionBlueprintParams<T>;
// @public (undocumented)
export interface Extension<TConfig, TConfigInput = TConfig> {
// (undocumented)
$$type: '@backstage/Extension';
// (undocumented)
readonly attachTo: ExtensionAttachTo;
// (undocumented)
readonly configSchema?: PortableSchema<TConfig, TConfigInput>;
// (undocumented)
readonly disabled: boolean;
// (undocumented)
readonly id: string;
}
// @public (undocumented)
export type ExtensionAttachTo = {
id: string;
input: string;
};
// @public (undocumented)
export interface ExtensionBlueprint<
T extends ExtensionBlueprintParameters = ExtensionBlueprintParameters,
> {
// (undocumented)
dataRefs: T['dataRefs'];
// (undocumented)
make<
TName extends string | undefined,
TParamsInput extends AnyParamsInput<NonNullable<T['params']>>,
UParentInputs extends ExtensionDataRef,
>(args: {
name?: TName;
attachTo?: ExtensionDefinitionAttachTo<UParentInputs> &
VerifyExtensionAttachTo<NonNullable<T['output']>, UParentInputs>;
disabled?: boolean;
if?: FilterPredicate;
params: TParamsInput extends ExtensionBlueprintDefineParams
? TParamsInput
: T['params'] extends ExtensionBlueprintDefineParams
? 'Error: This blueprint uses advanced parameter types and requires you to pass parameters as using the following callback syntax: `<blueprint>.make({ params: defineParams => defineParams(<params>) })`'
: T['params'];
}): OverridableExtensionDefinition<{
kind: T['kind'];
name: string | undefined extends TName ? undefined : TName;
config: T['config'];
configInput: T['configInput'];
output: T['output'];
inputs: T['inputs'];
params: T['params'];
}>;
makeWithOverrides<
TName extends string | undefined,
TExtensionConfigSchema extends {
[key in string]: (zImpl: typeof z) => z.ZodType;
},
UFactoryOutput extends ExtensionDataValue<any, any>,
UNewOutput extends ExtensionDataRef,
UParentInputs extends ExtensionDataRef,
TExtraInputs extends {
[inputName in string]: ExtensionInput;
} = {},
>(args: {
name?: TName;
attachTo?: ExtensionDefinitionAttachTo<UParentInputs> &
VerifyExtensionAttachTo<
ExtensionDataRef extends UNewOutput
? NonNullable<T['output']>
: UNewOutput,
UParentInputs
>;
disabled?: boolean;
if?: FilterPredicate;
inputs?: TExtraInputs & {
[KName in keyof T['inputs']]?: `Error: Input '${KName &
string}' is already defined in parent definition`;
};
output?: Array<UNewOutput>;
config?: {
schema: TExtensionConfigSchema & {
[KName in keyof T['config']]?: `Error: Config key '${KName &
string}' is already defined in parent schema`;
};
};
factory(
originalFactory: <
TParamsInput extends AnyParamsInput<NonNullable<T['params']>>,
>(
params: TParamsInput extends ExtensionBlueprintDefineParams
? TParamsInput
: T['params'] extends ExtensionBlueprintDefineParams
? 'Error: This blueprint uses advanced parameter types and requires you to pass parameters as using the following callback syntax: `originalFactory(defineParams => defineParams(<params>))`'
: T['params'],
context?: {
config?: T['config'];
inputs?: ResolvedInputValueOverrides<NonNullable<T['inputs']>>;
},
) => ExtensionDataContainer<NonNullable<T['output']>>,
context: {
node: AppNode;
apis: ApiHolder;
config: T['config'] & {
[key in keyof TExtensionConfigSchema]: z.infer<
ReturnType<TExtensionConfigSchema[key]>
>;
};
inputs: Expand<ResolvedExtensionInputs<T['inputs'] & TExtraInputs>>;
},
): Iterable<UFactoryOutput> &
VerifyExtensionFactoryOutput<
ExtensionDataRef extends UNewOutput
? NonNullable<T['output']>
: UNewOutput,
UFactoryOutput
>;
}): OverridableExtensionDefinition<{
config: Expand<
(string extends keyof TExtensionConfigSchema
? {}
: {
[key in keyof TExtensionConfigSchema]: z.infer<
ReturnType<TExtensionConfigSchema[key]>
>;
}) &
T['config']
>;
configInput: Expand<
(string extends keyof TExtensionConfigSchema
? {}
: z.input<
z.ZodObject<{
[key in keyof TExtensionConfigSchema]: ReturnType<
TExtensionConfigSchema[key]
>;
}>
>) &
T['configInput']
>;
output: ExtensionDataRef extends UNewOutput ? T['output'] : UNewOutput;
inputs: Expand<T['inputs'] & TExtraInputs>;
kind: T['kind'];
name: string | undefined extends TName ? undefined : TName;
params: T['params'];
}>;
}
// @public
export type ExtensionBlueprintDefineParams<
TParams extends object = object,
TInput = any,
> = (params: TInput) => ExtensionBlueprintParams<TParams>;
// @public (undocumented)
export type ExtensionBlueprintParameters = {
kind: string;
params?: object | ExtensionBlueprintDefineParams;
configInput?: {
[K in string]: any;
};
config?: {
[K in string]: any;
};
output?: ExtensionDataRef;
inputs?: {
[KName in string]: ExtensionInput;
};
dataRefs?: {
[name in string]: ExtensionDataRef;
};
};
// @public
export type ExtensionBlueprintParams<T extends object = object> = {
$$type: '@backstage/BlueprintParams';
T: T;
};
// @public (undocumented)
export type ExtensionDataContainer<UExtensionData extends ExtensionDataRef> =
Iterable<
UExtensionData extends ExtensionDataRef<
infer IData,
infer IId,
infer IConfig
>
? IConfig['optional'] extends true
? never
: ExtensionDataValue<IData, IId>
: never
> & {
get<TId extends UExtensionData['id']>(
ref: ExtensionDataRef<any, TId, any>,
): UExtensionData extends ExtensionDataRef<infer IData, TId, infer IConfig>
? IConfig['optional'] extends true
? IData | undefined
: IData
: never;
};
// @public (undocumented)
export type ExtensionDataRef<
TData = unknown,
TId extends string = string,
TConfig extends {
optional?: true;
} = {
optional?: true;
},
> = {
readonly $$type: '@backstage/ExtensionDataRef';
readonly id: TId;
readonly T: TData;
readonly config: TConfig;
};
// @public (undocumented)
export type ExtensionDataValue<TData, TId extends string> = {
readonly $$type: '@backstage/ExtensionDataValue';
readonly id: TId;
readonly value: TData;
};
// @public (undocumented)
export interface ExtensionDefinition<
TParams extends ExtensionDefinitionParameters = ExtensionDefinitionParameters,
> {
// (undocumented)
$$type: '@backstage/ExtensionDefinition';
// (undocumented)
readonly T: TParams;
}
// @public
export type ExtensionDefinitionAttachTo<
UParentInputs extends ExtensionDataRef = ExtensionDataRef,
> =
| {
id: string;
input: string;
relative?: never;
}
| {
relative: {
kind?: string;
name?: string;
};
input: string;
id?: never;
}
| ExtensionInput<UParentInputs>;
// @public (undocumented)
export type ExtensionDefinitionParameters = {
kind?: string;
name?: string;
configInput?: {
[K in string]: any;
};
config?: {
[K in string]: any;
};
output?: ExtensionDataRef;
inputs?: {
[KName in string]: ExtensionInput;
};
params?: object | ExtensionBlueprintDefineParams;
};
// @public (undocumented)
export interface ExtensionInput<
UExtensionData extends ExtensionDataRef<
unknown,
string,
{
optional?: true;
}
> = ExtensionDataRef,
TConfig extends {
singleton: boolean;
optional: boolean;
internal?: boolean;
} = {
singleton: boolean;
optional: boolean;
internal?: boolean;
},
> {
// (undocumented)
readonly $$type: '@backstage/ExtensionInput';
// (undocumented)
readonly config: TConfig;
// (undocumented)
readonly extensionData: Array<UExtensionData>;
// (undocumented)
readonly replaces?: Array<{
id: string;
input: string;
}>;
}
// @public
export interface ExternalRouteRef<
TParams extends AnyRouteRefParams = AnyRouteRefParams,
> {
// (undocumented)
readonly $$type: '@backstage/ExternalRouteRef';
// (undocumented)
readonly T: TParams;
}
// @public (undocumented)
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;
},
> {
// (undocumented)
readonly $$type: '@backstage/FrontendPlugin';
// (undocumented)
readonly externalRoutes: TExternalRoutes;
readonly icon?: IconElement;
// @deprecated
readonly id: string;
info(): Promise<FrontendPluginInfo>;
readonly pluginId: string;
// (undocumented)
readonly routes: TRoutes;
readonly title?: string;
}
// @public
export interface FrontendPluginInfo {
description?: string;
links?: Array<{
title: string;
url: string;
}>;
ownerEntityRefs?: string[];
packageName?: string;
version?: string;
}
// @public
export type IconElement = JSX_2.Element | null;
// @public (undocumented)
export interface OverridableExtensionDefinition<
T extends ExtensionDefinitionParameters = ExtensionDefinitionParameters,
> extends ExtensionDefinition<T> {
readonly inputs: {
[K in keyof T['inputs']]: ExtensionInput<
T['inputs'][K] extends ExtensionInput<infer IData> ? IData : never
>;
};
// (undocumented)
override<
TExtensionConfigSchema extends {
[key in string]: (zImpl: typeof z) => z.ZodType;
},
UFactoryOutput extends ExtensionDataValue<any, any>,
UNewOutput extends ExtensionDataRef,
TExtraInputs extends {
[inputName in string]: ExtensionInput;
},
TParamsInput extends AnyParamsInput_2<NonNullable<T['params']>>,
UParentInputs extends ExtensionDataRef,
>(
args: Expand<
{
attachTo?: ExtensionDefinitionAttachTo<UParentInputs> &
VerifyExtensionAttachTo<
ExtensionDataRef extends UNewOutput
? NonNullable<T['output']>
: UNewOutput,
UParentInputs
>;
disabled?: boolean;
if?: FilterPredicate;
inputs?: TExtraInputs & {
[KName in keyof T['inputs']]?: `Error: Input '${KName &
string}' is already defined in parent definition`;
};
output?: Array<UNewOutput>;
config?: {
schema: TExtensionConfigSchema & {
[KName in keyof T['config']]?: `Error: Config key '${KName &
string}' is already defined in parent schema`;
};
};
factory?(
originalFactory: <
TFactoryParamsReturn extends AnyParamsInput_2<
NonNullable<T['params']>
>,
>(
context?: Expand<
{
config?: T['config'];
inputs?: ResolvedInputValueOverrides<NonNullable<T['inputs']>>;
} & ([T['params']] extends [never]
? {}
: {
params?: TFactoryParamsReturn extends ExtensionBlueprintDefineParams
? TFactoryParamsReturn
: T['params'] extends ExtensionBlueprintDefineParams
? 'Error: This blueprint uses advanced parameter types and requires you to pass parameters as using the following callback syntax: `originalFactory(defineParams => defineParams(<params>))`'
: Partial<T['params']>;
})
>,
) => ExtensionDataContainer<NonNullable<T['output']>>,
context: {
node: AppNode;
apis: ApiHolder;
config: T['config'] & {
[key in keyof TExtensionConfigSchema]: z.infer<
ReturnType<TExtensionConfigSchema[key]>
>;
};
inputs: Expand<ResolvedExtensionInputs<T['inputs'] & TExtraInputs>>;
},
): Iterable<UFactoryOutput>;
} & ([T['params']] extends [never]
? {}
: {
params?: TParamsInput extends ExtensionBlueprintDefineParams
? TParamsInput
: T['params'] extends ExtensionBlueprintDefineParams
? 'Error: This blueprint uses advanced parameter types and requires you to pass parameters as using the following callback syntax: `originalFactory(defineParams => defineParams(<params>))`'
: Partial<T['params']>;
})
> &
VerifyExtensionFactoryOutput<
ExtensionDataRef extends UNewOutput
? NonNullable<T['output']>
: UNewOutput,
UFactoryOutput
>,
): OverridableExtensionDefinition<{
kind: T['kind'];
name: T['name'];
output: ExtensionDataRef extends UNewOutput ? T['output'] : UNewOutput;
inputs: T['inputs'] & TExtraInputs;
config: T['config'] & {
[key in keyof TExtensionConfigSchema]: z.infer<
ReturnType<TExtensionConfigSchema[key]>
>;
};
configInput: T['configInput'] &
z.input<
z.ZodObject<{
[key in keyof TExtensionConfigSchema]: ReturnType<
TExtensionConfigSchema[key]
>;
}>
>;
}>;
}
// @public
export type PluginWrapperApi = {
@@ -24,7 +583,7 @@ export type PluginWrapperApi = {
};
// @public
export const pluginWrapperApiRef: ApiRef<
export const pluginWrapperApiRef: ApiRef_2<
PluginWrapperApi,
'core.plugin-wrapper'
> & {
@@ -65,5 +624,33 @@ export type PluginWrapperDefinition<TValue = unknown | never> = {
}>;
};
// @public (undocumented)
export type PortableSchema<TOutput, TInput = TOutput> = {
parse: (input: TInput) => TOutput;
schema: JsonObject;
};
// @public
export interface RouteRef<
TParams extends AnyRouteRefParams = AnyRouteRefParams,
> {
// (undocumented)
readonly $$type: '@backstage/RouteRef';
// (undocumented)
readonly T: TParams;
}
// @public
export interface SubRouteRef<
TParams extends AnyRouteRefParams = AnyRouteRefParams,
> {
// (undocumented)
readonly $$type: '@backstage/SubRouteRef';
// (undocumented)
readonly path: string;
// (undocumented)
readonly T: TParams;
}
// (No @packageDocumentation comment for this package)
```
+92 -93
View File
@@ -3,17 +3,13 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { AnyRouteRefParams as AnyRouteRefParams_2 } from '@backstage/frontend-plugin-api';
import { ApiRef as ApiRef_2 } from '@backstage/frontend-plugin-api';
import { ApiRef as ApiRef_2 } from '@backstage/core-plugin-api';
import { ComponentType } from 'react';
import type { Config } from '@backstage/config';
import { ConfigurableExtensionDataRef as ConfigurableExtensionDataRef_2 } from '@backstage/frontend-plugin-api';
import { Expand } from '@backstage/types';
import { ExpandRecursive } from '@backstage/types';
import { ExtensionBlueprint as ExtensionBlueprint_2 } from '@backstage/frontend-plugin-api';
import { ExtensionBlueprintParams as ExtensionBlueprintParams_2 } from '@backstage/frontend-plugin-api';
import { ExtensionDataRef as ExtensionDataRef_2 } from '@backstage/frontend-plugin-api';
import { ExtensionInput as ExtensionInput_2 } from '@backstage/frontend-plugin-api';
import { FilterPredicate } from '@backstage/filter-predicates';
import { JsonObject } from '@backstage/types';
import { JsonValue } from '@backstage/types';
@@ -22,7 +18,6 @@ import { JSX as JSX_3 } from 'react/jsx-runtime';
import { Observable } from '@backstage/types';
import { PropsWithChildren } from 'react';
import { ReactNode } from 'react';
import { SwappableComponentRef as SwappableComponentRef_2 } from '@backstage/frontend-plugin-api';
import type { z } from 'zod';
// @public
@@ -87,12 +82,12 @@ export type AnalyticsImplementation = {
};
// @public @deprecated
export const AnalyticsImplementationBlueprint: ExtensionBlueprint_2<{
export const AnalyticsImplementationBlueprint: ExtensionBlueprint<{
kind: 'analytics';
params: <TDeps extends { [name in string]: unknown }>(
params: AnalyticsImplementationFactory<TDeps>,
) => ExtensionBlueprintParams_2<AnalyticsImplementationFactory<{}>>;
output: ExtensionDataRef_2<
) => ExtensionBlueprintParams<AnalyticsImplementationFactory<{}>>;
output: ExtensionDataRef<
AnalyticsImplementationFactory<{}>,
'core.analytics.factory',
{}
@@ -101,7 +96,7 @@ export const AnalyticsImplementationBlueprint: ExtensionBlueprint_2<{
config: {};
configInput: {};
dataRefs: {
factory: ConfigurableExtensionDataRef_2<
factory: ConfigurableExtensionDataRef<
AnalyticsImplementationFactory<{}>,
'core.analytics.factory',
{}
@@ -151,7 +146,7 @@ export type AnyRouteRefParams =
| undefined;
// @public
export const ApiBlueprint: ExtensionBlueprint_2<{
export const ApiBlueprint: ExtensionBlueprint<{
kind: 'api';
params: <
TApi,
@@ -159,13 +154,13 @@ export const ApiBlueprint: ExtensionBlueprint_2<{
TDeps extends { [name in string]: unknown },
>(
params: ApiFactory<TApi, TImpl, TDeps>,
) => ExtensionBlueprintParams_2<AnyApiFactory>;
output: ExtensionDataRef_2<AnyApiFactory, 'core.api.factory', {}>;
) => ExtensionBlueprintParams<AnyApiFactory>;
output: ExtensionDataRef<AnyApiFactory, 'core.api.factory', {}>;
inputs: {};
config: {};
configInput: {};
dataRefs: {
factory: ConfigurableExtensionDataRef_2<
factory: ConfigurableExtensionDataRef<
AnyApiFactory,
'core.api.factory',
{}
@@ -410,16 +405,16 @@ export interface ConfigurableExtensionDataRef<
// @public (undocumented)
export const coreExtensionData: {
title: ConfigurableExtensionDataRef_2<string, 'core.title', {}>;
icon: ConfigurableExtensionDataRef_2<IconElement, 'core.icon', {}>;
reactElement: ConfigurableExtensionDataRef_2<
title: ConfigurableExtensionDataRef<string, 'core.title', {}>;
icon: ConfigurableExtensionDataRef<IconElement, 'core.icon', {}>;
reactElement: ConfigurableExtensionDataRef<
JSX_2.Element,
'core.reactElement',
{}
>;
routePath: ConfigurableExtensionDataRef_2<string, 'core.routing.path', {}>;
routeRef: ConfigurableExtensionDataRef_2<
RouteRef<AnyRouteRefParams_2>,
routePath: ConfigurableExtensionDataRef<string, 'core.routing.path', {}>;
routeRef: ConfigurableExtensionDataRef<
RouteRef<AnyRouteRefParams>,
'core.routing.ref',
{}
>;
@@ -772,13 +767,47 @@ export function createFrontendPlugin<
[name in string]: ExternalRouteRef;
} = {},
>(
options: PluginOptions<TId, TRoutes, TExternalRoutes, TExtensions>,
options: CreateFrontendPluginOptions<
TId,
TRoutes,
TExternalRoutes,
TExtensions
>,
): OverridableFrontendPlugin<
TRoutes,
TExternalRoutes,
MakeSortedExtensionsMap<TExtensions[number], TId>
>;
// @public
export interface CreateFrontendPluginOptions<
TId extends string,
TRoutes extends {
[name in string]: RouteRef | SubRouteRef;
},
TExternalRoutes extends {
[name in string]: ExternalRouteRef;
},
TExtensions extends readonly ExtensionDefinition[],
> {
// (undocumented)
extensions?: TExtensions;
// (undocumented)
externalRoutes?: TExternalRoutes;
// (undocumented)
featureFlags?: FeatureFlagConfig[];
icon?: IconElement;
// (undocumented)
if?: FilterPredicate;
// (undocumented)
info?: FrontendPluginInfoOptions;
// (undocumented)
pluginId: TId;
// (undocumented)
routes?: TRoutes;
title?: string;
}
// @public
export function createRouteRef<
TParams extends
@@ -955,7 +984,7 @@ export const errorApiRef: ApiRef_2<ErrorApi, 'core.error'> & {
// @public (undocumented)
export const ErrorDisplay: {
(props: ErrorDisplayProps): JSX.Element | null;
ref: SwappableComponentRef_2<ErrorDisplayProps, ErrorDisplayProps>;
ref: SwappableComponentRef<ErrorDisplayProps, ErrorDisplayProps>;
};
// @public (undocumented)
@@ -994,7 +1023,7 @@ export interface ExtensionBlueprint<
// (undocumented)
make<
TName extends string | undefined,
TParamsInput extends AnyParamsInput_2<NonNullable<T['params']>>,
TParamsInput extends AnyParamsInput<NonNullable<T['params']>>,
UParentInputs extends ExtensionDataRef,
>(args: {
name?: TName;
@@ -1051,7 +1080,7 @@ export interface ExtensionBlueprint<
};
factory(
originalFactory: <
TParamsInput extends AnyParamsInput_2<NonNullable<T['params']>>,
TParamsInput extends AnyParamsInput<NonNullable<T['params']>>,
>(
params: TParamsInput extends ExtensionBlueprintDefineParams
? TParamsInput
@@ -1529,14 +1558,14 @@ export const microsoftAuthApiRef: ApiRef_2<
};
// @public @deprecated
export const NavItemBlueprint: ExtensionBlueprint_2<{
export const NavItemBlueprint: ExtensionBlueprint<{
kind: 'nav-item';
params: {
title: string;
icon: IconComponent;
routeRef: RouteRef<undefined>;
};
output: ExtensionDataRef_2<
output: ExtensionDataRef<
{
title: string;
icon: IconComponent;
@@ -1549,7 +1578,7 @@ export const NavItemBlueprint: ExtensionBlueprint_2<{
config: {};
configInput: {};
dataRefs: {
target: ConfigurableExtensionDataRef_2<
target: ConfigurableExtensionDataRef<
{
title: string;
icon: IconComponent;
@@ -1564,7 +1593,7 @@ export const NavItemBlueprint: ExtensionBlueprint_2<{
// @public (undocumented)
export const NotFoundErrorPage: {
(props: NotFoundErrorPageProps): JSX.Element | null;
ref: SwappableComponentRef_2<NotFoundErrorPageProps, NotFoundErrorPageProps>;
ref: SwappableComponentRef<NotFoundErrorPageProps, NotFoundErrorPageProps>;
};
// @public (undocumented)
@@ -1666,7 +1695,7 @@ export interface OverridableExtensionDefinition<
TExtraInputs extends {
[inputName in string]: ExtensionInput;
},
TParamsInput extends AnyParamsInput<NonNullable<T['params']>>,
TParamsInput extends AnyParamsInput_2<NonNullable<T['params']>>,
UParentInputs extends ExtensionDataRef,
>(
args: Expand<
@@ -1693,7 +1722,7 @@ export interface OverridableExtensionDefinition<
};
factory?(
originalFactory: <
TFactoryParamsReturn extends AnyParamsInput<
TFactoryParamsReturn extends AnyParamsInput_2<
NonNullable<T['params']>
>,
>(
@@ -1793,7 +1822,7 @@ export interface OverridableFrontendPlugin<
}
// @public
export const PageBlueprint: ExtensionBlueprint_2<{
export const PageBlueprint: ExtensionBlueprint<{
kind: 'page';
params: {
path: string;
@@ -1804,23 +1833,23 @@ export const PageBlueprint: ExtensionBlueprint_2<{
noHeader?: boolean;
};
output:
| ExtensionDataRef_2<string, 'core.routing.path', {}>
| ExtensionDataRef_2<
RouteRef<AnyRouteRefParams_2>,
| ExtensionDataRef<string, 'core.routing.path', {}>
| ExtensionDataRef<
RouteRef<AnyRouteRefParams>,
'core.routing.ref',
{
optional: true;
}
>
| ExtensionDataRef_2<JSX_2.Element, 'core.reactElement', {}>
| ExtensionDataRef_2<
| ExtensionDataRef<JSX_2.Element, 'core.reactElement', {}>
| ExtensionDataRef<
string,
'core.title',
{
optional: true;
}
>
| ExtensionDataRef_2<
| ExtensionDataRef<
IconElement,
'core.icon',
{
@@ -1828,24 +1857,24 @@ export const PageBlueprint: ExtensionBlueprint_2<{
}
>;
inputs: {
pages: ExtensionInput_2<
| ConfigurableExtensionDataRef_2<JSX_2.Element, 'core.reactElement', {}>
| ConfigurableExtensionDataRef_2<string, 'core.routing.path', {}>
| ConfigurableExtensionDataRef_2<
RouteRef<AnyRouteRefParams_2>,
pages: ExtensionInput<
| ConfigurableExtensionDataRef<JSX_2.Element, 'core.reactElement', {}>
| ConfigurableExtensionDataRef<string, 'core.routing.path', {}>
| ConfigurableExtensionDataRef<
RouteRef<AnyRouteRefParams>,
'core.routing.ref',
{
optional: true;
}
>
| ConfigurableExtensionDataRef_2<
| ConfigurableExtensionDataRef<
string,
'core.title',
{
optional: true;
}
>
| ConfigurableExtensionDataRef_2<
| ConfigurableExtensionDataRef<
IconElement,
'core.icon',
{
@@ -1873,7 +1902,7 @@ export const PageBlueprint: ExtensionBlueprint_2<{
// @public
export const PageLayout: {
(props: PageLayoutProps): JSX.Element | null;
ref: SwappableComponentRef_2<PageLayoutProps, PageLayoutProps>;
ref: SwappableComponentRef<PageLayoutProps, PageLayoutProps>;
};
// @public
@@ -1915,14 +1944,14 @@ export type PendingOAuthRequest = {
};
// @public
export const PluginHeaderActionBlueprint: ExtensionBlueprint_2<{
export const PluginHeaderActionBlueprint: ExtensionBlueprint<{
kind: 'plugin-header-action';
params: (params: {
loader: () => Promise<JSX.Element>;
}) => ExtensionBlueprintParams_2<{
}) => ExtensionBlueprintParams<{
loader: () => Promise<JSX.Element>;
}>;
output: ExtensionDataRef_2<JSX_2, 'core.reactElement', {}>;
output: ExtensionDataRef<JSX_2, 'core.reactElement', {}>;
inputs: {};
config: {};
configInput: {};
@@ -1942,8 +1971,8 @@ export const pluginHeaderActionsApiRef: ApiRef_2<
readonly $$type: '@backstage/ApiRef';
};
// @public (undocumented)
export interface PluginOptions<
// @public @deprecated (undocumented)
export type PluginOptions<
TId extends string,
TRoutes extends {
[name in string]: RouteRef | SubRouteRef;
@@ -1952,24 +1981,7 @@ export interface PluginOptions<
[name in string]: ExternalRouteRef;
},
TExtensions extends readonly ExtensionDefinition[],
> {
// (undocumented)
extensions?: TExtensions;
// (undocumented)
externalRoutes?: TExternalRoutes;
// (undocumented)
featureFlags?: FeatureFlagConfig[];
icon?: IconElement;
// (undocumented)
if?: FilterPredicate;
// (undocumented)
info?: FrontendPluginInfoOptions;
// (undocumented)
pluginId: TId;
// (undocumented)
routes?: TRoutes;
title?: string;
}
> = CreateFrontendPluginOptions<TId, TRoutes, TExternalRoutes, TExtensions>;
// @public
export type PluginWrapperApi = {
@@ -1992,14 +2004,14 @@ export const pluginWrapperApiRef: ApiRef_2<
};
// @public
export const PluginWrapperBlueprint: ExtensionBlueprint_2<{
export const PluginWrapperBlueprint: ExtensionBlueprint<{
kind: 'plugin-wrapper';
params: <TValue = never>(params: {
loader: () => Promise<PluginWrapperDefinition<TValue>>;
}) => ExtensionBlueprintParams_2<{
}) => ExtensionBlueprintParams<{
loader: () => Promise<PluginWrapperDefinition>;
}>;
output: ExtensionDataRef_2<
output: ExtensionDataRef<
() => Promise<PluginWrapperDefinition>,
'core.plugin-wrapper.loader',
{}
@@ -2008,7 +2020,7 @@ export const PluginWrapperBlueprint: ExtensionBlueprint_2<{
config: {};
configInput: {};
dataRefs: {
wrapper: ConfigurableExtensionDataRef_2<
wrapper: ConfigurableExtensionDataRef<
() => Promise<PluginWrapperDefinition>,
'core.plugin-wrapper.loader',
{}
@@ -2046,25 +2058,12 @@ export type ProfileInfoApi = {
// @public (undocumented)
export const Progress: {
(props: ProgressProps): JSX.Element | null;
ref: SwappableComponentRef_2<ProgressProps, ProgressProps>;
ref: SwappableComponentRef<ProgressProps, ProgressProps>;
};
// @public (undocumented)
export type ProgressProps = {};
// @public
export type ResolvedExtensionInputs<
TInputs extends {
[name in string]: ExtensionInput;
},
> = {
[InputName in keyof TInputs]: false extends TInputs[InputName]['config']['singleton']
? Array<Expand<ResolvedExtensionInput<TInputs[InputName]>>>
: false extends TInputs[InputName]['config']['optional']
? Expand<ResolvedExtensionInput<TInputs[InputName]>>
: Expand<ResolvedExtensionInput<TInputs[InputName]> | undefined>;
};
// @public
export type RouteFunc<TParams extends AnyRouteRefParams> = (
...input: TParams extends undefined ? readonly [] : readonly [params: TParams]
@@ -2156,7 +2155,7 @@ export type StorageValueSnapshot<TValue extends JsonValue> =
};
// @public
export const SubPageBlueprint: ExtensionBlueprint_2<{
export const SubPageBlueprint: ExtensionBlueprint<{
kind: 'sub-page';
params: {
path: string;
@@ -2166,17 +2165,17 @@ export const SubPageBlueprint: ExtensionBlueprint_2<{
routeRef?: RouteRef;
};
output:
| ExtensionDataRef_2<string, 'core.routing.path', {}>
| ExtensionDataRef_2<
RouteRef<AnyRouteRefParams_2>,
| ExtensionDataRef<string, 'core.routing.path', {}>
| ExtensionDataRef<
RouteRef<AnyRouteRefParams>,
'core.routing.ref',
{
optional: true;
}
>
| ExtensionDataRef_2<JSX_2, 'core.reactElement', {}>
| ExtensionDataRef_2<string, 'core.title', {}>
| ExtensionDataRef_2<
| ExtensionDataRef<JSX_2, 'core.reactElement', {}>
| ExtensionDataRef<string, 'core.title', {}>
| ExtensionDataRef<
IconElement,
'core.icon',
{
+37
View File
@@ -20,6 +20,43 @@ export {
PluginWrapperBlueprint,
type PluginWrapperDefinition,
} from './blueprints/PluginWrapperBlueprint';
export type {
ConfigurableExtensionDataRef,
Extension,
ExtensionAttachTo,
ExtensionDefinition,
ExtensionDefinitionParameters,
ExtensionBlueprintDefineParams,
ExtensionBlueprint,
ExtensionBlueprintParameters,
ExtensionBlueprintParams,
ExtensionDataContainer,
ExtensionDataRef,
ExtensionDataValue,
ExtensionDefinitionAttachTo,
ExtensionInput,
FrontendPlugin,
OverridableExtensionDefinition,
} from './wiring';
export type {
ApiHolder,
ApiRef,
AppNode,
AppNodeEdges,
AppNodeInstance,
AppNodeSpec,
AppTree,
} from './apis';
export type { PortableSchema } from './schema';
export type {
AnyRouteRefParams,
RouteRef,
SubRouteRef,
ExternalRouteRef,
} from './routing';
export type { IconElement } from './icons';
export type { FrontendPluginInfo } from './wiring';
export { createExtensionBlueprintParams } from './wiring';
export {
type PluginWrapperApi,
pluginWrapperApiRef,
+1 -1
View File
@@ -478,7 +478,7 @@ const appPlugin: OverridableFrontendPlugin<
icons: ExtensionInput<
ConfigurableExtensionDataRef<
{
[x: string]: IconElement | IconComponent;
[x: string]: IconComponent | IconElement;
},
'core.icons',
{}