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, { optional: boolean; singleton: boolean }, > ? IData : never, { optional: boolean; singleton: boolean }, > }; T: T; override< TExtensionConfigSchema extends { [key: string]: (zImpl: __module) => ZodType }, UFactoryOutput extends ExtensionDataValue<any, any>, UNewOutput extends ExtensionDataRef, TExtraInputs extends { [key: string]: ExtensionInput< ExtensionDataRef, { 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, >( args: Expand< { attachTo?: ExtensionDefinitionAttachTo<UParentInputs> & VerifyExtensionAttachTo<ExtensionDataRef extends UNewOutput ? NonNullable<...> : UNewOutput, UParentInputs>
; config?: { schema: TExtensionConfigSchema & { [KName in string | number | symbol]?: `Error: Config key '${(...)
& (...)
}' is already defined in parent schema` }; }; disabled?: boolean; 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]: TypeOf< ReturnType<TExtensionConfigSchema[key]>, > }; inputs: Expand<ResolvedExtensionInputs<T["inputs"] & TExtraInputs>>; node: AppNode; }, ): Iterable<UFactoryOutput>; } & (
[T["params"]] extends [never] ? {} : { params?: TParamsInput extends ExtensionBlueprintDefineParams ? TParamsInput<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]: TypeOf<ReturnType<TExtensionConfigSchema[key]>> }; configInput: T["configInput"] & { [k in string | number | symbol]: baseObjectInputType< { [key in string | number | symbol]: ReturnType<TExtensionConfigSchema[key]> }, >[k] }; 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, { optional: boolean; singleton: boolean }, > ? IData : never, { optional: boolean; singleton: boolean }, >} Methods
override
override< TExtensionConfigSchema extends { [key: string]: (zImpl: __module) => ZodType }, UFactoryOutput extends ExtensionDataValue<any, any>, UNewOutput extends ExtensionDataRef, TExtraInputs extends { [key: string]: ExtensionInput< ExtensionDataRef, { 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,>( args: Expand< { attachTo?: ExtensionDefinitionAttachTo<UParentInputs> & VerifyExtensionAttachTo<ExtensionDataRef extends UNewOutput ? NonNullable<...> : UNewOutput, UParentInputs>
; config?: { schema: TExtensionConfigSchema & { [KName in string | number | symbol]?: `Error: Config key '${(...)
& (...)
}' is already defined in parent schema` }; }; disabled?: boolean; 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]: TypeOf< ReturnType<TExtensionConfigSchema[key]>, > }; inputs: Expand<ResolvedExtensionInputs<T["inputs"] & TExtraInputs>>; node: AppNode; }, ): Iterable<UFactoryOutput>; } & (
[T["params"]] extends [never] ? {} : { params?: TParamsInput extends ExtensionBlueprintDefineParams ? TParamsInput<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]: TypeOf<ReturnType<TExtensionConfigSchema[key]>> }; configInput: T["configInput"] & { [k in string | number | symbol]: baseObjectInputType< { [key in string | number | symbol]: ReturnType<TExtensionConfigSchema[key]> }, >[k] }; 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?: {
schema: TExtensionConfigSchema & {
[KName in string
| number
| symbol]?: `Error: Config key '${(...) & (...)}' is already defined in parent schema`
};
};
disabled?: boolean;
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]: TypeOf<
ReturnType<TExtensionConfigSchema[key]>,
>
};
inputs: Expand<ResolvedExtensionInputs<T["inputs"] & TExtraInputs>>;
node: AppNode;
},
): Iterable<UFactoryOutput>;
} & (
[T["params"]] extends [never]
? {}
: {
params?: TParamsInput extends ExtensionBlueprintDefineParams
? TParamsInput<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,
>
Returns OverridableExtensionDefinition<
{
config: T["config"] & {
[key in string
| number
| symbol]: TypeOf<ReturnType<TExtensionConfigSchema[key]>>
};
configInput: T["configInput"] & {
[k in string
| number
| symbol]: baseObjectInputType<
{
[key in string
| number
| symbol]: ReturnType<TExtensionConfigSchema[key]>
},
>[k]
};
inputs: T["inputs"] & TExtraInputs;
kind: T["kind"];
name: T["name"];
output: ExtensionDataRef extends UNewOutput ? T["output"] : UNewOutput;
},
>
References to the inputs of this extension, which can be used to attach child extensions.