Interface OverridableExtensionDefinition<T>
interface OverridableExtensionDefinition< T extends ExtensionDefinitionParameters = ExtensionDefinitionParameters,> { $$type: "@backstage/ExtensionDefinition"; inputs: { [K in string | number | symbol]: ExtensionInput< T["inputs"][K] extends ExtensionInput< IData, { internal?: boolean; optional: boolean; singleton: boolean }, > ? IData : never, { internal?: boolean; optional: boolean; singleton: boolean }, > }; T: T; override< UFactoryOutput extends ExtensionDataValue<any, any>, UNewOutput extends ExtensionDataRef, TExtraInputs extends { [key: string]: ExtensionInput< ExtensionDataRef, { internal?: boolean; optional: boolean; singleton: boolean }, >; }, TParamsInput extends | object | (
( define: ExtensionBlueprintDefineParams<object> & object, ) => ExtensionBlueprintParams<object> )
| (
( define: ExtensionBlueprintDefineParams<object, object>, ) => ExtensionBlueprintParams<object> )
| (
( define: ExtensionBlueprintDefineParams, ) => ExtensionBlueprintParams<object> )
, UParentInputs extends ExtensionDataRef, TNewExtensionConfigSchema extends { [key: string]: StandardSchemaV1<unknown, unknown> } = {}, >( args: Expand< { attachTo?: ExtensionDefinitionAttachTo<UParentInputs> & VerifyExtensionAttachTo<ExtensionDataRef extends UNewOutput ? NonNullable<...> : UNewOutput, UParentInputs>
; config?: undefined; configSchema?: TNewExtensionConfigSchema & { [KName in string | number | symbol]?: `Error: Config key '${KName & string}' is already defined in parent schema` }; disabled?: boolean; if?: FilterPredicate; inputs?: TExtraInputs & { [KName in string | number | symbol]?: `Error: Input '${KName & string}' is already defined in parent definition` }; output?: UNewOutput[]; factory?( originalFactory: < TFactoryParamsReturn extends | object | (
( define: ExtensionBlueprintDefineParams<object> & object, ) => ExtensionBlueprintParams<object> )
| (
( define: ExtensionBlueprintDefineParams<object, object>, ) => ExtensionBlueprintParams<object> )
| (
( define: ExtensionBlueprintDefineParams, ) => ExtensionBlueprintParams<object> )
, >( context?: Expand< { config?: (...)
[(...)
]; inputs?: ResolvedInputValueOverrides<(...)
>; } & (
[(...)
[(...)
]] extends [never] ? {} : { params?: (...)
| (...)
} )
, >, ) => ExtensionDataContainer<NonNullable<T["output"]>>, context: { apis: ApiHolder; config: T["config"] & { [key in string | number | symbol]: InferOutput< TNewExtensionConfigSchema[key], > }; inputs: Expand<ResolvedExtensionInputs<T["inputs"] & TExtraInputs>>; node: AppNode; }, ): 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< { config: T["config"] & { [key in string | number | symbol]: InferOutput<TNewExtensionConfigSchema[key]> }; configInput: T["configInput"] & { [key in string | number | symbol]?: InferInput<TNewExtensionConfigSchema[key]> }; inputs: T["inputs"] & TExtraInputs; kind: T["kind"]; name: T["name"]; output: ExtensionDataRef extends UNewOutput ? T["output"] : UNewOutput; }, >;}
Properties
$$type
$$type: "@backstage/ExtensionDefinition"
inputs: { [K in string | number | symbol]: ExtensionInput< T["inputs"][K] extends ExtensionInput< IData, { internal?: boolean; optional: boolean; singleton: boolean }, > ? IData : never, { internal?: boolean; optional: boolean; singleton: boolean }, >}
Methods
override
-
override< UFactoryOutput extends ExtensionDataValue<any, any>, UNewOutput extends ExtensionDataRef, TExtraInputs extends { [key: string]: ExtensionInput< ExtensionDataRef, { internal?: boolean; optional: boolean; singleton: boolean }, >; }, TParamsInput extends | object | (
( define: ExtensionBlueprintDefineParams<object> & object, ) => ExtensionBlueprintParams<object> )
| (
( define: ExtensionBlueprintDefineParams<object, object>, ) => ExtensionBlueprintParams<object> )
| (
( define: ExtensionBlueprintDefineParams, ) => ExtensionBlueprintParams<object> )
, UParentInputs extends ExtensionDataRef, TNewExtensionConfigSchema extends { [key: string]: StandardSchemaV1<unknown, unknown> } = {},>( args: Expand< { attachTo?: ExtensionDefinitionAttachTo<UParentInputs> & VerifyExtensionAttachTo<ExtensionDataRef extends UNewOutput ? NonNullable<...> : UNewOutput, UParentInputs>
; config?: undefined; configSchema?: TNewExtensionConfigSchema & { [KName in string | number | symbol]?: `Error: Config key '${KName & string}' is already defined in parent schema` }; disabled?: boolean; if?: FilterPredicate; inputs?: TExtraInputs & { [KName in string | number | symbol]?: `Error: Input '${KName & string}' is already defined in parent definition` }; output?: UNewOutput[]; factory?( originalFactory: < TFactoryParamsReturn extends | object | (
( define: ExtensionBlueprintDefineParams<object> & object, ) => ExtensionBlueprintParams<object> )
| (
( define: ExtensionBlueprintDefineParams<object, object>, ) => ExtensionBlueprintParams<object> )
| (
( define: ExtensionBlueprintDefineParams, ) => ExtensionBlueprintParams<object> )
, >( context?: Expand< { config?: (...)
[(...)
]; inputs?: ResolvedInputValueOverrides<(...)
>; } & (
[(...)
[(...)
]] extends [never] ? {} : { params?: (...)
| (...)
})
, >, ) => ExtensionDataContainer<NonNullable<T["output"]>>, context: { apis: ApiHolder; config: T["config"] & { [key in string | number | symbol]: InferOutput< TNewExtensionConfigSchema[key], > }; inputs: Expand<ResolvedExtensionInputs<T["inputs"] & TExtraInputs>>; node: AppNode; }, ): 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< { config: T["config"] & { [key in string | number | symbol]: InferOutput<TNewExtensionConfigSchema[key]> }; configInput: T["configInput"] & { [key in string | number | symbol]?: InferInput<TNewExtensionConfigSchema[key]> }; inputs: T["inputs"] & TExtraInputs; kind: T["kind"]; name: T["name"]; output: ExtensionDataRef extends UNewOutput ? T["output"] : UNewOutput; },>
Parameters
- args: Expand<
{
attachTo?: ExtensionDefinitionAttachTo<UParentInputs> & VerifyExtensionAttachTo<ExtensionDataRef extends UNewOutput ? NonNullable<...> : UNewOutput, UParentInputs>;
config?: undefined;
configSchema?: TNewExtensionConfigSchema & {
[KName in string
| number
| symbol]?: `Error: Config key '${KName & string}' is already defined in parent schema`
};
disabled?: boolean;
if?: FilterPredicate;
inputs?: TExtraInputs & {
[KName in string
| number
| symbol]?: `Error: Input '${KName & string}' is already defined in parent definition`
};
output?: UNewOutput[];
factory?(
originalFactory: <
TFactoryParamsReturn extends
| object
| (
(
define: ExtensionBlueprintDefineParams<object> & object,
) => ExtensionBlueprintParams<object>
)
| (
(
define: ExtensionBlueprintDefineParams<object, object>,
) => ExtensionBlueprintParams<object>
)
| (
(
define: ExtensionBlueprintDefineParams,
) => ExtensionBlueprintParams<object>
),
>(
context?: Expand<
{
config?: (...)[(...)];
inputs?: ResolvedInputValueOverrides<(...)>;
} & ([(...)[(...)]] extends [never] ? {} : { params?: (...) | (...) }),
>,
) => ExtensionDataContainer<NonNullable<T["output"]>>,
context: {
apis: ApiHolder;
config: T["config"] & {
[key in string | number | symbol]: InferOutput<
TNewExtensionConfigSchema[key],
>
};
inputs: Expand<ResolvedExtensionInputs<T["inputs"] & TExtraInputs>>;
node: AppNode;
},
): 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,
>
References to the inputs of this extension, which can be used to attach child extensions.