@trpc/server 10.43.0 → 11.0.0-next.91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/aws-lambda/index.d.ts.map +1 -1
- package/dist/adapters/aws-lambda/index.js +6 -4
- package/dist/adapters/aws-lambda/index.mjs +6 -4
- package/dist/adapters/aws-lambda/utils.d.ts +3 -1
- package/dist/adapters/aws-lambda/utils.d.ts.map +1 -1
- package/dist/adapters/express.js +4 -3
- package/dist/adapters/express.mjs +4 -3
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
- package/dist/adapters/fastify/index.js +8 -5
- package/dist/adapters/fastify/index.mjs +8 -5
- package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -1
- package/dist/adapters/fetch/index.js +6 -4
- package/dist/adapters/fetch/index.mjs +6 -4
- package/dist/adapters/fetch/types.d.ts +2 -1
- package/dist/adapters/fetch/types.d.ts.map +1 -1
- package/dist/adapters/next.js +4 -3
- package/dist/adapters/next.mjs +4 -3
- package/dist/adapters/node-http/index.js +4 -3
- package/dist/adapters/node-http/index.mjs +4 -3
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
- package/dist/adapters/node-http/types.d.ts +2 -1
- package/dist/adapters/node-http/types.d.ts.map +1 -1
- package/dist/adapters/standalone.d.ts +1 -6
- package/dist/adapters/standalone.d.ts.map +1 -1
- package/dist/adapters/standalone.js +8 -19
- package/dist/adapters/standalone.mjs +8 -19
- package/dist/adapters/ws.d.ts +25 -4
- package/dist/adapters/ws.d.ts.map +1 -1
- package/dist/adapters/ws.js +67 -14
- package/dist/adapters/ws.mjs +58 -6
- package/dist/bundle-analysis.json +910 -0
- package/dist/config-5de7eae5.js +10 -0
- package/dist/config-60fc2667.js +7 -0
- package/dist/config-ab4c1c6b.mjs +5 -0
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/initTRPC.d.ts +1 -1
- package/dist/core/internals/builderTypes.d.ts +11 -0
- package/dist/core/internals/builderTypes.d.ts.map +1 -0
- package/dist/core/internals/getParseFn.d.ts +0 -5
- package/dist/core/internals/getParseFn.d.ts.map +1 -1
- package/dist/core/internals/mergeRouters.d.ts +0 -3
- package/dist/core/internals/mergeRouters.d.ts.map +1 -1
- package/dist/core/internals/procedureBuilder.d.ts +24 -27
- package/dist/core/internals/procedureBuilder.d.ts.map +1 -1
- package/dist/core/internals/utils.d.ts +7 -8
- package/dist/core/internals/utils.d.ts.map +1 -1
- package/dist/core/middleware.d.ts +16 -15
- package/dist/core/middleware.d.ts.map +1 -1
- package/dist/core/procedure.d.ts +41 -42
- package/dist/core/procedure.d.ts.map +1 -1
- package/dist/core/router.d.ts +9 -56
- package/dist/core/router.d.ts.map +1 -1
- package/dist/core/types.d.ts +7 -12
- package/dist/core/types.d.ts.map +1 -1
- package/dist/http/index.js +3 -2
- package/dist/http/index.mjs +3 -2
- package/dist/http/resolveHTTPResponse.d.ts +3 -3
- package/dist/http/resolveHTTPResponse.d.ts.map +1 -1
- package/dist/http/types.d.ts +22 -1
- package/dist/http/types.d.ts.map +1 -1
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -811
- package/dist/index.mjs +15 -802
- package/dist/{nodeHTTPRequestHandler-cf01c646.mjs → nodeHTTPRequestHandler-0986c5a1.mjs} +8 -3
- package/dist/{nodeHTTPRequestHandler-b7d358fe.js → nodeHTTPRequestHandler-18f3370e.js} +8 -3
- package/dist/{nodeHTTPRequestHandler-9781faee.js → nodeHTTPRequestHandler-388f5fce.js} +8 -3
- package/dist/{resolveHTTPResponse-68c8befb.mjs → resolveHTTPResponse-55c648bd.mjs} +14 -12
- package/dist/{resolveHTTPResponse-79011e44.js → resolveHTTPResponse-5def1b0c.js} +15 -13
- package/dist/{resolveHTTPResponse-051b3a40.js → resolveHTTPResponse-8d474952.js} +12 -12
- package/dist/{config-3ab6b85e.js → router-3c22fe56.js} +9 -46
- package/dist/{config-4c0f8e88.mjs → router-5274e533.mjs} +10 -45
- package/dist/{config-f356f2fd.js → router-a1635eab.js} +9 -44
- package/dist/rpc/envelopes.d.ts +1 -5
- package/dist/rpc/envelopes.d.ts.map +1 -1
- package/dist/rpc/index.d.ts +0 -1
- package/dist/rpc/index.d.ts.map +1 -1
- package/dist/rpc/index.js +0 -2
- package/dist/rpc/index.mjs +0 -1
- package/dist/shared/getErrorShape.d.ts +1 -1
- package/dist/shared/getErrorShape.d.ts.map +1 -1
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/jsonify.d.ts +3 -2
- package/dist/shared/jsonify.d.ts.map +1 -1
- package/dist/shared/transformTRPCResponse.d.ts +1 -1
- package/dist/shared/transformTRPCResponse.d.ts.map +1 -1
- package/dist/shared/types.d.ts +6 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/unstableInternalsExport-10cc2bae.mjs +353 -0
- package/dist/unstableInternalsExport-a064a7dd.js +349 -0
- package/dist/unstableInternalsExport-bf8496ea.js +363 -0
- package/dist/unstableInternalsExport.d.ts +11 -0
- package/dist/unstableInternalsExport.d.ts.map +1 -0
- package/dist/unstableInternalsExport.js +16 -0
- package/dist/unstableInternalsExport.mjs +5 -0
- package/package.json +9 -3
- package/src/adapters/aws-lambda/index.ts +11 -7
- package/src/adapters/aws-lambda/utils.ts +3 -0
- package/src/adapters/fastify/fastifyRequestHandler.ts +9 -5
- package/src/adapters/fetch/fetchRequestHandler.ts +9 -3
- package/src/adapters/fetch/types.ts +2 -1
- package/src/adapters/node-http/nodeHTTPRequestHandler.ts +15 -4
- package/src/adapters/node-http/types.ts +2 -1
- package/src/adapters/standalone.ts +4 -22
- package/src/adapters/ws.ts +110 -14
- package/src/core/index.ts +1 -0
- package/src/core/internals/builderTypes.ts +11 -0
- package/src/core/internals/getParseFn.ts +0 -13
- package/src/core/internals/mergeRouters.ts +0 -4
- package/src/core/internals/procedureBuilder.ts +50 -70
- package/src/core/internals/utils.ts +11 -8
- package/src/core/middleware.ts +37 -31
- package/src/core/procedure.ts +46 -54
- package/src/core/router.ts +19 -117
- package/src/core/types.ts +11 -20
- package/src/http/resolveHTTPResponse.ts +17 -14
- package/src/http/types.ts +24 -1
- package/src/index.ts +16 -2
- package/src/rpc/envelopes.ts +1 -6
- package/src/rpc/index.ts +0 -1
- package/src/shared/getErrorShape.ts +2 -1
- package/src/shared/index.ts +2 -0
- package/src/shared/jsonify.ts +9 -5
- package/src/shared/transformTRPCResponse.ts +1 -1
- package/src/shared/types.ts +9 -0
- package/src/types.ts +8 -0
- package/src/unstableInternalsExport.ts +10 -0
- package/unstableInternalsExport/index.d.ts +1 -0
- package/unstableInternalsExport/index.js +1 -0
- package/adapters/zodFileSchema/index.d.ts +0 -1
- package/adapters/zodFileSchema/index.js +0 -1
- package/dist/adapters/lambda/index.d.ts +0 -12
- package/dist/adapters/lambda/index.d.ts.map +0 -1
- package/dist/deprecated/internals/middlewares.d.ts +0 -52
- package/dist/deprecated/internals/middlewares.d.ts.map +0 -1
- package/dist/deprecated/internals/procedure.d.ts +0 -96
- package/dist/deprecated/internals/procedure.d.ts.map +0 -1
- package/dist/deprecated/interop.d.ts +0 -44
- package/dist/deprecated/interop.d.ts.map +0 -1
- package/dist/deprecated/router.d.ts +0 -204
- package/dist/deprecated/router.d.ts.map +0 -1
- package/dist/internals.d.ts +0 -10
- package/dist/internals.d.ts.map +0 -1
- package/dist/parseTRPCMessage-1377f305.js +0 -56
- package/dist/parseTRPCMessage-95955211.js +0 -63
- package/dist/parseTRPCMessage-a0f17853.mjs +0 -54
- package/dist/rpc/parseTRPCMessage.d.ts +0 -5
- package/dist/rpc/parseTRPCMessage.d.ts.map +0 -1
- package/dist/subscription.d.ts +0 -13
- package/dist/subscription.d.ts.map +0 -1
- package/dist/subscription.js +0 -38
- package/dist/subscription.mjs +0 -34
- package/src/adapters/lambda/index.ts +0 -18
- package/src/deprecated/internals/middlewares.ts +0 -61
- package/src/deprecated/internals/procedure.ts +0 -411
- package/src/deprecated/interop.ts +0 -232
- package/src/deprecated/router.ts +0 -945
- package/src/internals.ts +0 -12
- package/src/rpc/parseTRPCMessage.ts +0 -84
- package/src/subscription.ts +0 -43
|
@@ -11,66 +11,51 @@ import { inferParser, Parser } from '../parser';
|
|
|
11
11
|
import {
|
|
12
12
|
AnyMutationProcedure,
|
|
13
13
|
AnyProcedure,
|
|
14
|
+
AnyProcedureParams,
|
|
14
15
|
AnyQueryProcedure,
|
|
15
16
|
AnySubscriptionProcedure,
|
|
16
|
-
|
|
17
|
+
MutationProcedure,
|
|
17
18
|
ProcedureParams,
|
|
19
|
+
QueryProcedure,
|
|
20
|
+
SubscriptionProcedure,
|
|
18
21
|
} from '../procedure';
|
|
19
22
|
import { ProcedureType } from '../types';
|
|
23
|
+
import { AnyProcedureBuilderParams } from './builderTypes';
|
|
20
24
|
import { AnyRootConfig } from './config';
|
|
21
25
|
import { getParseFn } from './getParseFn';
|
|
22
26
|
import { mergeWithoutOverrides } from './mergeWithoutOverrides';
|
|
23
27
|
import {
|
|
24
|
-
DefaultValue
|
|
28
|
+
DefaultValue,
|
|
29
|
+
GetRawInputFn,
|
|
25
30
|
middlewareMarker,
|
|
26
31
|
Overwrite,
|
|
27
|
-
OverwriteKnown,
|
|
28
32
|
ResolveOptions,
|
|
29
33
|
UnsetMarker,
|
|
30
34
|
} from './utils';
|
|
31
35
|
|
|
32
36
|
type CreateProcedureReturnInput<
|
|
33
|
-
TPrev extends ProcedureParams
|
|
34
|
-
TNext extends ProcedureParams
|
|
37
|
+
TPrev extends ProcedureParams<AnyProcedureParams>,
|
|
38
|
+
TNext extends ProcedureParams<AnyProcedureParams>,
|
|
35
39
|
> = ProcedureBuilder<{
|
|
36
40
|
_config: TPrev['_config'];
|
|
37
41
|
_meta: TPrev['_meta'];
|
|
38
42
|
_ctx_out: Overwrite<TPrev['_ctx_out'], TNext['_ctx_out']>;
|
|
39
|
-
_input_in:
|
|
43
|
+
_input_in: DefaultValue<TNext['_input_in'], TPrev['_input_in']>;
|
|
40
44
|
_input_out: UnsetMarker extends TNext['_input_out']
|
|
41
45
|
? TPrev['_input_out']
|
|
42
46
|
: Overwrite<TPrev['_input_out'], TNext['_input_out']>;
|
|
43
|
-
_output_in:
|
|
44
|
-
_output_out:
|
|
47
|
+
_output_in: DefaultValue<TNext['_output_in'], TPrev['_output_in']>;
|
|
48
|
+
_output_out: DefaultValue<TNext['_output_out'], TPrev['_output_out']>;
|
|
45
49
|
}>;
|
|
46
50
|
|
|
47
|
-
/**
|
|
48
|
-
* @internal
|
|
49
|
-
*/
|
|
50
|
-
export interface BuildProcedure<
|
|
51
|
-
TType extends ProcedureType,
|
|
52
|
-
TParams extends ProcedureParams,
|
|
53
|
-
TOutput,
|
|
54
|
-
> extends Procedure<
|
|
55
|
-
TType,
|
|
56
|
-
UnsetMarker extends TParams['_output_out']
|
|
57
|
-
? OverwriteKnown<
|
|
58
|
-
TParams,
|
|
59
|
-
{
|
|
60
|
-
_output_in: TOutput;
|
|
61
|
-
_output_out: TOutput;
|
|
62
|
-
}
|
|
63
|
-
>
|
|
64
|
-
: TParams
|
|
65
|
-
> {}
|
|
66
|
-
|
|
67
51
|
type OverwriteIfDefined<TType, TWith> = UnsetMarker extends TType
|
|
68
52
|
? TWith
|
|
69
53
|
: Simplify<TType & TWith>;
|
|
70
54
|
|
|
71
55
|
type ErrorMessage<TMessage extends string> = TMessage;
|
|
72
56
|
|
|
73
|
-
export type ProcedureBuilderDef<TParams extends
|
|
57
|
+
export type ProcedureBuilderDef<TParams extends AnyProcedureBuilderParams> = {
|
|
58
|
+
procedure: true;
|
|
74
59
|
inputs: Parser[];
|
|
75
60
|
output?: Parser;
|
|
76
61
|
meta?: TParams['_meta'];
|
|
@@ -83,7 +68,7 @@ export type ProcedureBuilderDef<TParams extends ProcedureParams> = {
|
|
|
83
68
|
|
|
84
69
|
export type AnyProcedureBuilderDef = ProcedureBuilderDef<any>;
|
|
85
70
|
|
|
86
|
-
export interface ProcedureBuilder<TParams extends
|
|
71
|
+
export interface ProcedureBuilder<TParams extends AnyProcedureBuilderParams> {
|
|
87
72
|
/**
|
|
88
73
|
* Add an input parser to the procedure.
|
|
89
74
|
*/
|
|
@@ -136,28 +121,22 @@ export interface ProcedureBuilder<TParams extends ProcedureParams> {
|
|
|
136
121
|
/**
|
|
137
122
|
* Add a middleware to the procedure.
|
|
138
123
|
*/
|
|
139
|
-
use<$Params extends ProcedureParams
|
|
124
|
+
use<$Params extends ProcedureParams<AnyProcedureParams>>(
|
|
140
125
|
fn:
|
|
141
126
|
| MiddlewareBuilder<TParams, $Params>
|
|
142
127
|
| MiddlewareFunction<TParams, $Params>,
|
|
143
128
|
): CreateProcedureReturnInput<TParams, $Params>;
|
|
144
|
-
/**
|
|
145
|
-
* Extend the procedure with another procedure.
|
|
146
|
-
* @warning The TypeScript inference fails when chaining concatenated procedures.
|
|
147
|
-
*/
|
|
148
|
-
unstable_concat<$ProcedureBuilder extends AnyProcedureBuilder>(
|
|
149
|
-
proc: $ProcedureBuilder,
|
|
150
|
-
): $ProcedureBuilder extends ProcedureBuilder<infer $TParams>
|
|
151
|
-
? CreateProcedureReturnInput<TParams, $TParams>
|
|
152
|
-
: never;
|
|
153
129
|
/**
|
|
154
130
|
* Query procedure
|
|
155
131
|
*/
|
|
156
132
|
query<$Output>(
|
|
157
133
|
resolver: (
|
|
158
134
|
opts: ResolveOptions<TParams>,
|
|
159
|
-
) => MaybePromise<
|
|
160
|
-
):
|
|
135
|
+
) => MaybePromise<DefaultValue<TParams['_output_in'], $Output>>,
|
|
136
|
+
): QueryProcedure<{
|
|
137
|
+
input: DefaultValue<TParams['_input_in'], void>;
|
|
138
|
+
output: DefaultValue<TParams['_output_out'], $Output>;
|
|
139
|
+
}>;
|
|
161
140
|
|
|
162
141
|
/**
|
|
163
142
|
* Mutation procedure
|
|
@@ -165,8 +144,11 @@ export interface ProcedureBuilder<TParams extends ProcedureParams> {
|
|
|
165
144
|
mutation<$Output>(
|
|
166
145
|
resolver: (
|
|
167
146
|
opts: ResolveOptions<TParams>,
|
|
168
|
-
) => MaybePromise<
|
|
169
|
-
):
|
|
147
|
+
) => MaybePromise<DefaultValue<TParams['_output_in'], $Output>>,
|
|
148
|
+
): MutationProcedure<{
|
|
149
|
+
input: DefaultValue<TParams['_input_in'], void>;
|
|
150
|
+
output: DefaultValue<TParams['_output_out'], $Output>;
|
|
151
|
+
}>;
|
|
170
152
|
|
|
171
153
|
/**
|
|
172
154
|
* Mutation procedure
|
|
@@ -174,8 +156,11 @@ export interface ProcedureBuilder<TParams extends ProcedureParams> {
|
|
|
174
156
|
subscription<$Output>(
|
|
175
157
|
resolver: (
|
|
176
158
|
opts: ResolveOptions<TParams>,
|
|
177
|
-
) => MaybePromise<
|
|
178
|
-
):
|
|
159
|
+
) => MaybePromise<DefaultValue<TParams['_output_in'], $Output>>,
|
|
160
|
+
): SubscriptionProcedure<{
|
|
161
|
+
input: DefaultValue<TParams['_input_in'], void>;
|
|
162
|
+
output: DefaultValue<TParams['_output_out'], $Output>;
|
|
163
|
+
}>;
|
|
179
164
|
/**
|
|
180
165
|
* @internal
|
|
181
166
|
*/
|
|
@@ -217,6 +202,7 @@ export function createBuilder<TConfig extends AnyRootConfig>(
|
|
|
217
202
|
_meta: TConfig['$types']['meta'];
|
|
218
203
|
}> {
|
|
219
204
|
const _def: AnyProcedureBuilderDef = {
|
|
205
|
+
procedure: true,
|
|
220
206
|
inputs: [],
|
|
221
207
|
middlewares: [],
|
|
222
208
|
...initDef,
|
|
@@ -243,13 +229,6 @@ export function createBuilder<TConfig extends AnyRootConfig>(
|
|
|
243
229
|
meta: meta as Record<string, unknown>,
|
|
244
230
|
}) as AnyProcedureBuilder;
|
|
245
231
|
},
|
|
246
|
-
/**
|
|
247
|
-
* @deprecated
|
|
248
|
-
* This functionality is deprecated and will be removed in the next major version.
|
|
249
|
-
*/
|
|
250
|
-
unstable_concat(builder) {
|
|
251
|
-
return createNewBuilder(_def, builder._def) as any;
|
|
252
|
-
},
|
|
253
232
|
use(middlewareBuilderOrFn) {
|
|
254
233
|
// Distinguish between a middleware builder and a middleware function
|
|
255
234
|
const middlewares =
|
|
@@ -263,19 +242,19 @@ export function createBuilder<TConfig extends AnyRootConfig>(
|
|
|
263
242
|
},
|
|
264
243
|
query(resolver) {
|
|
265
244
|
return createResolver(
|
|
266
|
-
{ ..._def,
|
|
245
|
+
{ ..._def, type: 'query' },
|
|
267
246
|
resolver,
|
|
268
247
|
) as AnyQueryProcedure;
|
|
269
248
|
},
|
|
270
249
|
mutation(resolver) {
|
|
271
250
|
return createResolver(
|
|
272
|
-
{ ..._def,
|
|
251
|
+
{ ..._def, type: 'mutation' },
|
|
273
252
|
resolver,
|
|
274
253
|
) as AnyMutationProcedure;
|
|
275
254
|
},
|
|
276
255
|
subscription(resolver) {
|
|
277
256
|
return createResolver(
|
|
278
|
-
{ ..._def,
|
|
257
|
+
{ ..._def, type: 'subscription' },
|
|
279
258
|
resolver,
|
|
280
259
|
) as AnySubscriptionProcedure;
|
|
281
260
|
},
|
|
@@ -283,7 +262,7 @@ export function createBuilder<TConfig extends AnyRootConfig>(
|
|
|
283
262
|
}
|
|
284
263
|
|
|
285
264
|
function createResolver(
|
|
286
|
-
_def: AnyProcedureBuilderDef,
|
|
265
|
+
_def: AnyProcedureBuilderDef & { type: ProcedureType },
|
|
287
266
|
resolver: (opts: ResolveOptions<any>) => MaybePromise<any>,
|
|
288
267
|
) {
|
|
289
268
|
const finalBuilder = createNewBuilder(_def, {
|
|
@@ -309,7 +288,7 @@ function createResolver(
|
|
|
309
288
|
*/
|
|
310
289
|
export interface ProcedureCallOptions {
|
|
311
290
|
ctx: unknown;
|
|
312
|
-
|
|
291
|
+
getRawInput: GetRawInputFn;
|
|
313
292
|
input?: unknown;
|
|
314
293
|
path: string;
|
|
315
294
|
type: ProcedureType;
|
|
@@ -327,9 +306,9 @@ const result = await caller.call('myProcedure', input);
|
|
|
327
306
|
`.trim();
|
|
328
307
|
|
|
329
308
|
function createProcedureCaller(_def: AnyProcedureBuilderDef): AnyProcedure {
|
|
330
|
-
|
|
309
|
+
async function procedure(opts: ProcedureCallOptions) {
|
|
331
310
|
// is direct server-side call
|
|
332
|
-
if (!opts || !('
|
|
311
|
+
if (!opts || !('getRawInput' in opts)) {
|
|
333
312
|
throw new Error(codeblock);
|
|
334
313
|
}
|
|
335
314
|
|
|
@@ -339,7 +318,7 @@ function createProcedureCaller(_def: AnyProcedureBuilderDef): AnyProcedure {
|
|
|
339
318
|
ctx: any;
|
|
340
319
|
index: number;
|
|
341
320
|
input?: unknown;
|
|
342
|
-
|
|
321
|
+
getRawInput?: GetRawInputFn;
|
|
343
322
|
} = {
|
|
344
323
|
index: 0,
|
|
345
324
|
ctx: opts.ctx,
|
|
@@ -352,7 +331,7 @@ function createProcedureCaller(_def: AnyProcedureBuilderDef): AnyProcedure {
|
|
|
352
331
|
ctx: callOpts.ctx,
|
|
353
332
|
type: opts.type,
|
|
354
333
|
path: opts.path,
|
|
355
|
-
|
|
334
|
+
getRawInput: callOpts.getRawInput ?? opts.getRawInput,
|
|
356
335
|
meta: _def.meta,
|
|
357
336
|
input: callOpts.input,
|
|
358
337
|
next(_nextOpts?: any) {
|
|
@@ -360,7 +339,7 @@ function createProcedureCaller(_def: AnyProcedureBuilderDef): AnyProcedure {
|
|
|
360
339
|
| {
|
|
361
340
|
ctx?: Record<string, unknown>;
|
|
362
341
|
input?: unknown;
|
|
363
|
-
|
|
342
|
+
getRawInput?: GetRawInputFn;
|
|
364
343
|
}
|
|
365
344
|
| undefined;
|
|
366
345
|
|
|
@@ -374,10 +353,10 @@ function createProcedureCaller(_def: AnyProcedureBuilderDef): AnyProcedure {
|
|
|
374
353
|
nextOpts && 'input' in nextOpts
|
|
375
354
|
? nextOpts.input
|
|
376
355
|
: callOpts.input,
|
|
377
|
-
|
|
378
|
-
nextOpts && '
|
|
379
|
-
? nextOpts.
|
|
380
|
-
: callOpts.
|
|
356
|
+
getRawInput:
|
|
357
|
+
nextOpts && 'getRawInput' in nextOpts
|
|
358
|
+
? nextOpts.getRawInput
|
|
359
|
+
: callOpts.getRawInput,
|
|
381
360
|
});
|
|
382
361
|
},
|
|
383
362
|
});
|
|
@@ -406,9 +385,10 @@ function createProcedureCaller(_def: AnyProcedureBuilderDef): AnyProcedure {
|
|
|
406
385
|
throw result.error;
|
|
407
386
|
}
|
|
408
387
|
return result.data;
|
|
409
|
-
}
|
|
388
|
+
}
|
|
389
|
+
|
|
410
390
|
procedure._def = _def;
|
|
411
|
-
procedure.meta = _def.meta;
|
|
412
391
|
|
|
413
|
-
|
|
392
|
+
// FIXME typecast shouldn't be needed - fixittt
|
|
393
|
+
return procedure as unknown as AnyProcedure;
|
|
414
394
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Simplify } from '../../types';
|
|
2
|
-
import { ProcedureParams } from '../procedure';
|
|
2
|
+
import { AnyProcedureParams, ProcedureParams } from '../procedure';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* @internal
|
|
@@ -15,12 +15,7 @@ export type Overwrite<TType, TWith> = TType extends any
|
|
|
15
15
|
}
|
|
16
16
|
: never
|
|
17
17
|
: never;
|
|
18
|
-
|
|
19
|
-
* @internal
|
|
20
|
-
*/
|
|
21
|
-
export type OverwriteKnown<TType, TWith> = {
|
|
22
|
-
[K in keyof TType]: K extends keyof TWith ? TWith[K] : TType[K];
|
|
23
|
-
};
|
|
18
|
+
|
|
24
19
|
/**
|
|
25
20
|
* @internal
|
|
26
21
|
*/
|
|
@@ -52,7 +47,9 @@ export type UnsetMarker = typeof unsetMarker;
|
|
|
52
47
|
/**
|
|
53
48
|
* @internal
|
|
54
49
|
*/
|
|
55
|
-
export interface ResolveOptions<
|
|
50
|
+
export interface ResolveOptions<
|
|
51
|
+
TParams extends ProcedureParams<AnyProcedureParams>,
|
|
52
|
+
> {
|
|
56
53
|
ctx: Simplify<
|
|
57
54
|
Overwrite<TParams['_config']['$types']['ctx'], TParams['_ctx_out']>
|
|
58
55
|
>;
|
|
@@ -79,3 +76,9 @@ export type PickFirstDefined<TType, TPick> = undefined extends TType
|
|
|
79
76
|
? never
|
|
80
77
|
: TPick
|
|
81
78
|
: TType;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* @internal
|
|
82
|
+
* Returns the raw input type of a procedure
|
|
83
|
+
*/
|
|
84
|
+
export type GetRawInputFn = () => Promise<unknown>;
|
package/src/core/middleware.ts
CHANGED
|
@@ -5,11 +5,12 @@ import { ParseFn } from './internals/getParseFn';
|
|
|
5
5
|
import { ProcedureBuilderMiddleware } from './internals/procedureBuilder';
|
|
6
6
|
import {
|
|
7
7
|
DefaultValue as FallbackValue,
|
|
8
|
+
GetRawInputFn,
|
|
8
9
|
MiddlewareMarker,
|
|
9
10
|
Overwrite,
|
|
10
11
|
UnsetMarker,
|
|
11
12
|
} from './internals/utils';
|
|
12
|
-
import { ProcedureParams } from './procedure';
|
|
13
|
+
import { AnyProcedureParams, ProcedureParams } from './procedure';
|
|
13
14
|
import { ProcedureType } from './types';
|
|
14
15
|
|
|
15
16
|
/**
|
|
@@ -26,8 +27,9 @@ interface MiddlewareResultBase {
|
|
|
26
27
|
/**
|
|
27
28
|
* @internal
|
|
28
29
|
*/
|
|
29
|
-
interface MiddlewareOKResult<
|
|
30
|
-
extends
|
|
30
|
+
interface MiddlewareOKResult<
|
|
31
|
+
_TParams extends ProcedureParams<AnyProcedureParams>,
|
|
32
|
+
> extends MiddlewareResultBase {
|
|
31
33
|
ok: true;
|
|
32
34
|
data: unknown;
|
|
33
35
|
// this could be extended with `input`/`rawInput` later
|
|
@@ -36,8 +38,9 @@ interface MiddlewareOKResult<_TParams extends ProcedureParams>
|
|
|
36
38
|
/**
|
|
37
39
|
* @internal
|
|
38
40
|
*/
|
|
39
|
-
interface MiddlewareErrorResult<
|
|
40
|
-
extends
|
|
41
|
+
interface MiddlewareErrorResult<
|
|
42
|
+
_TParams extends ProcedureParams<AnyProcedureParams>,
|
|
43
|
+
> extends MiddlewareResultBase {
|
|
41
44
|
ok: false;
|
|
42
45
|
error: TRPCError;
|
|
43
46
|
}
|
|
@@ -45,21 +48,21 @@ interface MiddlewareErrorResult<_TParams extends ProcedureParams>
|
|
|
45
48
|
/**
|
|
46
49
|
* @internal
|
|
47
50
|
*/
|
|
48
|
-
export type MiddlewareResult<
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
export type MiddlewareResult<
|
|
52
|
+
TParams extends ProcedureParams<AnyProcedureParams>,
|
|
53
|
+
> = MiddlewareErrorResult<TParams> | MiddlewareOKResult<TParams>;
|
|
51
54
|
|
|
52
55
|
/**
|
|
53
56
|
* @internal
|
|
54
57
|
*/
|
|
55
58
|
export interface MiddlewareBuilder<
|
|
56
|
-
TRoot extends ProcedureParams
|
|
57
|
-
TNewParams extends ProcedureParams
|
|
59
|
+
TRoot extends ProcedureParams<AnyProcedureParams>,
|
|
60
|
+
TNewParams extends ProcedureParams<AnyProcedureParams>,
|
|
58
61
|
> {
|
|
59
62
|
/**
|
|
60
63
|
* Create a new builder based on the current middleware builder
|
|
61
64
|
*/
|
|
62
|
-
unstable_pipe<$Params extends ProcedureParams
|
|
65
|
+
unstable_pipe<$Params extends ProcedureParams<AnyProcedureParams>>(
|
|
63
66
|
fn: {
|
|
64
67
|
_config: TRoot['_config'];
|
|
65
68
|
_meta: TRoot['_meta'];
|
|
@@ -73,7 +76,7 @@ export interface MiddlewareBuilder<
|
|
|
73
76
|
TRoot['_output_out'],
|
|
74
77
|
TNewParams['_output_out']
|
|
75
78
|
>;
|
|
76
|
-
} extends infer OParams extends ProcedureParams
|
|
79
|
+
} extends infer OParams extends ProcedureParams<AnyProcedureParams>
|
|
77
80
|
?
|
|
78
81
|
| MiddlewareBuilder<OParams, $Params>
|
|
79
82
|
| MiddlewareFunction<OParams, $Params>
|
|
@@ -95,9 +98,9 @@ export interface MiddlewareBuilder<
|
|
|
95
98
|
* FIXME: there must be a nicer way of doing this, it's hard to maintain when we have several structures like this
|
|
96
99
|
*/
|
|
97
100
|
type CreateMiddlewareReturnInput<
|
|
98
|
-
TRoot extends ProcedureParams
|
|
99
|
-
TPrev extends ProcedureParams
|
|
100
|
-
TNext extends ProcedureParams
|
|
101
|
+
TRoot extends ProcedureParams<AnyProcedureParams>,
|
|
102
|
+
TPrev extends ProcedureParams<AnyProcedureParams>,
|
|
103
|
+
TNext extends ProcedureParams<AnyProcedureParams>,
|
|
101
104
|
> = MiddlewareBuilder<
|
|
102
105
|
TRoot,
|
|
103
106
|
{
|
|
@@ -133,8 +136,8 @@ type deriveParamsFromConfig<
|
|
|
133
136
|
* @internal
|
|
134
137
|
*/
|
|
135
138
|
export type MiddlewareFunction<
|
|
136
|
-
TParams extends ProcedureParams
|
|
137
|
-
TParamsAfter extends ProcedureParams
|
|
139
|
+
TParams extends ProcedureParams<AnyProcedureParams>,
|
|
140
|
+
TParamsAfter extends ProcedureParams<AnyProcedureParams>,
|
|
138
141
|
> = {
|
|
139
142
|
(opts: {
|
|
140
143
|
ctx: Simplify<
|
|
@@ -143,11 +146,11 @@ export type MiddlewareFunction<
|
|
|
143
146
|
type: ProcedureType;
|
|
144
147
|
path: string;
|
|
145
148
|
input: TParams['_input_out'];
|
|
146
|
-
|
|
149
|
+
getRawInput: GetRawInputFn;
|
|
147
150
|
meta: TParams['_meta'] | undefined;
|
|
148
151
|
next: {
|
|
149
152
|
(): Promise<MiddlewareResult<TParams>>;
|
|
150
|
-
<$Context>(opts: { ctx
|
|
153
|
+
<$Context>(opts: { ctx?: $Context; input?: unknown }): Promise<
|
|
151
154
|
MiddlewareResult<{
|
|
152
155
|
_config: TParams['_config'];
|
|
153
156
|
_ctx_out: $Context;
|
|
@@ -158,7 +161,9 @@ export type MiddlewareFunction<
|
|
|
158
161
|
_meta: TParams['_meta'];
|
|
159
162
|
}>
|
|
160
163
|
>;
|
|
161
|
-
(opts: {
|
|
164
|
+
(opts: { getRawInput: GetRawInputFn }): Promise<
|
|
165
|
+
MiddlewareResult<TParams>
|
|
166
|
+
>;
|
|
162
167
|
};
|
|
163
168
|
}): Promise<MiddlewareResult<TParamsAfter>>;
|
|
164
169
|
_type?: string | undefined;
|
|
@@ -171,7 +176,9 @@ export function createMiddlewareFactory<
|
|
|
171
176
|
TConfig extends AnyRootConfig,
|
|
172
177
|
TInputIn = unknown,
|
|
173
178
|
>() {
|
|
174
|
-
function createMiddlewareInner<
|
|
179
|
+
function createMiddlewareInner<
|
|
180
|
+
TNewParams extends ProcedureParams<AnyProcedureParams>,
|
|
181
|
+
>(
|
|
175
182
|
middlewares: MiddlewareFunction<any, any>[],
|
|
176
183
|
): MiddlewareBuilder<deriveParamsFromConfig<TConfig, TInputIn>, TNewParams> {
|
|
177
184
|
return {
|
|
@@ -190,7 +197,9 @@ export function createMiddlewareFactory<
|
|
|
190
197
|
};
|
|
191
198
|
}
|
|
192
199
|
|
|
193
|
-
function createMiddleware<
|
|
200
|
+
function createMiddleware<
|
|
201
|
+
TNewParams extends ProcedureParams<AnyProcedureParams>,
|
|
202
|
+
>(
|
|
194
203
|
fn: MiddlewareFunction<
|
|
195
204
|
deriveParamsFromConfig<TConfig, TInputIn>,
|
|
196
205
|
TNewParams
|
|
@@ -229,12 +238,10 @@ function isPlainObject(obj: unknown) {
|
|
|
229
238
|
* Please note, `trpc-openapi` uses this function.
|
|
230
239
|
*/
|
|
231
240
|
export function createInputMiddleware<TInput>(parse: ParseFn<TInput>) {
|
|
232
|
-
const inputMiddleware: ProcedureBuilderMiddleware = async ({
|
|
233
|
-
next,
|
|
234
|
-
rawInput,
|
|
235
|
-
input,
|
|
236
|
-
}) => {
|
|
241
|
+
const inputMiddleware: ProcedureBuilderMiddleware = async (opts) => {
|
|
237
242
|
let parsedInput: ReturnType<typeof parse>;
|
|
243
|
+
|
|
244
|
+
const rawInput = await opts.getRawInput();
|
|
238
245
|
try {
|
|
239
246
|
parsedInput = await parse(rawInput);
|
|
240
247
|
} catch (cause) {
|
|
@@ -246,15 +253,14 @@ export function createInputMiddleware<TInput>(parse: ParseFn<TInput>) {
|
|
|
246
253
|
|
|
247
254
|
// Multiple input parsers
|
|
248
255
|
const combinedInput =
|
|
249
|
-
isPlainObject(input) && isPlainObject(parsedInput)
|
|
256
|
+
isPlainObject(opts.input) && isPlainObject(parsedInput)
|
|
250
257
|
? {
|
|
251
|
-
...input,
|
|
258
|
+
...opts.input,
|
|
252
259
|
...parsedInput,
|
|
253
260
|
}
|
|
254
261
|
: parsedInput;
|
|
255
262
|
|
|
256
|
-
|
|
257
|
-
return next({ input: combinedInput } as any);
|
|
263
|
+
return opts.next({ input: combinedInput });
|
|
258
264
|
};
|
|
259
265
|
inputMiddleware._type = 'input';
|
|
260
266
|
return inputMiddleware;
|
package/src/core/procedure.ts
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import { AnyRootConfig } from './internals/config';
|
|
2
|
-
import {
|
|
3
|
-
ProcedureBuilderDef,
|
|
4
|
-
ProcedureCallOptions,
|
|
5
|
-
} from './internals/procedureBuilder';
|
|
6
|
-
import { UnsetMarker } from './internals/utils';
|
|
2
|
+
import { ProcedureCallOptions } from './internals/procedureBuilder';
|
|
7
3
|
import { ProcedureType } from './types';
|
|
8
4
|
|
|
9
5
|
type ClientContext = Record<string, unknown>;
|
|
@@ -20,77 +16,73 @@ export interface ProcedureOptions {
|
|
|
20
16
|
}
|
|
21
17
|
|
|
22
18
|
/**
|
|
23
|
-
* FIXME: this should only take 1 generic argument instead of a list
|
|
24
19
|
* @internal
|
|
20
|
+
* @deprecated
|
|
25
21
|
*/
|
|
26
|
-
export
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* @internal
|
|
42
|
-
*/
|
|
43
|
-
_ctx_out: TContextOut;
|
|
44
|
-
/**
|
|
45
|
-
* @internal
|
|
46
|
-
*/
|
|
47
|
-
_input_in: TInputIn;
|
|
48
|
-
/**
|
|
49
|
-
* @internal
|
|
50
|
-
*/
|
|
51
|
-
_input_out: TInputOut;
|
|
52
|
-
/**
|
|
53
|
-
* @internal
|
|
54
|
-
*/
|
|
55
|
-
_output_in: TOutputIn;
|
|
56
|
-
/**
|
|
57
|
-
* @internal
|
|
58
|
-
*/
|
|
59
|
-
_output_out: TOutputOut;
|
|
60
|
-
}
|
|
22
|
+
export type AnyProcedureParams = {
|
|
23
|
+
_config: AnyRootConfig;
|
|
24
|
+
_meta: unknown;
|
|
25
|
+
_ctx_out: unknown;
|
|
26
|
+
_input_in: unknown;
|
|
27
|
+
_input_out: unknown;
|
|
28
|
+
_output_in: unknown;
|
|
29
|
+
_output_out: unknown;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @deprecated
|
|
34
|
+
*/
|
|
35
|
+
export type ProcedureParams<TParams extends AnyProcedureParams> = TParams;
|
|
61
36
|
|
|
62
37
|
/**
|
|
63
38
|
* @internal
|
|
64
39
|
*/
|
|
65
|
-
export type ProcedureArgs<TParams extends
|
|
66
|
-
TParams['_input_in']
|
|
40
|
+
export type ProcedureArgs<TParams extends AnyProcedure['_def']> =
|
|
41
|
+
void extends TParams['_input_in']
|
|
67
42
|
? [input?: undefined | void, opts?: ProcedureOptions]
|
|
68
43
|
: undefined extends TParams['_input_in']
|
|
69
44
|
? [input?: TParams['_input_in'] | void, opts?: ProcedureOptions]
|
|
70
45
|
: [input: TParams['_input_in'], opts?: ProcedureOptions];
|
|
71
46
|
|
|
47
|
+
interface BuiltProcedureDef {
|
|
48
|
+
input: unknown;
|
|
49
|
+
output: unknown;
|
|
50
|
+
}
|
|
72
51
|
/**
|
|
73
52
|
*
|
|
74
53
|
* @internal
|
|
75
54
|
*/
|
|
76
55
|
export interface Procedure<
|
|
77
56
|
TType extends ProcedureType,
|
|
78
|
-
|
|
57
|
+
TDef extends BuiltProcedureDef,
|
|
79
58
|
> {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
59
|
+
_def: {
|
|
60
|
+
_input_in: TDef['input'];
|
|
61
|
+
_output_out: TDef['output'];
|
|
62
|
+
procedure: true;
|
|
63
|
+
type: TType;
|
|
64
|
+
/**
|
|
65
|
+
* @internal
|
|
66
|
+
* Meta is not inferrable on individual procedures, only on the router
|
|
67
|
+
*/
|
|
68
|
+
meta: unknown;
|
|
69
|
+
};
|
|
87
70
|
/**
|
|
88
71
|
* @internal
|
|
89
72
|
*/
|
|
90
73
|
(opts: ProcedureCallOptions): Promise<unknown>;
|
|
91
74
|
}
|
|
92
75
|
|
|
93
|
-
export
|
|
94
|
-
|
|
95
|
-
|
|
76
|
+
export interface QueryProcedure<TDef extends BuiltProcedureDef>
|
|
77
|
+
extends Procedure<'query', TDef> {}
|
|
78
|
+
|
|
79
|
+
export interface MutationProcedure<TDef extends BuiltProcedureDef>
|
|
80
|
+
extends Procedure<'mutation', TDef> {}
|
|
81
|
+
|
|
82
|
+
export interface SubscriptionProcedure<TDef extends BuiltProcedureDef>
|
|
83
|
+
extends Procedure<'subscription', TDef> {}
|
|
84
|
+
|
|
85
|
+
export type AnyQueryProcedure = QueryProcedure<any>;
|
|
86
|
+
export type AnyMutationProcedure = MutationProcedure<any>;
|
|
87
|
+
export type AnySubscriptionProcedure = SubscriptionProcedure<any>;
|
|
96
88
|
export type AnyProcedure = Procedure<ProcedureType, any>;
|