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 ; if ?: FilterPredicate ; name ?: TName ; params : TParamsInput extends ExtensionBlueprintDefineParams < object , any > ? 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 , UFactoryOutput extends ExtensionDataValue < any , any > , UNewOutput extends ExtensionDataRef , UParentInputs extends ExtensionDataRef , TExtraInputs extends { [ key : string ]: ExtensionInput < ExtensionDataRef , { internal ?: boolean ; optional : boolean ; singleton : boolean } , > ; } = {} , TNewExtensionConfigSchema extends { [ key : string ]: StandardSchemaV1 < unknown , unknown > } = {} , > ( args : { 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 ` } ; 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 : 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 ] : InferOutput < TNewExtensionConfigSchema [ 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 < { [ key in string | number | symbol ] : InferOutput < TNewExtensionConfigSchema [ key ] > } & T [ "config" ] , > ; configInput : Expand < { [ key in string | number | symbol ] ?: InferInput < TNewExtensionConfigSchema [ key ] > } & 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" ] ; } , > ; 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 , { internal ?: boolean ; 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 ` } ; } ; configSchema ?: undefined ; disabled ?: boolean ; if ?: FilterPredicate ; 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 : 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 < ( ... args : any [] ) => any & 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 < ( ... args : (...)
[] ) => any & 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 ; if ?: FilterPredicate ; name ?: TName ; params : TParamsInput extends ExtensionBlueprintDefineParams < object , any > ? 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 ; if ?: FilterPredicate ; name ?: TName ; params : TParamsInput extends ExtensionBlueprintDefineParams < object , any > ? 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 , UFactoryOutput extends ExtensionDataValue < any , any > , UNewOutput extends ExtensionDataRef , UParentInputs extends ExtensionDataRef , TExtraInputs extends { [ key : string ]: ExtensionInput < ExtensionDataRef , { internal ?: boolean ; optional : boolean ; singleton : boolean } , > ; } = {} , TNewExtensionConfigSchema extends { [ key : string ]: StandardSchemaV1 < unknown , unknown > } = {} , > ( args : { 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 ` } ; 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 : 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 ] : InferOutput < TNewExtensionConfigSchema [ 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 < { [ key in string | number | symbol ] : InferOutput < TNewExtensionConfigSchema [ key ] > } & T [ "config" ] , > ; configInput : Expand < { [ key in string | number | symbol ] ?: InferInput < TNewExtensionConfigSchema [ key ] > } & 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 ?: 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 ` } ; 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 : 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 ] : InferOutput < TNewExtensionConfigSchema [ key ] , > } ; inputs : Expand < ResolvedExtensionInputs < T [ "inputs" ] & TExtraInputs > > ; node : AppNode ; } , ) : Iterable < UFactoryOutput , any , any > & VerifyExtensionFactoryOutput < ExtensionDataRef extends UNewOutput ? NonNullable < T [ "output" ] > : UNewOutput , UFactoryOutput , > ; } 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 , { internal ?: boolean ; 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 ` } ; } ; configSchema ?: undefined ; disabled ?: boolean ; if ?: FilterPredicate ; 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 : 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 < ( ... args : any [] ) => any & 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 < ( ... args : (...)
[] ) => any & 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 ` } ; } ; configSchema ?: undefined ; disabled ?: boolean ; if ?: FilterPredicate ; 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 : 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 < ( ... args : any [] ) => any & 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 < ( ... args : (...)[] ) => any & 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.