Interface ExtensionBlueprint<T> 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" ] ; } , > ; } Properties Methods make 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" ] ; } , > Parameters 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" ] ; } Returns 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" ] ; } , > make With Overrides 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" ] ; } , > 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" ] ; } , >
Creates a new extension from the blueprint.
You must either pass
paramsdirectly, or define afactorythat can optionally call the original factory with the same params.