Backstage
    Preparing search index...

    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;
            },
        >;
    }

    Type Parameters

    Hierarchy (View Summary)

    Index

    Properties

    Methods

    Properties

    $$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 },
        >
    }

    References to the inputs of this extension, which can be used to attach child extensions.

    T: T

    Methods

    • Type Parameters

      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;
          },
      >