Backstage
    Preparing search index...
    interface ExtensionBlueprint<
        T extends ExtensionBlueprintParameters = ExtensionBlueprintParameters,
    > {
        dataRefs: T["dataRefs"];
        make<
            TName extends string
            | undefined,
            TParamsInput extends
            
                    | object
                    | ParamsFactory<ExtensionBlueprintDefineParams<object, any> & object>
                    | ParamsFactory<ExtensionBlueprintDefineParams<object, object>>
                    | ParamsFactory<ExtensionBlueprintDefineParams<object, any>>,
            UParentInputs extends ExtensionDataRef,
        >(
            args: {
                attachTo?: ExtensionDefinitionAttachTo<UParentInputs> & VerifyExtensionAttachTo<NonNullable<T["output"]>, UParentInputs>;
                disabled?: boolean;
                name?: TName;
                params: TParamsInput extends ExtensionBlueprintDefineParams<object, any>
                    ? TParamsInput<TParamsInput>
                    : T["params"] extends ExtensionBlueprintDefineParams<object, any>
                        ? "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<
            {
                config: T["config"];
                configInput: T["configInput"];
                inputs: T["inputs"];
                kind: T["kind"];
                name: (string | undefined) extends TName ? undefined : TName;
                output: T["output"];
                params: T["params"];
            },
        >;
        makeWithOverrides<
            TName extends string
            | undefined,
            TExtensionConfigSchema extends
                { [key: string]: (zImpl: __module) => ZodType },
            UFactoryOutput extends ExtensionDataValue<any, any>,
            UNewOutput extends ExtensionDataRef,
            UParentInputs extends ExtensionDataRef,
            TExtraInputs extends
                {
                    [key: string]: ExtensionInput<
                        ExtensionDataRef,
                        { optional: boolean; singleton: boolean },
                    >;
                } = {},
        >(
            args: {
                attachTo?: ExtensionDefinitionAttachTo<UParentInputs> & VerifyExtensionAttachTo<ExtensionDataRef extends UNewOutput ? NonNullable<...> : UNewOutput, UParentInputs>;
                config?: {
                    schema: TExtensionConfigSchema & {
                        [KName in string | number | symbol]?: `Error: Config key '${KName & string}' 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`
                };
                name?: TName;
                output?: UNewOutput[];
                factory(
                    originalFactory: <
                        TParamsInput extends
                            | object
                            | ParamsFactory<ExtensionBlueprintDefineParams<object, any> & object>
                            | ParamsFactory<ExtensionBlueprintDefineParams<object, object>>
                            | ParamsFactory<ExtensionBlueprintDefineParams<object, any>>,
                    >(
                        params: TParamsInput extends ExtensionBlueprintDefineParams<
                            object,
                            any,
                        >
                            ? TParamsInput<TParamsInput>
                            : T["params"] extends ExtensionBlueprintDefineParams<object, any>
                                ? "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: {
                        apis: ApiHolder;
                        config: T["config"] & {
                            [key in string | number | symbol]: TypeOf<
                                ReturnType<TExtensionConfigSchema[key]>,
                            >
                        };
                        inputs: Expand<ResolvedExtensionInputs<T["inputs"] & TExtraInputs>>;
                        node: AppNode;
                    },
                ): Iterable<UFactoryOutput, any, any> & VerifyExtensionFactoryOutput<
                    ExtensionDataRef extends UNewOutput
                        ? NonNullable<T["output"]>
                        : UNewOutput,
                    UFactoryOutput,
                >;
            },
        ): OverridableExtensionDefinition<
            {
                config: Expand<
                    (
                        string extends keyof TExtensionConfigSchema
                            ? {}
                            : {
                                [key in string
                                | number
                                | symbol]: TypeOf<ReturnType<TExtensionConfigSchema[key]>>
                            }
                    ) & T["config"],
                >;
                configInput: Expand<
                    (
                        string extends keyof TExtensionConfigSchema
                            ? {}
                            : {
                                [k in string
                                | number
                                | symbol]: baseObjectInputType<
                                    { [key in string
                                    | number
                                    | symbol]: ReturnType<(...)[(...)]> },
                                >[k]
                            }
                    ) & T["configInput"],
                >;
                inputs: Expand<T["inputs"] & TExtraInputs>;
                kind: T["kind"];
                name: (string | undefined) extends TName ? undefined : TName;
                output: ExtensionDataRef extends UNewOutput ? T["output"] : UNewOutput;
                params: T["params"];
            },
        >;
    }

    Type Parameters

    Index

    Properties

    Methods

    Properties

    dataRefs: T["dataRefs"]

    Methods

    • Creates a new extension from the blueprint.

      You must either pass params directly, or define a factory that can optionally call the original factory with the same params.

      Type Parameters

      • TName extends string | undefined
      • TExtensionConfigSchema extends { [key: string]: (zImpl: __module) => ZodType }
      • UFactoryOutput extends ExtensionDataValue<any, any>
      • UNewOutput extends ExtensionDataRef
      • UParentInputs extends ExtensionDataRef
      • TExtraInputs extends {
            [key: string]: ExtensionInput<
                ExtensionDataRef,
                { optional: boolean; singleton: boolean },
            >;
        } = {}

      Parameters

      • args: {
            attachTo?: ExtensionDefinitionAttachTo<UParentInputs> & VerifyExtensionAttachTo<ExtensionDataRef extends UNewOutput ? NonNullable<...> : UNewOutput, UParentInputs>;
            config?: {
                schema: TExtensionConfigSchema & {
                    [KName in string | number | symbol]?: `Error: Config key '${KName & string}' 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`
            };
            name?: TName;
            output?: UNewOutput[];
            factory(
                originalFactory: <
                    TParamsInput extends
                        | object
                        | ParamsFactory<ExtensionBlueprintDefineParams<object, any> & object>
                        | ParamsFactory<ExtensionBlueprintDefineParams<object, object>>
                        | ParamsFactory<ExtensionBlueprintDefineParams<object, any>>,
                >(
                    params: TParamsInput extends ExtensionBlueprintDefineParams<
                        object,
                        any,
                    >
                        ? TParamsInput<TParamsInput>
                        : T["params"] extends ExtensionBlueprintDefineParams<object, any>
                            ? "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: {
                    apis: ApiHolder;
                    config: T["config"] & {
                        [key in string | number | symbol]: TypeOf<
                            ReturnType<TExtensionConfigSchema[key]>,
                        >
                    };
                    inputs: Expand<ResolvedExtensionInputs<T["inputs"] & TExtraInputs>>;
                    node: AppNode;
                },
            ): Iterable<UFactoryOutput, any, any> & VerifyExtensionFactoryOutput<
                ExtensionDataRef extends UNewOutput
                    ? NonNullable<T["output"]>
                    : UNewOutput,
                UFactoryOutput,
            >;
        }

      Returns OverridableExtensionDefinition<
          {
              config: Expand<
                  (
                      string extends keyof TExtensionConfigSchema
                          ? {}
                          : {
                              [key in string
                              | number
                              | symbol]: TypeOf<ReturnType<TExtensionConfigSchema[key]>>
                          }
                  ) & T["config"],
              >;
              configInput: Expand<
                  (
                      string extends keyof TExtensionConfigSchema
                          ? {}
                          : {
                              [k in string
                              | number
                              | symbol]: baseObjectInputType<
                                  { [key in string
                                  | number
                                  | symbol]: ReturnType<(...)[(...)]> },
                              >[k]
                          }
                  ) & T["configInput"],
              >;
              inputs: Expand<T["inputs"] & TExtraInputs>;
              kind: T["kind"];
              name: (string | undefined) extends TName ? undefined : TName;
              output: ExtensionDataRef extends UNewOutput ? T["output"] : UNewOutput;
              params: T["params"];
          },
      >