Skip to content
tRPC

Partners

Interface: TRPCProcedureBuilder<TContext, TMeta, TContextOverrides, TInputIn, TInputOut, TOutputIn, TOutputOut, TCaller, TErrorShape>

On this page

Defined in: packages/server/src/unstable-core-do-not-import/procedureBuilder.ts:211

Builds a procedure step by step. Each method returns a new builder, so a builder can be the base of many procedures.

See

https://trpc.io/docs/server/procedures

Type Parameters

Type ParameterDefault type
TContext-
TMeta-
TContextOverrides-
TInputIn-
TInputOut-
TOutputIn-
TOutputOut-
TCaller extends boolean-
TErrorShapeunknown

Methods

concat()

concat<$Context, $Meta, $ContextOverrides, $InputIn, $InputOut, $OutputIn, $OutputOut, $ErrorShape>(builder): TRPCProcedureBuilder<TContext, TMeta, Overwrite<TContextOverrides, $ContextOverrides>, IntersectIfDefined<TInputIn, $InputIn>, IntersectIfDefined<TInputOut, $InputOut>, IntersectIfDefined<TOutputIn, $OutputIn>, IntersectIfDefined<TOutputOut, $OutputOut>, TCaller, FoldErrorShape<TErrorShape, $ErrorShape>>

Defined in: packages/server/src/unstable-core-do-not-import/procedureBuilder.ts:389

Adds another procedure builder's inputs, middlewares and context to this one. Useful for plugins that ship their own procedure builder.

Type Parameters

Type Parameter
$Context
$Meta
$ContextOverrides
$InputIn
$InputOut
$OutputIn
$OutputOut
$ErrorShape

Parameters

ParameterType
builderOverwrite<TContext, TContextOverrides> extends $Context ? TMeta extends $Meta ? TRPCProcedureBuilder<$Context, $Meta, $ContextOverrides, $InputIn, $InputOut, $OutputIn, $OutputOut, TCaller, $ErrorShape> : TypeError<"Meta mismatch"> : TypeError<"Context mismatch">

Returns

TRPCProcedureBuilder<TContext, TMeta, Overwrite<TContextOverrides, $ContextOverrides>, IntersectIfDefined<TInputIn, $InputIn>, IntersectIfDefined<TInputOut, $InputOut>, IntersectIfDefined<TOutputIn, $OutputIn>, IntersectIfDefined<TOutputOut, $OutputOut>, TCaller, FoldErrorShape<TErrorShape, $ErrorShape>>

See

https://trpc.io/docs/server/middlewares#concat


errors()

errors<$Shape>(formatter): TRPCProcedureBuilder<TContext, TMeta, TContextOverrides, TInputIn, TInputOut, TOutputIn, TOutputOut, TCaller, FoldErrorShape<TErrorShape, $Shape>>

Defined in: packages/server/src/unstable-core-do-not-import/procedureBuilder.ts:299

Adds an error formatter for this procedure. An error goes to the last .errors() formatter first, and on to earlier ones and the root errorFormatter until one returns a shape. A formatter only sees errors from the steps after it, so put .errors() before .input() to format input errors.

Type Parameters

Type Parameter
$Shape extends undefined | void | TRPCErrorShape<object>

Parameters

ParameterType
formatterProcedureErrorFormatter<TContext, TContextOverrides, $Shape>

Returns

TRPCProcedureBuilder<TContext, TMeta, TContextOverrides, TInputIn, TInputOut, TOutputIn, TOutputOut, TCaller, FoldErrorShape<TErrorShape, $Shape>>

See

https://trpc.io/docs/server/error-formatting#per-procedure-error-formatting


experimental_caller()

experimental_caller(caller): TRPCProcedureBuilder<TContext, TMeta, TContextOverrides, TInputIn, TInputOut, TOutputIn, TOutputOut, true, TErrorShape>

Defined in: packages/server/src/unstable-core-do-not-import/procedureBuilder.ts:523

Replaces how the procedure is called, for example to make it a server action. Experimental: it may change in any release.

Parameters

ParameterType
callerCallerOverride<TContext>

Returns

TRPCProcedureBuilder<TContext, TMeta, TContextOverrides, TInputIn, TInputOut, TOutputIn, TOutputOut, true, TErrorShape>

See

https://trpc.io/docs/client/nextjs/server-actions#1-define-a-base-procedure-with-experimental_caller


input()

input<$Parser>(schema): TRPCProcedureBuilder<TContext, TMeta, TContextOverrides, IntersectIfDefined<TInputIn, inferParser<$Parser>["in"]>, IntersectIfDefined<TInputOut, inferParser<$Parser>["out"]>, TOutputIn, TOutputOut, TCaller, TErrorShape>

Defined in: packages/server/src/unstable-core-do-not-import/procedureBuilder.ts:232

