@trpc/server 10.0.0-alpha.28 → 10.0.0-alpha.30
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/node-http/types.d.ts +2 -2
- package/dist/adapters/node-http/types.d.ts.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/initTRPC.d.ts +3 -21
- package/dist/core/initTRPC.d.ts.map +1 -1
- package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts +41 -81
- package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts.map +1 -1
- package/dist/core/internals/config.d.ts +1 -3
- package/dist/core/internals/config.d.ts.map +1 -1
- package/dist/core/internals/internalProcedure.d.ts +18 -1
- package/dist/core/internals/internalProcedure.d.ts.map +1 -1
- package/dist/core/internals/mergeRouters.d.ts.map +1 -1
- package/dist/core/internals/prefixObjectKeys.d.ts +2 -0
- package/dist/core/internals/prefixObjectKeys.d.ts.map +1 -0
- package/dist/core/internals/procedureBuilder.d.ts +35 -8
- package/dist/core/internals/procedureBuilder.d.ts.map +1 -1
- package/dist/core/middleware.d.ts +8 -7
- package/dist/core/middleware.d.ts.map +1 -1
- package/dist/core/procedure.d.ts +14 -2
- package/dist/core/procedure.d.ts.map +1 -1
- package/dist/core/router.d.ts +42 -60
- package/dist/core/router.d.ts.map +1 -1
- package/dist/core/types.d.ts +9 -9
- package/dist/core/types.d.ts.map +1 -1
- package/dist/deprecated/interop.d.ts +8 -24
- package/dist/deprecated/interop.d.ts.map +1 -1
- package/dist/http/internals/types.d.ts +3 -3
- package/dist/http/internals/types.d.ts.map +1 -1
- package/dist/index.js +94 -58
- package/dist/index.mjs +94 -58
- package/dist/internals/types.d.ts +2 -2
- package/dist/internals/types.d.ts.map +1 -1
- package/dist/observable/observable.d.ts +1 -1
- package/dist/observable/observable.d.ts.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/adapters/node-http/nodeHTTPRequestHandler.ts +2 -2
- package/src/adapters/node-http/types.ts +2 -4
- package/src/core/index.ts +1 -1
- package/src/core/initTRPC.ts +14 -9
- package/src/core/internals/__generated__/mergeRoutersGeneric.ts +284 -324
- package/src/core/internals/config.ts +1 -3
- package/src/core/internals/internalProcedure.ts +52 -21
- package/src/core/internals/mergeRouters.ts +3 -15
- package/src/core/internals/prefixObjectKeys.ts +9 -0
- package/src/core/internals/procedureBuilder.ts +88 -9
- package/src/core/middleware.ts +5 -4
- package/src/core/procedure.ts +25 -2
- package/src/core/router.ts +112 -134
- package/src/core/types.ts +31 -15
- package/src/deprecated/interop.ts +64 -37
- package/src/http/internals/types.ts +3 -3
- package/src/internals/types.ts +2 -2
- package/src/observable/observable.ts +6 -3
- package/src/types.ts +7 -0
- package/dist/core/internals/mergeRoutersGeneric.d.ts +0 -21
- package/dist/core/internals/mergeRoutersGeneric.d.ts.map +0 -1
- package/src/core/internals/mergeRoutersGeneric.ts +0 -35
|
@@ -31,9 +31,7 @@ export type CreateInitGenerics<T extends InitGenerics> = T;
|
|
|
31
31
|
* Combination of `InitTOptions` + `InitGenerics`
|
|
32
32
|
* @internal
|
|
33
33
|
*/
|
|
34
|
-
export interface RootConfig {
|
|
35
|
-
ctx: Record<string, unknown>;
|
|
36
|
-
meta: Record<string, unknown>;
|
|
34
|
+
export interface RootConfig extends InitGenerics {
|
|
37
35
|
transformer: CombinedDataTransformer;
|
|
38
36
|
errorShape: DefaultErrorShape;
|
|
39
37
|
}
|
|
@@ -26,6 +26,9 @@ export interface InternalProcedure {
|
|
|
26
26
|
* @deprecated use `._def.meta` instead
|
|
27
27
|
*/
|
|
28
28
|
meta: ProcedureBuilderInternal['_def']['meta'];
|
|
29
|
+
mutation?: boolean;
|
|
30
|
+
query?: boolean;
|
|
31
|
+
subscription?: boolean;
|
|
29
32
|
(opts: InternalProcedureCallOptions): Promise<unknown>;
|
|
30
33
|
}
|
|
31
34
|
|
|
@@ -34,6 +37,8 @@ type ProcedureBuilderInternalResolver = (
|
|
|
34
37
|
) => Promise<unknown>;
|
|
35
38
|
|
|
36
39
|
export type ProcedureBuilderInternalMiddleware = MiddlewareFunction<any, any>;
|
|
40
|
+
type TResolver = (opts: ResolveOptions<any>) => MaybePromise<any>;
|
|
41
|
+
|
|
37
42
|
interface ProcedureBuilderInternal {
|
|
38
43
|
_def: {
|
|
39
44
|
input?: Parser;
|
|
@@ -41,9 +46,10 @@ interface ProcedureBuilderInternal {
|
|
|
41
46
|
meta?: Record<string, unknown>;
|
|
42
47
|
resolver?: ProcedureBuilderInternalResolver;
|
|
43
48
|
middlewares: ProcedureBuilderInternalMiddleware[];
|
|
49
|
+
mutation?: boolean;
|
|
50
|
+
query?: boolean;
|
|
51
|
+
subscription?: boolean;
|
|
44
52
|
};
|
|
45
|
-
// FIXME
|
|
46
|
-
// _call: (opts: ResolveOptions<any>) => Promise<unknown>;
|
|
47
53
|
/**
|
|
48
54
|
* @internal
|
|
49
55
|
*/
|
|
@@ -64,12 +70,21 @@ interface ProcedureBuilderInternal {
|
|
|
64
70
|
* @internal
|
|
65
71
|
*/
|
|
66
72
|
meta: (meta: Record<string, unknown>) => ProcedureBuilderInternal;
|
|
73
|
+
/** @deprecated **/
|
|
74
|
+
resolve: (resolver: TResolver) => InternalProcedure;
|
|
75
|
+
/**
|
|
76
|
+
* @internal
|
|
77
|
+
*/
|
|
78
|
+
query: (resolver: TResolver) => InternalProcedure;
|
|
79
|
+
/**
|
|
80
|
+
* @internal
|
|
81
|
+
*/
|
|
82
|
+
mutation: (resolver: TResolver) => InternalProcedure;
|
|
83
|
+
|
|
67
84
|
/**
|
|
68
85
|
* @internal
|
|
69
86
|
*/
|
|
70
|
-
|
|
71
|
-
resolver: (opts: ResolveOptions<any>) => MaybePromise<any>,
|
|
72
|
-
) => InternalProcedure;
|
|
87
|
+
subscription: (resolver: TResolver) => InternalProcedure;
|
|
73
88
|
}
|
|
74
89
|
function createNewInternalBuilder(
|
|
75
90
|
def1: ProcedureBuilderInternal['_def'],
|
|
@@ -208,6 +223,27 @@ export function createOutputMiddleware<T>(
|
|
|
208
223
|
};
|
|
209
224
|
}
|
|
210
225
|
|
|
226
|
+
function createResolver(
|
|
227
|
+
_def: ProcedureBuilderInternal['_def'],
|
|
228
|
+
resolver: TResolver,
|
|
229
|
+
) {
|
|
230
|
+
const finalBuilder = createNewInternalBuilder(_def, {
|
|
231
|
+
resolver,
|
|
232
|
+
middlewares: [
|
|
233
|
+
async function resolveMiddleware(opts) {
|
|
234
|
+
const data = await resolver(opts);
|
|
235
|
+
return {
|
|
236
|
+
marker: middlewareMarker,
|
|
237
|
+
ok: true,
|
|
238
|
+
data,
|
|
239
|
+
ctx: opts.ctx,
|
|
240
|
+
} as const;
|
|
241
|
+
},
|
|
242
|
+
],
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
return createProcedureCaller(finalBuilder._def);
|
|
246
|
+
}
|
|
211
247
|
export function createInternalBuilder(
|
|
212
248
|
initDef?: ProcedureBuilderInternal['_def'],
|
|
213
249
|
): ProcedureBuilderInternal {
|
|
@@ -235,23 +271,9 @@ export function createInternalBuilder(
|
|
|
235
271
|
meta(meta) {
|
|
236
272
|
return createNewInternalBuilder(_def, { meta });
|
|
237
273
|
},
|
|
274
|
+
/** @deprecated **/
|
|
238
275
|
resolve(resolver) {
|
|
239
|
-
|
|
240
|
-
resolver,
|
|
241
|
-
middlewares: [
|
|
242
|
-
async function resolveMiddleware(opts) {
|
|
243
|
-
const data = await resolver(opts);
|
|
244
|
-
return {
|
|
245
|
-
marker: middlewareMarker,
|
|
246
|
-
ok: true,
|
|
247
|
-
data,
|
|
248
|
-
ctx: opts.ctx,
|
|
249
|
-
} as const;
|
|
250
|
-
},
|
|
251
|
-
],
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
return createProcedureCaller(finalBuilder._def);
|
|
276
|
+
return createResolver(_def, resolver);
|
|
255
277
|
},
|
|
256
278
|
unstable_concat(builder) {
|
|
257
279
|
return createNewInternalBuilder(_def, builder._def);
|
|
@@ -261,5 +283,14 @@ export function createInternalBuilder(
|
|
|
261
283
|
middlewares: [middleware],
|
|
262
284
|
});
|
|
263
285
|
},
|
|
286
|
+
query(resolver) {
|
|
287
|
+
return createResolver({ ..._def, query: true }, resolver);
|
|
288
|
+
},
|
|
289
|
+
mutation(resolver) {
|
|
290
|
+
return createResolver({ ..._def, mutation: true }, resolver);
|
|
291
|
+
},
|
|
292
|
+
subscription(resolver) {
|
|
293
|
+
return createResolver({ ..._def, subscription: true }, resolver);
|
|
294
|
+
},
|
|
264
295
|
};
|
|
265
296
|
}
|
|
@@ -4,17 +4,9 @@ import { AnyRouter, createRouterFactory } from '../router';
|
|
|
4
4
|
import { mergeWithoutOverrides } from './mergeWithoutOverrides';
|
|
5
5
|
|
|
6
6
|
export function mergeRouters(...routerList: AnyRouter[]): AnyRouter {
|
|
7
|
-
const
|
|
7
|
+
const procedures = mergeWithoutOverrides(
|
|
8
8
|
{},
|
|
9
|
-
...routerList.map((r) => r.
|
|
10
|
-
);
|
|
11
|
-
const mutations = mergeWithoutOverrides(
|
|
12
|
-
{},
|
|
13
|
-
...routerList.map((r) => r.mutations),
|
|
14
|
-
);
|
|
15
|
-
const subscriptions = mergeWithoutOverrides(
|
|
16
|
-
{},
|
|
17
|
-
...routerList.map((r) => r.subscriptions),
|
|
9
|
+
...routerList.map((r) => r._def.procedures),
|
|
18
10
|
);
|
|
19
11
|
const errorFormatter = routerList.reduce(
|
|
20
12
|
(currentErrorFormatter, nextRouter) => {
|
|
@@ -48,10 +40,6 @@ export function mergeRouters(...routerList: AnyRouter[]): AnyRouter {
|
|
|
48
40
|
const router = createRouterFactory({
|
|
49
41
|
errorFormatter,
|
|
50
42
|
transformer,
|
|
51
|
-
})(
|
|
52
|
-
queries,
|
|
53
|
-
mutations,
|
|
54
|
-
subscriptions,
|
|
55
|
-
});
|
|
43
|
+
})(procedures);
|
|
56
44
|
return router;
|
|
57
45
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { omitPrototype } from './omitPrototype';
|
|
2
|
+
|
|
3
|
+
export function prefixObjectKeys(obj: Record<string, unknown>, prefix: string) {
|
|
4
|
+
const newObj: Record<string, unknown> = omitPrototype({});
|
|
5
|
+
for (const key in obj ?? {}) {
|
|
6
|
+
newObj[prefix + key] = obj[key];
|
|
7
|
+
}
|
|
8
|
+
return newObj;
|
|
9
|
+
}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import { MaybePromise } from '../../types';
|
|
2
2
|
import { MiddlewareFunction } from '../middleware';
|
|
3
3
|
import { Parser, inferParser } from '../parser';
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
MutationProcedure,
|
|
6
|
+
Procedure,
|
|
7
|
+
ProcedureParams,
|
|
8
|
+
QueryProcedure,
|
|
9
|
+
SubscriptionProcedure,
|
|
10
|
+
} from '../procedure';
|
|
11
|
+
import { RootConfig } from './config';
|
|
5
12
|
import { createInternalBuilder } from './internalProcedure';
|
|
6
13
|
import { ResolveOptions } from './utils';
|
|
7
14
|
import { DefaultValue as FallbackValue, Overwrite, UnsetMarker } from './utils';
|
|
@@ -67,9 +74,8 @@ export interface ProcedureBuilder<TParams extends ProcedureParams> {
|
|
|
67
74
|
): $ProcedureReturnInput extends ProcedureBuilder<infer $TParams>
|
|
68
75
|
? CreateProcedureReturnInput<TParams, $TParams>
|
|
69
76
|
: never;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
*/
|
|
77
|
+
|
|
78
|
+
/** @deprecated **/
|
|
73
79
|
resolve<$TOutput>(
|
|
74
80
|
resolver: (
|
|
75
81
|
opts: ResolveOptions<TParams>,
|
|
@@ -85,17 +91,90 @@ export interface ProcedureBuilder<TParams extends ProcedureParams> {
|
|
|
85
91
|
>
|
|
86
92
|
>
|
|
87
93
|
: Procedure<TParams>;
|
|
94
|
+
/**
|
|
95
|
+
* Query procedure
|
|
96
|
+
*/
|
|
97
|
+
query<$TOutput>(
|
|
98
|
+
resolver: (
|
|
99
|
+
opts: ResolveOptions<TParams>,
|
|
100
|
+
) => MaybePromise<FallbackValue<TParams['_output_in'], $TOutput>>,
|
|
101
|
+
): UnsetMarker extends TParams['_output_out']
|
|
102
|
+
? QueryProcedure<
|
|
103
|
+
Overwrite<
|
|
104
|
+
TParams,
|
|
105
|
+
{
|
|
106
|
+
_output_in: $TOutput;
|
|
107
|
+
_output_out: $TOutput;
|
|
108
|
+
}
|
|
109
|
+
>
|
|
110
|
+
>
|
|
111
|
+
: QueryProcedure<TParams>;
|
|
112
|
+
/**
|
|
113
|
+
* Query procedure
|
|
114
|
+
*/
|
|
115
|
+
query<$TOutput>(
|
|
116
|
+
resolver: (
|
|
117
|
+
opts: ResolveOptions<TParams>,
|
|
118
|
+
) => MaybePromise<FallbackValue<TParams['_output_in'], $TOutput>>,
|
|
119
|
+
): UnsetMarker extends TParams['_output_out']
|
|
120
|
+
? QueryProcedure<
|
|
121
|
+
Overwrite<
|
|
122
|
+
TParams,
|
|
123
|
+
{
|
|
124
|
+
_output_in: $TOutput;
|
|
125
|
+
_output_out: $TOutput;
|
|
126
|
+
}
|
|
127
|
+
>
|
|
128
|
+
>
|
|
129
|
+
: QueryProcedure<TParams>;
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Mutation procedure
|
|
133
|
+
*/
|
|
134
|
+
mutation<$TOutput>(
|
|
135
|
+
resolver: (
|
|
136
|
+
opts: ResolveOptions<TParams>,
|
|
137
|
+
) => MaybePromise<FallbackValue<TParams['_output_in'], $TOutput>>,
|
|
138
|
+
): UnsetMarker extends TParams['_output_out']
|
|
139
|
+
? MutationProcedure<
|
|
140
|
+
Overwrite<
|
|
141
|
+
TParams,
|
|
142
|
+
{
|
|
143
|
+
_output_in: $TOutput;
|
|
144
|
+
_output_out: $TOutput;
|
|
145
|
+
}
|
|
146
|
+
>
|
|
147
|
+
>
|
|
148
|
+
: MutationProcedure<TParams>;
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Mutation procedure
|
|
152
|
+
*/
|
|
153
|
+
subscription<$TOutput>(
|
|
154
|
+
resolver: (
|
|
155
|
+
opts: ResolveOptions<TParams>,
|
|
156
|
+
) => MaybePromise<FallbackValue<TParams['_output_in'], $TOutput>>,
|
|
157
|
+
): UnsetMarker extends TParams['_output_out']
|
|
158
|
+
? SubscriptionProcedure<
|
|
159
|
+
Overwrite<
|
|
160
|
+
TParams,
|
|
161
|
+
{
|
|
162
|
+
_output_in: $TOutput;
|
|
163
|
+
_output_out: $TOutput;
|
|
164
|
+
}
|
|
165
|
+
>
|
|
166
|
+
>
|
|
167
|
+
: SubscriptionProcedure<TParams>;
|
|
88
168
|
}
|
|
89
169
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
_ctx_out: TContext;
|
|
170
|
+
export function createBuilder<TConfig extends RootConfig>(): ProcedureBuilder<{
|
|
171
|
+
_ctx_in: TConfig['ctx'];
|
|
172
|
+
_ctx_out: TConfig['ctx'];
|
|
94
173
|
_input_out: UnsetMarker;
|
|
95
174
|
_input_in: UnsetMarker;
|
|
96
175
|
_output_in: UnsetMarker;
|
|
97
176
|
_output_out: UnsetMarker;
|
|
98
|
-
_meta:
|
|
177
|
+
_meta: TConfig['meta'];
|
|
99
178
|
}> {
|
|
100
179
|
return createInternalBuilder() as any;
|
|
101
180
|
}
|
package/src/core/middleware.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RootConfig } from './internals/config';
|
|
1
2
|
import { MiddlewareMarker } from './internals/utils';
|
|
2
3
|
import { ProcedureParams } from './procedure';
|
|
3
4
|
import { ProcedureType } from './types';
|
|
@@ -73,17 +74,17 @@ export type MiddlewareFunction<
|
|
|
73
74
|
* @internal
|
|
74
75
|
*/
|
|
75
76
|
// FIXME this should use RootConfig
|
|
76
|
-
export function createMiddlewareFactory<
|
|
77
|
+
export function createMiddlewareFactory<TConfig extends RootConfig>() {
|
|
77
78
|
return function createMiddleware<$TNewParams extends ProcedureParams>(
|
|
78
79
|
fn: MiddlewareFunction<
|
|
79
80
|
{
|
|
80
|
-
_ctx_in:
|
|
81
|
-
_ctx_out:
|
|
81
|
+
_ctx_in: TConfig['ctx'];
|
|
82
|
+
_ctx_out: TConfig['ctx'];
|
|
82
83
|
_input_out: unknown;
|
|
83
84
|
_input_in: unknown;
|
|
84
85
|
_output_in: unknown;
|
|
85
86
|
_output_out: unknown;
|
|
86
|
-
_meta:
|
|
87
|
+
_meta: TConfig['meta'];
|
|
87
88
|
},
|
|
88
89
|
$TNewParams
|
|
89
90
|
>,
|
package/src/core/procedure.ts
CHANGED
|
@@ -63,10 +63,33 @@ export type ProcedureArgs<TParams extends ProcedureParams> =
|
|
|
63
63
|
/**
|
|
64
64
|
* @internal
|
|
65
65
|
*/
|
|
66
|
-
export interface
|
|
67
|
-
(...args: ProcedureArgs<TParams>): Promise<TParams['_output_out']>;
|
|
66
|
+
export interface ProcedureBase<TParams extends ProcedureParams> {
|
|
68
67
|
/**
|
|
69
68
|
* @deprecated use `._def.meta` instead
|
|
70
69
|
*/
|
|
71
70
|
meta?: TParams['_meta'];
|
|
72
71
|
}
|
|
72
|
+
|
|
73
|
+
export interface QueryProcedure<TParams extends ProcedureParams>
|
|
74
|
+
extends ProcedureBase<TParams> {
|
|
75
|
+
_query: true;
|
|
76
|
+
query(...args: ProcedureArgs<TParams>): Promise<TParams['_output_out']>;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface MutationProcedure<TParams extends ProcedureParams>
|
|
80
|
+
extends ProcedureBase<TParams> {
|
|
81
|
+
_mutation: true;
|
|
82
|
+
mutate(...args: ProcedureArgs<TParams>): Promise<TParams['_output_out']>;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export interface SubscriptionProcedure<TParams extends ProcedureParams>
|
|
86
|
+
extends ProcedureBase<TParams> {
|
|
87
|
+
_subscription: true;
|
|
88
|
+
subscription(
|
|
89
|
+
...args: ProcedureArgs<TParams>
|
|
90
|
+
): Promise<TParams['_output_out']>;
|
|
91
|
+
}
|
|
92
|
+
export type Procedure<TParams extends ProcedureParams> =
|
|
93
|
+
| QueryProcedure<TParams>
|
|
94
|
+
| MutationProcedure<TParams>
|
|
95
|
+
| SubscriptionProcedure<TParams>;
|