@trpc/server 11.0.0-next-alpha.133 → 11.0.0-next-alpha.139
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/bundle-analysis.json +21 -21
- package/dist/core/index.d.ts +0 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/initTRPC.d.ts +2 -41
- package/dist/core/initTRPC.d.ts.map +1 -1
- package/dist/core/internals/procedureBuilder.d.ts +46 -60
- package/dist/core/internals/procedureBuilder.d.ts.map +1 -1
- package/dist/core/internals/utils.d.ts +1 -9
- package/dist/core/internals/utils.d.ts.map +1 -1
- package/dist/core/middleware.d.ts +33 -85
- package/dist/core/middleware.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +2 -2
- package/dist/{procedureBuilder-0ee77d9c.js → procedureBuilder-416387b5.js} +10 -9
- package/dist/{procedureBuilder-88b211d2.mjs → procedureBuilder-5431b157.mjs} +10 -9
- package/dist/{procedureBuilder-c990500b.js → procedureBuilder-e77bab71.js} +11 -13
- package/dist/unstableInternalsExport.js +1 -1
- package/dist/unstableInternalsExport.mjs +1 -1
- package/package.json +2 -2
- package/src/core/index.ts +0 -1
- package/src/core/initTRPC.ts +8 -2
- package/src/core/internals/procedureBuilder.ts +173 -104
- package/src/core/internals/utils.ts +1 -14
- package/src/core/middleware.ts +114 -163
- package/dist/core/internals/builderTypes.d.ts +0 -14
- package/dist/core/internals/builderTypes.d.ts.map +0 -1
- package/src/core/internals/builderTypes.ts +0 -14
package/src/core/middleware.ts
CHANGED
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
import { TRPCError } from '../error/TRPCError';
|
|
2
2
|
import { Simplify } from '../types';
|
|
3
|
-
import { AnyProcedureBuilderParams } from './internals/builderTypes';
|
|
4
|
-
import { AnyRootConfig, RootConfig } from './internals/config';
|
|
5
3
|
import { ParseFn } from './internals/getParseFn';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
DefaultValue,
|
|
9
|
-
GetRawInputFn,
|
|
10
|
-
MiddlewareMarker,
|
|
11
|
-
Overwrite,
|
|
12
|
-
UnsetMarker,
|
|
13
|
-
} from './internals/utils';
|
|
4
|
+
import { GetRawInputFn, MiddlewareMarker, Overwrite } from './internals/utils';
|
|
14
5
|
import { ProcedureType } from './types';
|
|
15
6
|
|
|
16
7
|
/**
|
|
@@ -27,8 +18,7 @@ interface MiddlewareResultBase {
|
|
|
27
18
|
/**
|
|
28
19
|
* @internal
|
|
29
20
|
*/
|
|
30
|
-
interface MiddlewareOKResult<
|
|
31
|
-
extends MiddlewareResultBase {
|
|
21
|
+
interface MiddlewareOKResult<_TContextOverride> extends MiddlewareResultBase {
|
|
32
22
|
ok: true;
|
|
33
23
|
data: unknown;
|
|
34
24
|
// this could be extended with `input`/`rawInput` later
|
|
@@ -37,7 +27,7 @@ interface MiddlewareOKResult<_TParams extends AnyProcedureBuilderParams>
|
|
|
37
27
|
/**
|
|
38
28
|
* @internal
|
|
39
29
|
*/
|
|
40
|
-
interface MiddlewareErrorResult<
|
|
30
|
+
interface MiddlewareErrorResult<_TContextOverride>
|
|
41
31
|
extends MiddlewareResultBase {
|
|
42
32
|
ok: false;
|
|
43
33
|
error: TRPCError;
|
|
@@ -46,133 +36,96 @@ interface MiddlewareErrorResult<_TParams extends AnyProcedureBuilderParams>
|
|
|
46
36
|
/**
|
|
47
37
|
* @internal
|
|
48
38
|
*/
|
|
49
|
-
export type MiddlewareResult<
|
|
50
|
-
| MiddlewareErrorResult<
|
|
51
|
-
| MiddlewareOKResult<
|
|
39
|
+
export type MiddlewareResult<_TContextOverride> =
|
|
40
|
+
| MiddlewareErrorResult<_TContextOverride>
|
|
41
|
+
| MiddlewareOKResult<_TContextOverride>;
|
|
52
42
|
|
|
53
43
|
/**
|
|
54
44
|
* @internal
|
|
55
45
|
*/
|
|
56
46
|
export interface MiddlewareBuilder<
|
|
57
|
-
|
|
58
|
-
|
|
47
|
+
TContext,
|
|
48
|
+
TMeta,
|
|
49
|
+
TContextOverrides,
|
|
50
|
+
TInputIn,
|
|
59
51
|
> {
|
|
60
52
|
/**
|
|
61
53
|
* Create a new builder based on the current middleware builder
|
|
62
54
|
*/
|
|
63
|
-
unstable_pipe<$
|
|
64
|
-
fn:
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
Overwrite<TNewParams, $Params>
|
|
55
|
+
unstable_pipe<$ContextOverridesOut>(
|
|
56
|
+
fn:
|
|
57
|
+
| MiddlewareFunction<
|
|
58
|
+
TContext,
|
|
59
|
+
TMeta,
|
|
60
|
+
TContextOverrides,
|
|
61
|
+
$ContextOverridesOut,
|
|
62
|
+
TInputIn
|
|
63
|
+
>
|
|
64
|
+
| MiddlewareBuilder<
|
|
65
|
+
Overwrite<TContext, TContextOverrides>,
|
|
66
|
+
TMeta,
|
|
67
|
+
$ContextOverridesOut,
|
|
68
|
+
TInputIn
|
|
69
|
+
>,
|
|
70
|
+
): MiddlewareBuilder<
|
|
71
|
+
TContext,
|
|
72
|
+
TMeta,
|
|
73
|
+
Overwrite<TContextOverrides, $ContextOverridesOut>,
|
|
74
|
+
TInputIn
|
|
84
75
|
>;
|
|
85
76
|
|
|
86
77
|
/**
|
|
87
78
|
* List of middlewares within this middleware builder
|
|
88
79
|
*/
|
|
89
|
-
_middlewares: MiddlewareFunction<
|
|
80
|
+
_middlewares: MiddlewareFunction<
|
|
81
|
+
TContext,
|
|
82
|
+
TMeta,
|
|
83
|
+
TContextOverrides,
|
|
84
|
+
object,
|
|
85
|
+
TInputIn
|
|
86
|
+
>[];
|
|
90
87
|
}
|
|
91
88
|
|
|
92
|
-
/**
|
|
93
|
-
* @internal
|
|
94
|
-
* FIXME: there must be a nicer way of doing this, it's hard to maintain when we have several structures like this
|
|
95
|
-
*/
|
|
96
|
-
type CreateMiddlewareReturnInput<
|
|
97
|
-
TRoot extends AnyProcedureBuilderParams,
|
|
98
|
-
TPrev extends AnyProcedureBuilderParams,
|
|
99
|
-
TNext extends AnyProcedureBuilderParams,
|
|
100
|
-
> = MiddlewareBuilder<
|
|
101
|
-
TRoot,
|
|
102
|
-
{
|
|
103
|
-
_config: TPrev['_config'];
|
|
104
|
-
_meta: TPrev['_meta'];
|
|
105
|
-
_ctx_out: Overwrite<TPrev['_ctx_out'], TNext['_ctx_out']>;
|
|
106
|
-
_input_in: DefaultValue<TNext['_input_in'], TPrev['_input_in']>;
|
|
107
|
-
_input_out: DefaultValue<TNext['_input_out'], TPrev['_input_out']>;
|
|
108
|
-
_output_in: DefaultValue<TNext['_output_in'], TPrev['_output_in']>;
|
|
109
|
-
_output_out: DefaultValue<TNext['_output_out'], TPrev['_output_out']>;
|
|
110
|
-
}
|
|
111
|
-
>;
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* @internal
|
|
115
|
-
*/
|
|
116
|
-
type deriveParamsFromConfig<
|
|
117
|
-
TConfig extends AnyRootConfig,
|
|
118
|
-
TInputIn = unknown,
|
|
119
|
-
> = {
|
|
120
|
-
_config: TConfig;
|
|
121
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
122
|
-
_ctx_out: {};
|
|
123
|
-
_input_out: UnsetMarker;
|
|
124
|
-
_input_in: TInputIn;
|
|
125
|
-
_output_in: unknown;
|
|
126
|
-
_output_out: unknown;
|
|
127
|
-
_meta: TConfig['$types']['meta'];
|
|
128
|
-
};
|
|
129
89
|
/**
|
|
130
90
|
* @internal
|
|
131
91
|
*/
|
|
132
92
|
export type MiddlewareFunction<
|
|
133
|
-
|
|
134
|
-
|
|
93
|
+
TContext,
|
|
94
|
+
TMeta,
|
|
95
|
+
TContextOverridesIn,
|
|
96
|
+
$ContextOverridesOut,
|
|
97
|
+
TInputIn,
|
|
135
98
|
> = {
|
|
136
99
|
(opts: {
|
|
137
|
-
ctx: Simplify<
|
|
138
|
-
Overwrite<TParams['_config']['$types']['ctx'], TParams['_ctx_out']>
|
|
139
|
-
>;
|
|
100
|
+
ctx: Simplify<Overwrite<TContext, TContextOverridesIn>>;
|
|
140
101
|
type: ProcedureType;
|
|
141
102
|
path: string;
|
|
142
|
-
input:
|
|
103
|
+
input: TInputIn;
|
|
143
104
|
getRawInput: GetRawInputFn;
|
|
144
|
-
meta:
|
|
105
|
+
meta: TMeta | undefined;
|
|
145
106
|
next: {
|
|
146
|
-
(): Promise<MiddlewareResult<
|
|
147
|
-
<$
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
_input_in: TParams['_input_in'];
|
|
152
|
-
_input_out: TParams['_input_out'];
|
|
153
|
-
_output_in: TParams['_output_in'];
|
|
154
|
-
_output_out: TParams['_output_out'];
|
|
155
|
-
_meta: TParams['_meta'];
|
|
156
|
-
}>
|
|
157
|
-
>;
|
|
107
|
+
(): Promise<MiddlewareResult<TContextOverridesIn>>;
|
|
108
|
+
<$ContextOverride>(opts: {
|
|
109
|
+
ctx?: $ContextOverride;
|
|
110
|
+
input?: unknown;
|
|
111
|
+
}): Promise<MiddlewareResult<$ContextOverride>>;
|
|
158
112
|
(opts: { getRawInput: GetRawInputFn }): Promise<
|
|
159
|
-
MiddlewareResult<
|
|
113
|
+
MiddlewareResult<TContextOverridesIn>
|
|
160
114
|
>;
|
|
161
115
|
};
|
|
162
|
-
}): Promise<MiddlewareResult
|
|
116
|
+
}): Promise<MiddlewareResult<$ContextOverridesOut>>;
|
|
163
117
|
_type?: string | undefined;
|
|
164
118
|
};
|
|
165
119
|
|
|
120
|
+
export type AnyMiddlewareFunction = MiddlewareFunction<any, any, any, any, any>;
|
|
121
|
+
export type AnyMiddlewareBuilder = MiddlewareBuilder<any, any, any, any>;
|
|
166
122
|
/**
|
|
167
123
|
* @internal
|
|
168
124
|
*/
|
|
169
|
-
export function createMiddlewareFactory<
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
function createMiddlewareInner<TNewParams extends AnyProcedureBuilderParams>(
|
|
174
|
-
middlewares: MiddlewareFunction<any, any>[],
|
|
175
|
-
): MiddlewareBuilder<deriveParamsFromConfig<TConfig, TInputIn>, TNewParams> {
|
|
125
|
+
export function createMiddlewareFactory<TContext, TMeta, TInputIn = unknown>() {
|
|
126
|
+
function createMiddlewareInner(
|
|
127
|
+
middlewares: AnyMiddlewareFunction[],
|
|
128
|
+
): AnyMiddlewareBuilder {
|
|
176
129
|
return {
|
|
177
130
|
_middlewares: middlewares,
|
|
178
131
|
unstable_pipe(middlewareBuilderOrFn) {
|
|
@@ -181,20 +134,20 @@ export function createMiddlewareFactory<
|
|
|
181
134
|
? middlewareBuilderOrFn._middlewares
|
|
182
135
|
: [middlewareBuilderOrFn];
|
|
183
136
|
|
|
184
|
-
return createMiddlewareInner([
|
|
185
|
-
...(middlewares as any),
|
|
186
|
-
...pipedMiddleware,
|
|
187
|
-
]);
|
|
137
|
+
return createMiddlewareInner([...middlewares, ...pipedMiddleware]);
|
|
188
138
|
},
|
|
189
139
|
};
|
|
190
140
|
}
|
|
191
141
|
|
|
192
|
-
function createMiddleware
|
|
142
|
+
function createMiddleware<$ContextOverrides>(
|
|
193
143
|
fn: MiddlewareFunction<
|
|
194
|
-
|
|
195
|
-
|
|
144
|
+
TContext,
|
|
145
|
+
TMeta,
|
|
146
|
+
object,
|
|
147
|
+
$ContextOverrides,
|
|
148
|
+
TInputIn
|
|
196
149
|
>,
|
|
197
|
-
): MiddlewareBuilder<
|
|
150
|
+
): MiddlewareBuilder<TContext, TMeta, $ContextOverrides, TInputIn> {
|
|
198
151
|
return createMiddlewareInner([fn]);
|
|
199
152
|
}
|
|
200
153
|
|
|
@@ -209,12 +162,8 @@ export const experimental_standaloneMiddleware = <
|
|
|
209
162
|
},
|
|
210
163
|
>() => ({
|
|
211
164
|
create: createMiddlewareFactory<
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
meta: TCtx extends { meta: infer T extends object } ? T : object;
|
|
215
|
-
errorShape: object;
|
|
216
|
-
transformer: object;
|
|
217
|
-
}>,
|
|
165
|
+
TCtx extends { ctx: infer T extends object } ? T : any,
|
|
166
|
+
TCtx extends { meta: infer T extends object } ? T : object,
|
|
218
167
|
TCtx extends { input: infer T } ? T : unknown
|
|
219
168
|
>(),
|
|
220
169
|
});
|
|
@@ -228,30 +177,31 @@ function isPlainObject(obj: unknown) {
|
|
|
228
177
|
* Please note, `trpc-openapi` uses this function.
|
|
229
178
|
*/
|
|
230
179
|
export function createInputMiddleware<TInput>(parse: ParseFn<TInput>) {
|
|
231
|
-
const inputMiddleware:
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
180
|
+
const inputMiddleware: AnyMiddlewareFunction =
|
|
181
|
+
async function inputValidatorMiddleware(opts) {
|
|
182
|
+
let parsedInput: ReturnType<typeof parse>;
|
|
183
|
+
|
|
184
|
+
const rawInput = await opts.getRawInput();
|
|
185
|
+
try {
|
|
186
|
+
parsedInput = await parse(rawInput);
|
|
187
|
+
} catch (cause) {
|
|
188
|
+
throw new TRPCError({
|
|
189
|
+
code: 'BAD_REQUEST',
|
|
190
|
+
cause,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// Multiple input parsers
|
|
195
|
+
const combinedInput =
|
|
196
|
+
isPlainObject(opts.input) && isPlainObject(parsedInput)
|
|
197
|
+
? {
|
|
198
|
+
...opts.input,
|
|
199
|
+
...parsedInput,
|
|
200
|
+
}
|
|
201
|
+
: parsedInput;
|
|
202
|
+
|
|
203
|
+
return opts.next({ input: combinedInput });
|
|
204
|
+
};
|
|
255
205
|
inputMiddleware._type = 'input';
|
|
256
206
|
return inputMiddleware;
|
|
257
207
|
}
|
|
@@ -260,26 +210,27 @@ export function createInputMiddleware<TInput>(parse: ParseFn<TInput>) {
|
|
|
260
210
|
* @internal
|
|
261
211
|
*/
|
|
262
212
|
export function createOutputMiddleware<TOutput>(parse: ParseFn<TOutput>) {
|
|
263
|
-
const outputMiddleware:
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
213
|
+
const outputMiddleware: AnyMiddlewareFunction =
|
|
214
|
+
async function outputValidatorMiddleware({ next }) {
|
|
215
|
+
const result = await next();
|
|
216
|
+
if (!result.ok) {
|
|
217
|
+
// pass through failures without validating
|
|
218
|
+
return result;
|
|
219
|
+
}
|
|
220
|
+
try {
|
|
221
|
+
const data = await parse(result.data);
|
|
222
|
+
return {
|
|
223
|
+
...result,
|
|
224
|
+
data,
|
|
225
|
+
};
|
|
226
|
+
} catch (cause) {
|
|
227
|
+
throw new TRPCError({
|
|
228
|
+
message: 'Output validation failed',
|
|
229
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
230
|
+
cause,
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
};
|
|
283
234
|
outputMiddleware._type = 'output';
|
|
284
235
|
return outputMiddleware;
|
|
285
236
|
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { AnyRootConfig } from './config';
|
|
2
|
-
/**
|
|
3
|
-
* @internal
|
|
4
|
-
*/
|
|
5
|
-
export type AnyProcedureBuilderParams = {
|
|
6
|
-
_config: AnyRootConfig;
|
|
7
|
-
_meta: unknown;
|
|
8
|
-
_ctx_out: unknown;
|
|
9
|
-
_input_in: unknown;
|
|
10
|
-
_input_out: unknown;
|
|
11
|
-
_output_in: unknown;
|
|
12
|
-
_output_out: unknown;
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=builderTypes.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"builderTypes.d.ts","sourceRoot":"","sources":["../../../src/core/internals/builderTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { AnyRootConfig } from './config';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @internal
|
|
5
|
-
*/
|
|
6
|
-
export type AnyProcedureBuilderParams = {
|
|
7
|
-
_config: AnyRootConfig;
|
|
8
|
-
_meta: unknown;
|
|
9
|
-
_ctx_out: unknown;
|
|
10
|
-
_input_in: unknown;
|
|
11
|
-
_input_out: unknown;
|
|
12
|
-
_output_in: unknown;
|
|
13
|
-
_output_out: unknown;
|
|
14
|
-
};
|