Adds a validator for the input. Chain several to merge object inputs.

Type Parameters

Type Parameter
$Parser extends Parser

Parameters

ParameterType
schemaTInputOut extends UnsetMarker ? $Parser : inferParser<$Parser>["out"] extends undefined | Record<string, unknown> ? TInputOut extends undefined | Record<string, unknown> ? undefined extends any[any] ? undefined extends TInputOut<TInputOut> ? $Parser : TypeError<"Cannot chain an optional parser to a required parser"> : $Parser : TypeError<"All input parsers did not resolve to an object"> : TypeError<"All input parsers did not resolve to an object">

Returns

TRPCProcedureBuilder<TContext, TMeta, TContextOverrides, IntersectIfDefined<TInputIn, inferParser<$Parser>["in"]>, IntersectIfDefined<TInputOut, inferParser<$Parser>["out"]>, TOutputIn, TOutputOut, TCaller, TErrorShape>

See

https://trpc.io/docs/server/validators#input-validators


meta()

meta(meta): TRPCProcedureBuilder<TContext, TMeta, TContextOverrides, TInputIn, TInputOut, TOutputIn, TOutputOut, TCaller, TErrorShape>

Defined in: packages/server/src/unstable-core-do-not-import/procedureBuilder.ts:278

Sets the procedure's metadata, which middlewares can read. It's shallow-merged with any metadata set before.

Parameters

ParameterType
metaTMeta

Returns

TRPCProcedureBuilder<TContext, TMeta, TContextOverrides, TInputIn, TInputOut, TOutputIn, TOutputOut, TCaller, TErrorShape>

See

https://trpc.io/docs/server/metadata


mutation()

mutation<$Output>(resolver): TCaller extends true ? (input) => Promise<DefaultValue<TOutputOut, $Output>> : TRPCMutationProcedure<{ errorShape: TErrorShape; input: DefaultValue<TInputIn, void>; meta: TMeta; output: DefaultValue<TOutputOut, $Output>; }>

Defined in: packages/server/src/unstable-core-do-not-import/procedureBuilder.ts:453

Ends the builder with a mutation: a procedure that changes data.

Type Parameters

Type Parameter
$Output

Parameters

ParameterType
resolverProcedureResolver<TContext, TMeta, TContextOverrides, TInputOut, TOutputIn, $Output>

Returns

TCaller extends true ? (input) => Promise<DefaultValue<TOutputOut, $Output>> : TRPCMutationProcedure<{ errorShape: TErrorShape; input: DefaultValue<TInputIn, void>; meta: TMeta; output: DefaultValue<TOutputOut, $Output>; }>

See

https://trpc.io/docs/server/procedures#writing-procedures


output()

output<$Parser>(schema): TRPCProcedureBuilder<TContext, TMeta, TContextOverrides, TInputIn, TInputOut, IntersectIfDefined<TOutputIn, inferParser<$Parser>["in"]>, IntersectIfDefined<TOutputOut, inferParser<$Parser>["out"]>, TCaller, TErrorShape>

Defined in: packages/server/src/unstable-core-do-not-import/procedureBuilder.ts:260

Adds a validator for the output, which checks what the resolver returns.

Type Parameters

Type Parameter
$Parser extends Parser

Parameters

ParameterType
schema$Parser

Returns

TRPCProcedureBuilder<TContext, TMeta, TContextOverrides, TInputIn, TInputOut, IntersectIfDefined<TOutputIn, inferParser<$Parser>["in"]>, IntersectIfDefined<TOutputOut, inferParser<$Parser>["out"]>, TCaller, TErrorShape>

See

https://trpc.io/docs/server/validators#output-validators


query()

query<$Output>(resolver): TCaller extends true ? (input) => Promise<DefaultValue<TOutputOut, $Output>> : TRPCQueryProcedure<{ errorShape: TErrorShape; input: DefaultValue<TInputIn, void>; meta: TMeta; output: DefaultValue<TOutputOut, $Output>; }>

Defined in: packages/server/src/unstable-core-do-not-import/procedureBuilder.ts:429

Ends the builder with a query: a procedure that reads data.

Type Parameters

Type Parameter
$Output

Parameters

ParameterType
resolverProcedureResolver<TContext, TMeta, TContextOverrides, TInputOut, TOutputIn, $Output>

Returns

TCaller extends true ? (input) => Promise<DefaultValue<TOutputOut, $Output>> : TRPCQueryProcedure<{ errorShape: TErrorShape; input: DefaultValue<TInputIn, void>; meta: TMeta; output: DefaultValue<TOutputOut, $Output>; }>

See

https://trpc.io/docs/server/procedures#writing-procedures


subscription()

Call Signature

