diff --git a/packages/frontend-plugin-api/report.api.md b/packages/frontend-plugin-api/report.api.md index cd8f3d02ce..8ae1960221 100644 --- a/packages/frontend-plugin-api/report.api.md +++ b/packages/frontend-plugin-api/report.api.md @@ -179,9 +179,13 @@ export type AnyRoutes = { export const ApiBlueprint: ExtensionBlueprint<{ kind: 'api'; name: undefined; - params: { - factory: AnyApiFactory; - }; + params: < + TApi, + TImpl extends TApi, + TDeps extends { [name in string]: unknown }, + >( + params: ApiFactory, + ) => ExtensionBlueprintParams; output: ConfigurableExtensionDataRef; inputs: {}; config: {}; @@ -519,7 +523,7 @@ export function createExtension< // @public export function createExtensionBlueprint< - TParams extends object, + TParams extends object | ExtensionBlueprintParamsDefiner, UOutput extends AnyExtensionDataRef, TInputs extends { [inputName in string]: ExtensionInput< @@ -575,7 +579,7 @@ export function createExtensionBlueprint< export type CreateExtensionBlueprintOptions< TKind extends string, TName extends string | undefined, - TParams, + TParams extends object | ExtensionBlueprintParamsDefiner, UOutput extends AnyExtensionDataRef, TInputs extends { [inputName in string]: ExtensionInput< @@ -603,8 +607,13 @@ export type CreateExtensionBlueprintOptions< config?: { schema: TConfigSchema; }; + defineParams?: TParams extends ExtensionBlueprintParamsDefiner + ? TParams + : 'The defineParams option must be a function if provided, see the docs for details'; factory( - params: TParams, + params: TParams extends ExtensionBlueprintParamsDefiner + ? ReturnType['T'] + : TParams, context: { node: AppNode; apis: ApiHolder; @@ -617,6 +626,11 @@ export type CreateExtensionBlueprintOptions< dataRefs?: TDataRefs; } & VerifyExtensionFactoryOutput; +// @public +export function createExtensionBlueprintParams( + params: T, +): ExtensionBlueprintParams; + // @public (undocumented) export function createExtensionDataRef(): { with(options: { @@ -911,11 +925,18 @@ export interface ExtensionBlueprint< // (undocumented) dataRefs: T['dataRefs']; // (undocumented) - make(args: { + make< + TNewName extends string | undefined, + TParamsInput extends AnyParamsInput_2>, + >(args: { name?: TNewName; attachTo?: ExtensionAttachToSpec; disabled?: boolean; - params: T['params']; + params: TParamsInput extends ExtensionBlueprintParamsDefiner + ? TParamsInput + : T['params'] extends ExtensionBlueprintParamsDefiner + ? 'Error: This blueprint uses advanced parameter types and requires you to pass parameters as using the following callback syntax: `.make({ params: define => define() })`' + : TParamsInput; }): ExtensionDefinition<{ kind: T['kind']; name: string | undefined extends TNewName ? T['name'] : TNewName; @@ -957,8 +978,14 @@ export interface ExtensionBlueprint< }; }; factory( - originalFactory: ( - params: T['params'], + originalFactory: < + TParamsInput extends AnyParamsInput_2>, + >( + params: TParamsInput extends ExtensionBlueprintParamsDefiner + ? TParamsInput + : T['params'] extends ExtensionBlueprintParamsDefiner + ? 'Error: This blueprint uses advanced parameter types and requires you to pass parameters as using the following callback syntax: `originalFactory(define => define())`' + : TParamsInput, context?: { config?: T['config']; inputs?: ResolveInputValueOverrides>; @@ -1012,7 +1039,7 @@ export interface ExtensionBlueprint< export type ExtensionBlueprintParameters = { kind: string; name?: string; - params?: object; + params?: object | ExtensionBlueprintParamsDefiner; configInput?: { [K in string]: any; }; @@ -1034,6 +1061,18 @@ export type ExtensionBlueprintParameters = { }; }; +// @public +export type ExtensionBlueprintParams = { + $$type: '@backstage/BlueprintParams'; + T: T; +}; + +// @public +export type ExtensionBlueprintParamsDefiner< + TParams extends object = object, + TInput = any, +> = (params: TInput) => ExtensionBlueprintParams; + // @public (undocumented) export function ExtensionBoundary(props: ExtensionBoundaryProps): JSX_2.Element; @@ -1130,6 +1169,7 @@ export type ExtensionDefinition< } >; }, + TParamsInput extends AnyParamsInput>, >( args: Expand< { @@ -1147,7 +1187,11 @@ export type ExtensionDefinition< }; }; factory?( - originalFactory: ( + originalFactory: < + TFactoryParamsReturn extends AnyParamsInput< + NonNullable + >, + >( context?: Expand< { config?: T['config']; @@ -1155,7 +1199,11 @@ export type ExtensionDefinition< } & ([T['params']] extends [never] ? {} : { - params?: Partial; + params?: TFactoryParamsReturn extends ExtensionBlueprintParamsDefiner + ? TFactoryParamsReturn + : T['params'] extends ExtensionBlueprintParamsDefiner + ? 'Error: This blueprint uses advanced parameter types and requires you to pass parameters as using the following callback syntax: `originalFactory(define => define())`' + : Partial; }) >, ) => ExtensionDataContainer>, @@ -1173,7 +1221,11 @@ export type ExtensionDefinition< } & ([T['params']] extends [never] ? {} : { - params?: Partial; + params?: TParamsInput extends ExtensionBlueprintParamsDefiner + ? TParamsInput + : T['params'] extends ExtensionBlueprintParamsDefiner + ? 'Error: This blueprint uses advanced parameter types and requires you to pass parameters as using the following callback syntax: `originalFactory(define => define())`' + : Partial; }) > & VerifyExtensionFactoryOutput< @@ -1223,7 +1275,7 @@ export type ExtensionDefinitionParameters = { } >; }; - params?: object; + params?: object | ExtensionBlueprintParamsDefiner; }; // @public (undocumented) diff --git a/packages/frontend-plugin-api/src/wiring/createExtension.ts b/packages/frontend-plugin-api/src/wiring/createExtension.ts index df097bd843..8ade3d63c9 100644 --- a/packages/frontend-plugin-api/src/wiring/createExtension.ts +++ b/packages/frontend-plugin-api/src/wiring/createExtension.ts @@ -30,10 +30,7 @@ import { z } from 'zod'; import { createSchemaFromZod } from '../schema/createSchemaFromZod'; import { OpaqueExtensionDefinition } from '@internal/frontend'; import { ExtensionDataContainer } from './types'; -import { - BlueprintParamsDefiner, - BlueprintParamsFactory, -} from './createExtensionBlueprint'; +import { ExtensionBlueprintParamsDefiner } from './createExtensionBlueprint'; /** * This symbol is used to pass parameter overrides from the extension override to the blueprint factory @@ -165,15 +162,22 @@ export type ExtensionDefinitionParameters = { { optional: boolean; singleton: boolean } >; }; - params?: object | BlueprintParamsDefiner; + params?: object | ExtensionBlueprintParamsDefiner; }; -type AnyParamsInput = - TParams extends BlueprintParamsDefiner - ? IParams | BlueprintParamsFactory +/** + * Same as the one in `createExtensionBlueprint`, but with `ParamsFactory` inlined. + * It can't be exported because it breaks API reports. + * @ignore + */ +type AnyParamsInput = + TParams extends ExtensionBlueprintParamsDefiner + ? IParams | ((define: TParams) => ReturnType) : | TParams - | BlueprintParamsFactory>; + | (( + define: ExtensionBlueprintParamsDefiner, + ) => ReturnType>); /** @public */ export type ExtensionDefinition< @@ -194,7 +198,7 @@ export type ExtensionDefinition< { optional: boolean; singleton: boolean } >; }, - TParamsReturn extends AnyParamsInput>, + TParamsInput extends AnyParamsInput>, >( args: Expand< { @@ -224,9 +228,9 @@ export type ExtensionDefinition< } & ([T['params']] extends [never] ? {} : { - params?: TFactoryParamsReturn extends BlueprintParamsDefiner + params?: TFactoryParamsReturn extends ExtensionBlueprintParamsDefiner ? TFactoryParamsReturn - : T['params'] extends BlueprintParamsDefiner + : T['params'] extends ExtensionBlueprintParamsDefiner ? 'Error: This blueprint uses advanced parameter types and requires you to pass parameters as using the following callback syntax: `originalFactory(define => define())`' : Partial; }) @@ -246,9 +250,9 @@ export type ExtensionDefinition< } & ([T['params']] extends [never] ? {} : { - params?: TParamsReturn extends BlueprintParamsDefiner - ? TParamsReturn - : T['params'] extends BlueprintParamsDefiner + params?: TParamsInput extends ExtensionBlueprintParamsDefiner + ? TParamsInput + : T['params'] extends ExtensionBlueprintParamsDefiner ? 'Error: This blueprint uses advanced parameter types and requires you to pass parameters as using the following callback syntax: `originalFactory(define => define())`' : Partial; }) diff --git a/packages/frontend-plugin-api/src/wiring/createExtensionBlueprint.ts b/packages/frontend-plugin-api/src/wiring/createExtensionBlueprint.ts index 6f60950eb3..ced7eabc87 100644 --- a/packages/frontend-plugin-api/src/wiring/createExtensionBlueprint.ts +++ b/packages/frontend-plugin-api/src/wiring/createExtensionBlueprint.ts @@ -38,21 +38,42 @@ import { } from './resolveInputOverrides'; import { ExtensionDataContainer } from './types'; -export type BlueprintParamsDefiner< +/** + * A function used to define a parameter mapping function in order to facilitate + * advanced parameter typing for extension blueprints. + * + * @remarks + * + * This function is primarily intended to enable the use of inferred type + * parameters for blueprint params, but it can also be used to transoform the + * params before they are handed ot the blueprint. + * + * The function must return an object created with + * {@link createExtensionBlueprintParams}. + * + * @public + */ +export type ExtensionBlueprintParamsDefiner< TParams extends object = object, TInput = any, -> = (params: TInput) => BlueprintParams; -export type BlueprintParamsFactory = ( - define: TDefiner, -) => ReturnType; +> = (params: TInput) => ExtensionBlueprintParams; -export type BlueprintParams = { +/** + * An opaque type that represents a set of parameters to be passed to a blueprint. + * + * @remarks + * + * Created with {@link createExtensionBlueprintParams}. + * + * @public + */ +export type ExtensionBlueprintParams = { $$type: '@backstage/BlueprintParams'; T: T; }; const OpaqueBlueprintParams = OpaqueType.create<{ - public: BlueprintParams; + public: ExtensionBlueprintParams; versions: { version: 'v1'; params: object; @@ -62,9 +83,18 @@ const OpaqueBlueprintParams = OpaqueType.create<{ versions: ['v1'], }); +/** + * Wraps a plain blueprint parameter object in an opaque {@link ExtensionBlueprintParams} object. + * + * This is used in the definition of the `defineParams` option of {@link ExtensionBlueprint}. + * + * @public + * @param params - The plain blueprint parameter object to wrap. + * @returns The wrapped blueprint parameter object. + */ export function createExtensionBlueprintParams( params: T, -): BlueprintParams { +): ExtensionBlueprintParams { return OpaqueBlueprintParams.createInstance('v1', { T: null as any, params }); } @@ -74,7 +104,7 @@ export function createExtensionBlueprintParams( export type CreateExtensionBlueprintOptions< TKind extends string, TName extends string | undefined, - TParams extends object | BlueprintParamsDefiner, + TParams extends object | ExtensionBlueprintParamsDefiner, UOutput extends AnyExtensionDataRef, TInputs extends { [inputName in string]: ExtensionInput< @@ -95,11 +125,49 @@ export type CreateExtensionBlueprintOptions< config?: { schema: TConfigSchema; }; - defineParams?: TParams extends BlueprintParamsDefiner + /** + * This option is used to further refine the blueprint params. When this + * option is used, the blueprint will require params to be passed in callback + * form. This function can both transform the params before they are handed to + * the blueprint factory, but importantly it also allows you to define + * inferred type parameters for your blueprint params. + * + * @example + * Blueprint definition with inferred type parameters: + * ```ts + * const ExampleBlueprint = createExtensionBlueprint({ + * kind: 'example', + * attachTo: { id: 'example', input: 'example' }, + * output: [exampleComponentDataRef, exampleFetcherDataRef], + * defineParams(params: { + * component(props: ExampleProps): JSX.Element | null + * fetcher(options: FetchOptions): Promise> + * }) { + * return createExtensionBlueprintParams(params); + * }, + * *factory(params) { + * yield exampleComponentDataRef(params.component) + * yield exampleFetcherDataRef(params.fetcher) + * }, + * }); + * ``` + * + * @example + * Usage of the above example blueprint: + * ```ts + * const example = ExampleBlueprint.make({ + * params: define => define({ + * component: ..., + * fetcher: ..., + * }), + * }); + * ``` + */ + defineParams?: TParams extends ExtensionBlueprintParamsDefiner ? TParams - : 'The params option must be a function if provided, see the docs for details'; + : 'The defineParams option must be a function if provided, see the docs for details'; factory( - params: TParams extends BlueprintParamsDefiner + params: TParams extends ExtensionBlueprintParamsDefiner ? ReturnType['T'] : TParams, context: { @@ -119,7 +187,7 @@ export type CreateExtensionBlueprintOptions< export type ExtensionBlueprintParameters = { kind: string; name?: string; - params: object | BlueprintParamsDefiner; + params?: object | ExtensionBlueprintParamsDefiner; configInput?: { [K in string]: any }; config?: { [K in string]: any }; output?: AnyExtensionDataRef; @@ -132,18 +200,23 @@ export type ExtensionBlueprintParameters = { dataRefs?: { [name in string]: AnyExtensionDataRef }; }; +/** @ignore */ +type ParamsFactory = ( + define: TDefiner, +) => ReturnType; + /** * Represents any form of params input that can be passed to a blueprint. * This also includes the invalid form of passing a plain params object to a blueprint that uses a definition callback. * - * @internal + * @ignore */ -type AnyParamsInput = - TParams extends BlueprintParamsDefiner - ? IParams | BlueprintParamsFactory +type AnyParamsInput = + TParams extends ExtensionBlueprintParamsDefiner + ? IParams | ParamsFactory : | TParams - | BlueprintParamsFactory>; + | ParamsFactory>; /** * @public @@ -156,16 +229,16 @@ export interface ExtensionBlueprint< make< TNewName extends string | undefined, - TParamsReturn extends AnyParamsInput, + TParamsInput extends AnyParamsInput>, >(args: { name?: TNewName; attachTo?: ExtensionAttachToSpec; disabled?: boolean; - params: TParamsReturn extends BlueprintParamsDefiner - ? TParamsReturn - : T['params'] extends BlueprintParamsDefiner + params: TParamsInput extends ExtensionBlueprintParamsDefiner + ? TParamsInput + : T['params'] extends ExtensionBlueprintParamsDefiner ? 'Error: This blueprint uses advanced parameter types and requires you to pass parameters as using the following callback syntax: `.make({ params: define => define() })`' - : TParamsReturn; + : TParamsInput; }): ExtensionDefinition<{ kind: T['kind']; name: string | undefined extends TNewName ? T['name'] : TNewName; @@ -211,12 +284,14 @@ export interface ExtensionBlueprint< }; }; factory( - originalFactory: >( - params: TParamsReturn extends BlueprintParamsDefiner - ? TParamsReturn - : T['params'] extends BlueprintParamsDefiner + originalFactory: < + TParamsInput extends AnyParamsInput>, + >( + params: TParamsInput extends ExtensionBlueprintParamsDefiner + ? TParamsInput + : T['params'] extends ExtensionBlueprintParamsDefiner ? 'Error: This blueprint uses advanced parameter types and requires you to pass parameters as using the following callback syntax: `originalFactory(define => define())`' - : TParamsReturn, + : TParamsInput, context?: { config?: T['config']; inputs?: ResolveInputValueOverrides>; @@ -268,12 +343,12 @@ export interface ExtensionBlueprint< function unwrapParamsFactory( // Allow `Function` because `typeof === 'function'` allows it, but in practice this should always be a param factory - params: BlueprintParamsFactory | Function, - defineParams: BlueprintParamsDefiner, + params: ParamsFactory | Function, + defineParams: ExtensionBlueprintParamsDefiner, kind: string, ): TParams { const paramDefinition = ( - params as BlueprintParamsFactory + params as ParamsFactory )(defineParams); try { return OpaqueBlueprintParams.toInternal(paramDefinition).params as TParams; @@ -285,14 +360,14 @@ function unwrapParamsFactory( } function unwrapParams( - params: object | BlueprintParamsFactory | string, + params: object | ParamsFactory | string, ctx: { node: AppNode; [ctxParamsSymbol]?: any }, - defineParams: BlueprintParamsDefiner | undefined, + defineParams: ExtensionBlueprintParamsDefiner | undefined, kind: string, ): TParams { const overrideParams = ctx[ctxParamsSymbol] as | object - | BlueprintParamsFactory + | ParamsFactory | undefined; if (defineParams) { @@ -343,7 +418,7 @@ function unwrapParams( * @public */ export function createExtensionBlueprint< - TParams extends object | BlueprintParamsDefiner, + TParams extends object | ExtensionBlueprintParamsDefiner, UOutput extends AnyExtensionDataRef, TInputs extends { [inputName in string]: ExtensionInput< @@ -386,7 +461,7 @@ export function createExtensionBlueprint< dataRefs: TDataRefs; }> { const defineParams = options.defineParams as - | BlueprintParamsDefiner + | ExtensionBlueprintParamsDefiner | undefined; return { diff --git a/packages/frontend-plugin-api/src/wiring/index.ts b/packages/frontend-plugin-api/src/wiring/index.ts index 24a4e1653f..0f170d949f 100644 --- a/packages/frontend-plugin-api/src/wiring/index.ts +++ b/packages/frontend-plugin-api/src/wiring/index.ts @@ -66,6 +66,9 @@ export { type CreateExtensionBlueprintOptions, type ExtensionBlueprint, type ExtensionBlueprintParameters, + type ExtensionBlueprintParams, + type ExtensionBlueprintParamsDefiner, createExtensionBlueprint, + createExtensionBlueprintParams, } from './createExtensionBlueprint'; export { type ResolveInputValueOverrides } from './resolveInputOverrides'; diff --git a/plugins/api-docs/report-alpha.api.md b/plugins/api-docs/report-alpha.api.md index f0a65d45c8..c383ea810c 100644 --- a/plugins/api-docs/report-alpha.api.md +++ b/plugins/api-docs/report-alpha.api.md @@ -7,12 +7,12 @@ import { AnyApiFactory } from '@backstage/frontend-plugin-api'; import { AnyExtensionDataRef } from '@backstage/frontend-plugin-api'; import { AnyRouteRefParams } from '@backstage/frontend-plugin-api'; import { ApiFactory } from '@backstage/frontend-plugin-api'; -import { BlueprintParams } from '@backstage/frontend-plugin-api/src/wiring/createExtensionBlueprint'; import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; import { defaultEntityContentGroups } from '@backstage/plugin-catalog-react/alpha'; import { Entity } from '@backstage/catalog-model'; import { EntityCardType } from '@backstage/plugin-catalog-react/alpha'; import { EntityPredicate } from '@backstage/plugin-catalog-react/alpha'; +import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api'; import { ExtensionDefinition } from '@backstage/frontend-plugin-api'; import { ExtensionInput } from '@backstage/frontend-plugin-api'; import { ExternalRouteRef } from '@backstage/frontend-plugin-api'; @@ -81,7 +81,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'entity-card:api-docs/consumed-apis': ExtensionDefinition<{ kind: 'entity-card'; diff --git a/plugins/app/report.api.md b/plugins/app/report.api.md index df1f47a68b..15001d2961 100644 --- a/plugins/app/report.api.md +++ b/plugins/app/report.api.md @@ -8,10 +8,10 @@ import { AnyExtensionDataRef } from '@backstage/frontend-plugin-api'; import { AnyRouteRefParams } from '@backstage/frontend-plugin-api'; import { ApiFactory } from '@backstage/frontend-plugin-api'; import { AppTheme } from '@backstage/frontend-plugin-api'; -import { BlueprintParams } from '@backstage/frontend-plugin-api/src/wiring/createExtensionBlueprint'; import { ComponentRef } from '@backstage/frontend-plugin-api'; import { ComponentType } from 'react'; import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; +import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api'; import { ExtensionDefinition } from '@backstage/frontend-plugin-api'; import { ExtensionInput } from '@backstage/frontend-plugin-api'; import { FrontendPlugin } from '@backstage/frontend-plugin-api'; @@ -230,7 +230,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/analytics': ExtensionDefinition<{ kind: 'api'; @@ -249,7 +249,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/app-language': ExtensionDefinition<{ kind: 'api'; @@ -268,7 +268,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/app-theme': ExtensionDefinition<{ config: {}; @@ -295,7 +295,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/atlassian-auth': ExtensionDefinition<{ kind: 'api'; @@ -314,7 +314,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/bitbucket-auth': ExtensionDefinition<{ kind: 'api'; @@ -333,7 +333,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/bitbucket-server-auth': ExtensionDefinition<{ kind: 'api'; @@ -352,7 +352,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/components': ExtensionDefinition<{ config: {}; @@ -386,7 +386,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/dialog': ExtensionDefinition<{ kind: 'api'; @@ -405,7 +405,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/discovery': ExtensionDefinition<{ kind: 'api'; @@ -424,7 +424,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/error': ExtensionDefinition<{ kind: 'api'; @@ -443,7 +443,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/feature-flags': ExtensionDefinition<{ kind: 'api'; @@ -462,7 +462,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/fetch': ExtensionDefinition<{ kind: 'api'; @@ -481,7 +481,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/github-auth': ExtensionDefinition<{ kind: 'api'; @@ -500,7 +500,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/gitlab-auth': ExtensionDefinition<{ kind: 'api'; @@ -519,7 +519,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/google-auth': ExtensionDefinition<{ kind: 'api'; @@ -538,7 +538,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/icons': ExtensionDefinition<{ config: {}; @@ -571,7 +571,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/microsoft-auth': ExtensionDefinition<{ kind: 'api'; @@ -590,7 +590,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/oauth-request': ExtensionDefinition<{ kind: 'api'; @@ -609,7 +609,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/okta-auth': ExtensionDefinition<{ kind: 'api'; @@ -628,7 +628,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/onelogin-auth': ExtensionDefinition<{ kind: 'api'; @@ -647,7 +647,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/permission': ExtensionDefinition<{ kind: 'api'; @@ -666,7 +666,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/scm-auth': ExtensionDefinition<{ kind: 'api'; @@ -685,7 +685,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/scm-integrations': ExtensionDefinition<{ kind: 'api'; @@ -704,7 +704,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/storage': ExtensionDefinition<{ kind: 'api'; @@ -723,7 +723,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/translations': ExtensionDefinition<{ config: {}; @@ -761,7 +761,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:app/vmware-cloud-auth': ExtensionDefinition<{ kind: 'api'; @@ -780,7 +780,7 @@ const appPlugin: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'app-root-element:app/alert-display': ExtensionDefinition<{ config: { diff --git a/plugins/catalog-import/report-alpha.api.md b/plugins/catalog-import/report-alpha.api.md index 31192683bd..2e75f9481c 100644 --- a/plugins/catalog-import/report-alpha.api.md +++ b/plugins/catalog-import/report-alpha.api.md @@ -6,8 +6,8 @@ import { AnyApiFactory } from '@backstage/core-plugin-api'; import { AnyRouteRefParams } from '@backstage/frontend-plugin-api'; import { ApiFactory } from '@backstage/core-plugin-api'; -import { BlueprintParams } from '@backstage/frontend-plugin-api/src/wiring/createExtensionBlueprint'; import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; +import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api'; import { ExtensionDefinition } from '@backstage/frontend-plugin-api'; import { FrontendPlugin } from '@backstage/frontend-plugin-api'; import { JSX as JSX_2 } from 'react'; @@ -111,7 +111,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'page:catalog-import': ExtensionDefinition<{ kind: 'page'; diff --git a/plugins/catalog-unprocessed-entities/report-alpha.api.md b/plugins/catalog-unprocessed-entities/report-alpha.api.md index b742ece07c..fa64ed329a 100644 --- a/plugins/catalog-unprocessed-entities/report-alpha.api.md +++ b/plugins/catalog-unprocessed-entities/report-alpha.api.md @@ -6,8 +6,8 @@ import { AnyApiFactory } from '@backstage/frontend-plugin-api'; import { AnyRouteRefParams } from '@backstage/frontend-plugin-api'; import { ApiFactory } from '@backstage/frontend-plugin-api'; -import { BlueprintParams } from '@backstage/frontend-plugin-api/src/wiring/createExtensionBlueprint'; import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; +import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api'; import { ExtensionDefinition } from '@backstage/frontend-plugin-api'; import { FrontendPlugin } from '@backstage/frontend-plugin-api'; import { IconComponent } from '@backstage/core-plugin-api'; @@ -38,7 +38,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'nav-item:catalog-unprocessed-entities': ExtensionDefinition<{ kind: 'nav-item'; diff --git a/plugins/catalog/report-alpha.api.md b/plugins/catalog/report-alpha.api.md index 369b666905..cfbbc5388e 100644 --- a/plugins/catalog/report-alpha.api.md +++ b/plugins/catalog/report-alpha.api.md @@ -7,7 +7,6 @@ import { AnyApiFactory } from '@backstage/frontend-plugin-api'; import { AnyExtensionDataRef } from '@backstage/frontend-plugin-api'; import { AnyRouteRefParams } from '@backstage/frontend-plugin-api'; import { ApiFactory } from '@backstage/frontend-plugin-api'; -import { BlueprintParams } from '@backstage/frontend-plugin-api/src/wiring/createExtensionBlueprint'; import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; import { defaultEntityContentGroups } from '@backstage/plugin-catalog-react/alpha'; import { Entity } from '@backstage/catalog-model'; @@ -15,6 +14,7 @@ import { EntityCardType } from '@backstage/plugin-catalog-react/alpha'; import { EntityContentLayoutProps } from '@backstage/plugin-catalog-react/alpha'; import { EntityContextMenuItemParams } from '@backstage/plugin-catalog-react/alpha'; import { EntityPredicate } from '@backstage/plugin-catalog-react/alpha'; +import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api'; import { ExtensionDefinition } from '@backstage/frontend-plugin-api'; import { ExtensionInput } from '@backstage/frontend-plugin-api'; import { ExternalRouteRef } from '@backstage/frontend-plugin-api'; @@ -154,7 +154,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:catalog/entity-presentation': ExtensionDefinition<{ kind: 'api'; @@ -173,7 +173,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:catalog/starred-entities': ExtensionDefinition<{ kind: 'api'; @@ -192,7 +192,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'catalog-filter:catalog/kind': ExtensionDefinition<{ config: { diff --git a/plugins/devtools/report-alpha.api.md b/plugins/devtools/report-alpha.api.md index 0b6b41ce3b..2ede4d34b2 100644 --- a/plugins/devtools/report-alpha.api.md +++ b/plugins/devtools/report-alpha.api.md @@ -6,8 +6,8 @@ import { AnyApiFactory } from '@backstage/frontend-plugin-api'; import { AnyRouteRefParams } from '@backstage/frontend-plugin-api'; import { ApiFactory } from '@backstage/frontend-plugin-api'; -import { BlueprintParams } from '@backstage/frontend-plugin-api/src/wiring/createExtensionBlueprint'; import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; +import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api'; import { ExtensionDefinition } from '@backstage/frontend-plugin-api'; import { FrontendPlugin } from '@backstage/frontend-plugin-api'; import { IconComponent } from '@backstage/core-plugin-api'; @@ -38,7 +38,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'nav-item:devtools': ExtensionDefinition<{ kind: 'nav-item'; diff --git a/plugins/home/report-alpha.api.md b/plugins/home/report-alpha.api.md index 17ca91ca2a..010918b029 100644 --- a/plugins/home/report-alpha.api.md +++ b/plugins/home/report-alpha.api.md @@ -6,8 +6,8 @@ import { AnyApiFactory } from '@backstage/frontend-plugin-api'; import { AnyRouteRefParams } from '@backstage/frontend-plugin-api'; import { ApiFactory } from '@backstage/frontend-plugin-api'; -import { BlueprintParams } from '@backstage/frontend-plugin-api/src/wiring/createExtensionBlueprint'; import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; +import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api'; import { ExtensionDefinition } from '@backstage/frontend-plugin-api'; import { ExtensionInput } from '@backstage/frontend-plugin-api'; import { FrontendPlugin } from '@backstage/frontend-plugin-api'; @@ -39,7 +39,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'app-root-element:home/visit-listener': ExtensionDefinition<{ kind: 'app-root-element'; diff --git a/plugins/kubernetes/report-alpha.api.md b/plugins/kubernetes/report-alpha.api.md index 6971e1b1e0..37bb084bd7 100644 --- a/plugins/kubernetes/report-alpha.api.md +++ b/plugins/kubernetes/report-alpha.api.md @@ -6,11 +6,11 @@ import { AnyApiFactory } from '@backstage/frontend-plugin-api'; import { AnyRouteRefParams } from '@backstage/frontend-plugin-api'; import { ApiFactory } from '@backstage/frontend-plugin-api'; -import { BlueprintParams } from '@backstage/frontend-plugin-api/src/wiring/createExtensionBlueprint'; import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; import { defaultEntityContentGroups } from '@backstage/plugin-catalog-react/alpha'; import { Entity } from '@backstage/catalog-model'; import { EntityPredicate } from '@backstage/plugin-catalog-react/alpha'; +import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api'; import { ExtensionDefinition } from '@backstage/frontend-plugin-api'; import { FrontendPlugin } from '@backstage/frontend-plugin-api'; import { JSX as JSX_2 } from 'react'; @@ -41,7 +41,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:kubernetes/auth-providers': ExtensionDefinition<{ kind: 'api'; @@ -60,7 +60,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:kubernetes/cluster-link-formatter': ExtensionDefinition<{ kind: 'api'; @@ -79,7 +79,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:kubernetes/proxy': ExtensionDefinition<{ kind: 'api'; @@ -98,7 +98,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'entity-content:kubernetes/kubernetes': ExtensionDefinition<{ kind: 'entity-content'; diff --git a/plugins/notifications/report-alpha.api.md b/plugins/notifications/report-alpha.api.md index 210ee8ac4f..b512d97ce3 100644 --- a/plugins/notifications/report-alpha.api.md +++ b/plugins/notifications/report-alpha.api.md @@ -6,8 +6,8 @@ import { AnyApiFactory } from '@backstage/frontend-plugin-api'; import { AnyRouteRefParams } from '@backstage/frontend-plugin-api'; import { ApiFactory } from '@backstage/frontend-plugin-api'; -import { BlueprintParams } from '@backstage/frontend-plugin-api/src/wiring/createExtensionBlueprint'; import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; +import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api'; import { ExtensionDefinition } from '@backstage/frontend-plugin-api'; import { FrontendPlugin } from '@backstage/frontend-plugin-api'; import { JSX as JSX_2 } from 'react'; @@ -37,7 +37,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'page:notifications': ExtensionDefinition<{ kind: 'page'; diff --git a/plugins/scaffolder-react/report-alpha.api.md b/plugins/scaffolder-react/report-alpha.api.md index ea8a864138..7de5c1b819 100644 --- a/plugins/scaffolder-react/report-alpha.api.md +++ b/plugins/scaffolder-react/report-alpha.api.md @@ -8,12 +8,12 @@ import { AnyApiRef } from '@backstage/core-plugin-api'; import { ApiFactory } from '@backstage/frontend-plugin-api'; import { ApiHolder } from '@backstage/core-plugin-api'; import { ApiRef } from '@backstage/frontend-plugin-api'; -import { BlueprintParams } from '@backstage/frontend-plugin-api/src/wiring/createExtensionBlueprint'; import { ComponentType } from 'react'; import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; import { CustomFieldValidator } from '@backstage/plugin-scaffolder-react'; import { Dispatch } from 'react'; import { ExtensionBlueprint } from '@backstage/frontend-plugin-api'; +import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api'; import { ExtensionDefinition } from '@backstage/frontend-plugin-api'; import { ExtensionInput } from '@backstage/frontend-plugin-api'; import { FieldExtensionComponentProps } from '@backstage/plugin-scaffolder-react'; @@ -226,7 +226,7 @@ export const formFieldsApi: ExtensionDefinition<{ TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; // @alpha @deprecated (undocumented) diff --git a/plugins/scaffolder/report-alpha.api.md b/plugins/scaffolder/report-alpha.api.md index 55c90ddb1b..394ae081d6 100644 --- a/plugins/scaffolder/report-alpha.api.md +++ b/plugins/scaffolder/report-alpha.api.md @@ -7,11 +7,11 @@ import { AnyApiFactory } from '@backstage/frontend-plugin-api'; import { AnyRouteRefParams } from '@backstage/frontend-plugin-api'; import { ApiFactory } from '@backstage/frontend-plugin-api'; import { ApiRef } from '@backstage/frontend-plugin-api'; -import { BlueprintParams } from '@backstage/frontend-plugin-api/src/wiring/createExtensionBlueprint'; import { ComponentType } from 'react'; import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; import { Entity } from '@backstage/catalog-model'; import { EntityPredicate } from '@backstage/plugin-catalog-react/alpha'; +import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api'; import { ExtensionDefinition } from '@backstage/frontend-plugin-api'; import { ExtensionInput } from '@backstage/frontend-plugin-api'; import { ExternalRouteRef } from '@backstage/frontend-plugin-api'; @@ -74,7 +74,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:scaffolder/form-decorators': ExtensionDefinition<{ config: {}; @@ -105,7 +105,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:scaffolder/form-fields': ExtensionDefinition<{ config: {}; @@ -136,7 +136,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'entity-icon-link:scaffolder/launch-template': ExtensionDefinition<{ kind: 'entity-icon-link'; @@ -293,7 +293,7 @@ export const formDecoratorsApi: ExtensionDefinition<{ TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; // @alpha (undocumented) diff --git a/plugins/search/report-alpha.api.md b/plugins/search/report-alpha.api.md index f7916a8467..1edc5e678d 100644 --- a/plugins/search/report-alpha.api.md +++ b/plugins/search/report-alpha.api.md @@ -6,8 +6,8 @@ import { AnyApiFactory } from '@backstage/core-plugin-api'; import { AnyRouteRefParams } from '@backstage/frontend-plugin-api'; import { ApiFactory } from '@backstage/core-plugin-api'; -import { BlueprintParams } from '@backstage/frontend-plugin-api/src/wiring/createExtensionBlueprint'; import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; +import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api'; import { ExtensionDefinition } from '@backstage/frontend-plugin-api'; import { ExtensionInput } from '@backstage/frontend-plugin-api'; import { FrontendPlugin } from '@backstage/frontend-plugin-api'; @@ -43,7 +43,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'nav-item:search': ExtensionDefinition<{ kind: 'nav-item'; @@ -157,7 +157,7 @@ export const searchApi: ExtensionDefinition<{ TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; // @alpha (undocumented) diff --git a/plugins/signals/report-alpha.api.md b/plugins/signals/report-alpha.api.md index a0b8dfe18f..13091a9032 100644 --- a/plugins/signals/report-alpha.api.md +++ b/plugins/signals/report-alpha.api.md @@ -5,8 +5,8 @@ ```ts import { AnyApiFactory } from '@backstage/frontend-plugin-api'; import { ApiFactory } from '@backstage/frontend-plugin-api'; -import { BlueprintParams } from '@backstage/frontend-plugin-api/src/wiring/createExtensionBlueprint'; import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; +import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api'; import { ExtensionDefinition } from '@backstage/frontend-plugin-api'; import { FrontendPlugin } from '@backstage/frontend-plugin-api'; import { JSX as JSX_2 } from 'react'; @@ -33,7 +33,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'app-root-element:signals/signals-display': ExtensionDefinition<{ kind: 'app-root-element'; diff --git a/plugins/techdocs/report-alpha.api.md b/plugins/techdocs/report-alpha.api.md index ce5e06a35c..fd63ec1daa 100644 --- a/plugins/techdocs/report-alpha.api.md +++ b/plugins/techdocs/report-alpha.api.md @@ -7,11 +7,11 @@ import { AnyApiFactory } from '@backstage/frontend-plugin-api'; import { AnyExtensionDataRef } from '@backstage/frontend-plugin-api'; import { AnyRouteRefParams } from '@backstage/frontend-plugin-api'; import { ApiFactory } from '@backstage/frontend-plugin-api'; -import { BlueprintParams } from '@backstage/frontend-plugin-api/src/wiring/createExtensionBlueprint'; import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; import { defaultEntityContentGroups } from '@backstage/plugin-catalog-react/alpha'; import { Entity } from '@backstage/catalog-model'; import { EntityPredicate } from '@backstage/plugin-catalog-react/alpha'; +import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api'; import { ExtensionDefinition } from '@backstage/frontend-plugin-api'; import { ExtensionInput } from '@backstage/frontend-plugin-api'; import { FrontendPlugin } from '@backstage/frontend-plugin-api'; @@ -54,7 +54,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'api:techdocs/storage': ExtensionDefinition<{ kind: 'api'; @@ -73,7 +73,7 @@ const _default: FrontendPlugin< TDeps extends { [name in string]: unknown }, >( params: ApiFactory, - ) => BlueprintParams; + ) => ExtensionBlueprintParams; }>; 'empty-state:techdocs/entity-content': ExtensionDefinition<{ config: {};