subscription<$Output>(resolver): TCaller extends true ? TypeError<"Not implemented"> : TRPCSubscriptionProcedure<{ errorShape: TErrorShape; input: DefaultValue<TInputIn, void>; meta: TMeta; output: inferSubscriptionOutput<DefaultValue<TOutputOut, $Output>>; }>

Defined in: packages/server/src/unstable-core-do-not-import/procedureBuilder.ts:478

Ends the builder with a subscription: a procedure that streams events from an async iterable, such as an async generator.

Type Parameters
Type Parameter
$Output extends AsyncIterable<any, void, any>
Parameters
ParameterType
resolverProcedureResolver<TContext, TMeta, TContextOverrides, TInputOut, TOutputIn, $Output>
Returns

TCaller extends true ? TypeError<"Not implemented"> : TRPCSubscriptionProcedure<{ errorShape: TErrorShape; input: DefaultValue<TInputIn, void>; meta: TMeta; output: inferSubscriptionOutput<DefaultValue<TOutputOut, $Output>>; }>

See

https://trpc.io/docs/server/subscriptions

Call Signature

subscription<$Output>(resolver): TCaller extends true ? TypeError<"Not implemented"> : LegacyObservableSubscriptionProcedure<{ errorShape: TErrorShape; input: DefaultValue<TInputIn, void>; meta: TMeta; output: inferObservableValue<DefaultValue<TOutputOut, $Output>>; }>

Defined in: packages/server/src/unstable-core-do-not-import/procedureBuilder.ts:501

Ends the builder with a subscription that returns an observable.

Type Parameters
Type Parameter
$Output extends Observable<any, any>
Parameters
ParameterType
resolverProcedureResolver<TContext, TMeta, TContextOverrides, TInputOut, TOutputIn, $Output>
Returns

TCaller extends true ? TypeError<"Not implemented"> : LegacyObservableSubscriptionProcedure<{ errorShape: TErrorShape; input: DefaultValue<TInputIn, void>; meta: TMeta; output: inferObservableValue<DefaultValue<TOutputOut, $Output>>; }>

Deprecated

Return an async generator instead. Observable subscriptions will be removed in v12.

See

https://trpc.io/docs/server/subscriptions


unstable_concat()

unstable_concat<$Context, $Meta, $ContextOverrides, $InputIn, $InputOut, $OutputIn, $OutputOut, $ErrorShape>(builder): TRPCProcedureBuilder<TContext, TMeta, Overwrite<TContextOverrides, $ContextOverrides>, IntersectIfDefined<TInputIn, $InputIn>, IntersectIfDefined<TInputOut, $InputOut>, IntersectIfDefined<TOutputIn, $OutputIn>, IntersectIfDefined<TOutputOut, $OutputOut>, TCaller, FoldErrorShape<TErrorShape, $ErrorShape>>

Defined in: packages/server/src/unstable-core-do-not-import/procedureBuilder.ts:347

Type Parameters

Type Parameter
$Context
$Meta
$ContextOverrides
$InputIn
$InputOut
$OutputIn
$OutputOut
$ErrorShape

Parameters

ParameterType
builderOverwrite<TContext, TContextOverrides> extends $Context ? TMeta extends $Meta ? TRPCProcedureBuilder<$Context, $Meta, $ContextOverrides, $InputIn, $InputOut, $OutputIn, $OutputOut, TCaller, $ErrorShape> : TypeError<"Meta mismatch"> : TypeError<"Context mismatch">

Returns

TRPCProcedureBuilder<TContext, TMeta, Overwrite<TContextOverrides, $ContextOverrides>, IntersectIfDefined<TInputIn, $InputIn>, IntersectIfDefined<TInputOut, $InputOut>, IntersectIfDefined<TOutputIn, $OutputIn>, IntersectIfDefined<TOutputOut, $OutputOut>, TCaller, FoldErrorShape<TErrorShape, $ErrorShape>>

Deprecated

Use concat instead.


use()

use<$ContextOverridesOut>(fn): TRPCProcedureBuilder<TContext, TMeta, Overwrite<TContextOverrides, $ContextOverridesOut>, TInputIn, TInputOut, TOutputIn, TOutputOut, TCaller, TErrorShape>

Defined in: packages/server/src/unstable-core-do-not-import/procedureBuilder.ts:317

Adds a middleware, which runs before the resolver and can change the context.

Type Parameters

Type Parameter
$ContextOverridesOut

Parameters

ParameterType
fnMiddlewareBuilder<Overwrite<TContext, TContextOverrides>, TMeta, $ContextOverridesOut, TInputOut> | MiddlewareFunction<TContext, TMeta, TContextOverrides, $ContextOverridesOut, TInputOut>

Returns

TRPCProcedureBuilder<TContext, TMeta, Overwrite<TContextOverrides, $ContextOverridesOut>, TInputIn, TInputOut, TOutputIn, TOutputOut, TCaller, TErrorShape>

See

https://trpc.io/docs/server/middlewares