@trpc/server 11.0.0-next-alpha.152 → 11.0.0-next-alpha.154
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 +1 -1
- package/dist/adapters/aws-lambda/index.d.ts.map +1 -1
- package/dist/adapters/aws-lambda/index.js +6 -13
- package/dist/adapters/aws-lambda/index.mjs +2 -9
- package/dist/adapters/aws-lambda/utils.d.ts +2 -3
- package/dist/adapters/aws-lambda/utils.d.ts.map +1 -1
- package/dist/adapters/express.d.ts +1 -1
- package/dist/adapters/express.d.ts.map +1 -1
- package/dist/adapters/express.js +3 -11
- package/dist/adapters/express.mjs +3 -11
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts +1 -1
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
- package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +1 -1
- package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -1
- package/dist/adapters/fastify/index.js +6 -14
- package/dist/adapters/fastify/index.mjs +4 -12
- package/dist/adapters/fetch/fetchRequestHandler.d.ts +1 -1
- package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -1
- package/dist/adapters/fetch/index.js +3 -12
- package/dist/adapters/fetch/index.mjs +1 -10
- package/dist/adapters/fetch/types.d.ts +1 -1
- package/dist/adapters/next.d.ts +3 -2
- package/dist/adapters/next.d.ts.map +1 -1
- package/dist/adapters/next.js +5 -13
- package/dist/adapters/next.mjs +3 -11
- package/dist/adapters/node-http/content-type/json/getPostBody.d.ts +1 -1
- package/dist/adapters/node-http/content-type/json/getPostBody.d.ts.map +1 -1
- package/dist/adapters/node-http/content-type/json/index.js +4 -5
- package/dist/adapters/node-http/content-type/json/index.mjs +2 -3
- package/dist/adapters/node-http/index.js +3 -11
- package/dist/adapters/node-http/index.mjs +3 -11
- package/dist/adapters/node-http/internals/contentType.d.ts +2 -2
- package/dist/adapters/node-http/internals/contentType.d.ts.map +1 -1
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +1 -1
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
- package/dist/adapters/node-http/types.d.ts +1 -2
- package/dist/adapters/node-http/types.d.ts.map +1 -1
- package/dist/adapters/standalone.d.ts +1 -1
- package/dist/adapters/standalone.d.ts.map +1 -1
- package/dist/adapters/standalone.js +3 -11
- package/dist/adapters/standalone.mjs +3 -11
- package/dist/adapters/ws.d.ts +3 -3
- package/dist/adapters/ws.d.ts.map +1 -1
- package/dist/adapters/ws.js +25 -31
- package/dist/adapters/ws.mjs +3 -9
- package/dist/bundle-analysis.json +74 -604
- package/dist/http.d.ts +2 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +14 -0
- package/dist/http.mjs +1 -0
- package/dist/index.d.ts +15 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -95
- package/dist/index.mjs +1 -90
- package/dist/{nodeHTTPRequestHandler-a7049e69.js → nodeHTTPRequestHandler-30028c9a.js} +3 -5
- package/dist/{nodeHTTPRequestHandler-ca65b7c9.mjs → nodeHTTPRequestHandler-36974696.mjs} +1 -3
- package/dist/{nodeHTTPRequestHandler-abbfb330.js → nodeHTTPRequestHandler-640c1f60.js} +1 -3
- package/dist/observable.d.ts +2 -0
- package/dist/observable.d.ts.map +1 -0
- package/dist/observable.js +14 -0
- package/dist/observable.mjs +1 -0
- package/dist/rpc.d.ts +2 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/rpc.js +14 -0
- package/dist/rpc.mjs +1 -0
- package/dist/unstableDoNotImportThis.d.ts +9 -0
- package/dist/unstableDoNotImportThis.d.ts.map +1 -0
- package/package.json +32 -41
- package/src/adapters/aws-lambda/index.ts +2 -3
- package/src/adapters/aws-lambda/utils.ts +3 -4
- package/src/adapters/express.ts +1 -1
- package/src/adapters/fastify/fastifyRequestHandler.ts +4 -3
- package/src/adapters/fastify/fastifyTRPCPlugin.ts +1 -1
- package/src/adapters/fetch/fetchRequestHandler.ts +4 -3
- package/src/adapters/fetch/types.ts +1 -1
- package/src/adapters/next.ts +3 -8
- package/src/adapters/node-http/content-type/form-data/index.ts +1 -1
- package/src/adapters/node-http/content-type/json/getPostBody.ts +2 -2
- package/src/adapters/node-http/content-type/json/index.ts +1 -1
- package/src/adapters/node-http/internals/contentType.ts +2 -2
- package/src/adapters/node-http/nodeHTTPRequestHandler.ts +4 -3
- package/src/adapters/node-http/types.ts +1 -2
- package/src/adapters/standalone.ts +1 -1
- package/src/adapters/ws.ts +14 -9
- package/src/http.ts +2 -0
- package/src/index.ts +30 -14
- package/src/observable.ts +1 -0
- package/src/rpc.ts +2 -0
- package/src/unstableDoNotImportThis.ts +9 -0
- package/dist/TRPCError-0b220715.js +0 -42
- package/dist/TRPCError-2bb6a7d0.js +0 -37
- package/dist/TRPCError-7e8e2a1b.mjs +0 -39
- package/dist/batchStreamFormatter-2c1405a1.js +0 -31
- package/dist/batchStreamFormatter-93cdcdd4.js +0 -32
- package/dist/batchStreamFormatter-fc1ffb26.mjs +0 -30
- package/dist/codes-62b059d2.js +0 -48
- package/dist/codes-87f6824b.js +0 -48
- package/dist/codes-c924c3db.mjs +0 -44
- package/dist/config-50853f49.mjs +0 -6
- package/dist/config-774dae36.js +0 -8
- package/dist/config-e3dd843b.js +0 -11
- package/dist/contentType-0447b256.js +0 -58
- package/dist/contentType-31223e57.mjs +0 -52
- package/dist/contentType-a229790b.js +0 -54
- package/dist/core/index.d.ts +0 -9
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/initTRPC.d.ts +0 -84
- package/dist/core/initTRPC.d.ts.map +0 -1
- package/dist/core/internals/config.d.ts +0 -75
- package/dist/core/internals/config.d.ts.map +0 -1
- package/dist/core/internals/getParseFn.d.ts +0 -4
- package/dist/core/internals/getParseFn.d.ts.map +0 -1
- package/dist/core/internals/mergeRouters.d.ts +0 -15
- package/dist/core/internals/mergeRouters.d.ts.map +0 -1
- package/dist/core/internals/mergeWithoutOverrides.d.ts +0 -5
- package/dist/core/internals/mergeWithoutOverrides.d.ts.map +0 -1
- package/dist/core/internals/omitPrototype.d.ts +0 -6
- package/dist/core/internals/omitPrototype.d.ts.map +0 -1
- package/dist/core/internals/procedureBuilder.d.ts +0 -99
- package/dist/core/internals/procedureBuilder.d.ts.map +0 -1
- package/dist/core/internals/utils.d.ts +0 -50
- package/dist/core/internals/utils.d.ts.map +0 -1
- package/dist/core/middleware.d.ts +0 -106
- package/dist/core/middleware.d.ts.map +0 -1
- package/dist/core/parser.d.ts +0 -28
- package/dist/core/parser.d.ts.map +0 -1
- package/dist/core/procedure.d.ts +0 -54
- package/dist/core/procedure.d.ts.map +0 -1
- package/dist/core/router.d.ts +0 -64
- package/dist/core/router.d.ts.map +0 -1
- package/dist/core/types.d.ts +0 -24
- package/dist/core/types.d.ts.map +0 -1
- package/dist/error/TRPCError.d.ts +0 -12
- package/dist/error/TRPCError.d.ts.map +0 -1
- package/dist/error/formatter.d.ts +0 -33
- package/dist/error/formatter.d.ts.map +0 -1
- package/dist/error/utils.d.ts +0 -9
- package/dist/error/utils.d.ts.map +0 -1
- package/dist/getCauseFromUnknown-2d66414a.mjs +0 -33
- package/dist/getCauseFromUnknown-ac5f46a2.js +0 -34
- package/dist/getCauseFromUnknown-d535264a.js +0 -35
- package/dist/http/batchStreamFormatter.d.ts +0 -24
- package/dist/http/batchStreamFormatter.d.ts.map +0 -1
- package/dist/http/contentType.d.ts +0 -29
- package/dist/http/contentType.d.ts.map +0 -1
- package/dist/http/getHTTPStatusCode.d.ts +0 -24
- package/dist/http/getHTTPStatusCode.d.ts.map +0 -1
- package/dist/http/index.d.ts +0 -5
- package/dist/http/index.d.ts.map +0 -1
- package/dist/http/index.js +0 -22
- package/dist/http/index.mjs +0 -10
- package/dist/http/internals/types.d.ts +0 -32
- package/dist/http/internals/types.d.ts.map +0 -1
- package/dist/http/resolveHTTPResponse.d.ts +0 -52
- package/dist/http/resolveHTTPResponse.d.ts.map +0 -1
- package/dist/http/types.d.ts +0 -46
- package/dist/http/types.d.ts.map +0 -1
- package/dist/index-8759c3db.js +0 -48
- package/dist/index-a496f86b.js +0 -52
- package/dist/index-a9e3e610.mjs +0 -49
- package/dist/internals/invert.d.ts +0 -12
- package/dist/internals/invert.d.ts.map +0 -1
- package/dist/internals/types.d.ts +0 -26
- package/dist/internals/types.d.ts.map +0 -1
- package/dist/observable/index.d.ts +0 -5
- package/dist/observable/index.d.ts.map +0 -1
- package/dist/observable/index.js +0 -156
- package/dist/observable/index.mjs +0 -147
- package/dist/observable/internals/identity.d.ts +0 -2
- package/dist/observable/internals/identity.d.ts.map +0 -1
- package/dist/observable/internals/observableToPromise.d.ts +0 -10
- package/dist/observable/internals/observableToPromise.d.ts.map +0 -1
- package/dist/observable/internals/pipe.d.ts +0 -4
- package/dist/observable/internals/pipe.d.ts.map +0 -1
- package/dist/observable/observable.d.ts +0 -5
- package/dist/observable/observable.d.ts.map +0 -1
- package/dist/observable/operators/index.d.ts +0 -4
- package/dist/observable/operators/index.d.ts.map +0 -1
- package/dist/observable/operators/map.d.ts +0 -3
- package/dist/observable/operators/map.d.ts.map +0 -1
- package/dist/observable/operators/share.d.ts +0 -6
- package/dist/observable/operators/share.d.ts.map +0 -1
- package/dist/observable/operators/tap.d.ts +0 -3
- package/dist/observable/operators/tap.d.ts.map +0 -1
- package/dist/observable/types.d.ts +0 -29
- package/dist/observable/types.d.ts.map +0 -1
- package/dist/observable-15588f28.js +0 -83
- package/dist/observable-464116ac.js +0 -84
- package/dist/observable-ade1bad8.mjs +0 -81
- package/dist/parseTRPCMessage-1377f305.js +0 -56
- package/dist/parseTRPCMessage-95955211.js +0 -63
- package/dist/parseTRPCMessage-a0f17853.mjs +0 -54
- package/dist/procedureBuilder-0446e596.js +0 -327
- package/dist/procedureBuilder-4b68e226.js +0 -349
- package/dist/procedureBuilder-cf58dadb.mjs +0 -340
- package/dist/resolveHTTPResponse-3ebaa4f6.mjs +0 -292
- package/dist/resolveHTTPResponse-7c84e387.js +0 -294
- package/dist/resolveHTTPResponse-fa37ffd7.js +0 -266
- package/dist/router-18d63731.js +0 -163
- package/dist/router-8dcebd61.js +0 -153
- package/dist/router-f9ce121f.mjs +0 -156
- package/dist/rpc/codes.d.ts +0 -51
- package/dist/rpc/codes.d.ts.map +0 -1
- package/dist/rpc/envelopes.d.ts +0 -95
- package/dist/rpc/envelopes.d.ts.map +0 -1
- package/dist/rpc/index.d.ts +0 -4
- package/dist/rpc/index.d.ts.map +0 -1
- package/dist/rpc/index.js +0 -12
- package/dist/rpc/index.mjs +0 -2
- package/dist/rpc/parseTRPCMessage.d.ts +0 -5
- package/dist/rpc/parseTRPCMessage.d.ts.map +0 -1
- package/dist/shared/createProxy/index.d.ts +0 -19
- package/dist/shared/createProxy/index.d.ts.map +0 -1
- package/dist/shared/getCauseFromUnknown.d.ts +0 -2
- package/dist/shared/getCauseFromUnknown.d.ts.map +0 -1
- package/dist/shared/getErrorShape.d.ts +0 -15
- package/dist/shared/getErrorShape.d.ts.map +0 -1
- package/dist/shared/index.d.ts +0 -8
- package/dist/shared/index.d.ts.map +0 -1
- package/dist/shared/index.js +0 -16
- package/dist/shared/index.mjs +0 -4
- package/dist/shared/internal/serialize.d.ts +0 -62
- package/dist/shared/internal/serialize.d.ts.map +0 -1
- package/dist/shared/jsonify.d.ts +0 -11
- package/dist/shared/jsonify.d.ts.map +0 -1
- package/dist/shared/transformTRPCResponse.d.ts +0 -9
- package/dist/shared/transformTRPCResponse.d.ts.map +0 -1
- package/dist/shared/types.d.ts +0 -6
- package/dist/shared/types.d.ts.map +0 -1
- package/dist/transformTRPCResponse-31040a38.mjs +0 -98
- package/dist/transformTRPCResponse-59486a84.js +0 -97
- package/dist/transformTRPCResponse-9f3b865f.js +0 -104
- package/dist/transformer.d.ts +0 -67
- package/dist/transformer.d.ts.map +0 -1
- package/dist/types.d.ts +0 -68
- package/dist/types.d.ts.map +0 -1
- package/dist/unstableInternalsExport.d.ts +0 -12
- package/dist/unstableInternalsExport.d.ts.map +0 -1
- package/dist/unstableInternalsExport.js +0 -16
- package/dist/unstableInternalsExport.mjs +0 -5
- package/src/core/index.ts +0 -28
- package/src/core/initTRPC.ts +0 -186
- package/src/core/internals/config.ts +0 -90
- package/src/core/internals/getParseFn.ts +0 -43
- package/src/core/internals/mergeRouters.ts +0 -90
- package/src/core/internals/mergeWithoutOverrides.ts +0 -19
- package/src/core/internals/omitPrototype.ts +0 -9
- package/src/core/internals/procedureBuilder.ts +0 -455
- package/src/core/internals/utils.ts +0 -79
- package/src/core/middleware.ts +0 -236
- package/src/core/parser.ts +0 -52
- package/src/core/procedure.ts +0 -68
- package/src/core/router.ts +0 -241
- package/src/core/types.ts +0 -67
- package/src/error/TRPCError.ts +0 -52
- package/src/error/formatter.ts +0 -54
- package/src/error/utils.ts +0 -23
- package/src/http/batchStreamFormatter.ts +0 -29
- package/src/http/contentType.ts +0 -99
- package/src/http/getHTTPStatusCode.ts +0 -61
- package/src/http/index.ts +0 -4
- package/src/http/internals/types.ts +0 -40
- package/src/http/resolveHTTPResponse.ts +0 -458
- package/src/http/types.ts +0 -51
- package/src/internals/invert.ts +0 -21
- package/src/internals/types.ts +0 -27
- package/src/observable/index.ts +0 -4
- package/src/observable/internals/identity.ts +0 -3
- package/src/observable/internals/observableToPromise.ts +0 -49
- package/src/observable/internals/pipe.ts +0 -23
- package/src/observable/observable.ts +0 -78
- package/src/observable/operators/index.ts +0 -3
- package/src/observable/operators/map.ts +0 -25
- package/src/observable/operators/share.ts +0 -65
- package/src/observable/operators/tap.ts +0 -26
- package/src/observable/types.ts +0 -80
- package/src/rpc/codes.ts +0 -44
- package/src/rpc/envelopes.ts +0 -136
- package/src/rpc/index.ts +0 -3
- package/src/rpc/parseTRPCMessage.ts +0 -84
- package/src/shared/createProxy/index.ts +0 -59
- package/src/shared/getCauseFromUnknown.ts +0 -31
- package/src/shared/getErrorShape.ts +0 -36
- package/src/shared/index.ts +0 -11
- package/src/shared/internal/serialize.ts +0 -122
- package/src/shared/jsonify.ts +0 -22
- package/src/shared/transformTRPCResponse.ts +0 -40
- package/src/shared/types.ts +0 -9
- package/src/transformer.ts +0 -84
- package/src/types.ts +0 -104
- package/src/unstableInternalsExport.ts +0 -12
- package/subscription/index.d.ts +0 -1
- package/subscription/index.js +0 -1
- package/unstableInternalsExport/index.d.ts +0 -1
- package/unstableInternalsExport/index.js +0 -1
package/src/core/middleware.ts
DELETED
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
import { TRPCError } from '../error/TRPCError';
|
|
2
|
-
import { Simplify } from '../types';
|
|
3
|
-
import { ParseFn } from './internals/getParseFn';
|
|
4
|
-
import { GetRawInputFn, MiddlewareMarker, Overwrite } from './internals/utils';
|
|
5
|
-
import { ProcedureType } from './types';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @internal
|
|
9
|
-
*/
|
|
10
|
-
interface MiddlewareResultBase {
|
|
11
|
-
/**
|
|
12
|
-
* All middlewares should pass through their `next()`'s output.
|
|
13
|
-
* Requiring this marker makes sure that can't be forgotten at compile-time.
|
|
14
|
-
*/
|
|
15
|
-
readonly marker: MiddlewareMarker;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* @internal
|
|
20
|
-
*/
|
|
21
|
-
interface MiddlewareOKResult<_TContextOverride> extends MiddlewareResultBase {
|
|
22
|
-
ok: true;
|
|
23
|
-
data: unknown;
|
|
24
|
-
// this could be extended with `input`/`rawInput` later
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* @internal
|
|
29
|
-
*/
|
|
30
|
-
interface MiddlewareErrorResult<_TContextOverride>
|
|
31
|
-
extends MiddlewareResultBase {
|
|
32
|
-
ok: false;
|
|
33
|
-
error: TRPCError;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* @internal
|
|
38
|
-
*/
|
|
39
|
-
export type MiddlewareResult<_TContextOverride> =
|
|
40
|
-
| MiddlewareErrorResult<_TContextOverride>
|
|
41
|
-
| MiddlewareOKResult<_TContextOverride>;
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* @internal
|
|
45
|
-
*/
|
|
46
|
-
export interface MiddlewareBuilder<
|
|
47
|
-
TContext,
|
|
48
|
-
TMeta,
|
|
49
|
-
TContextOverrides,
|
|
50
|
-
TInputIn,
|
|
51
|
-
> {
|
|
52
|
-
/**
|
|
53
|
-
* Create a new builder based on the current middleware builder
|
|
54
|
-
*/
|
|
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
|
|
75
|
-
>;
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* List of middlewares within this middleware builder
|
|
79
|
-
*/
|
|
80
|
-
_middlewares: MiddlewareFunction<
|
|
81
|
-
TContext,
|
|
82
|
-
TMeta,
|
|
83
|
-
TContextOverrides,
|
|
84
|
-
object,
|
|
85
|
-
TInputIn
|
|
86
|
-
>[];
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* @internal
|
|
91
|
-
*/
|
|
92
|
-
export type MiddlewareFunction<
|
|
93
|
-
TContext,
|
|
94
|
-
TMeta,
|
|
95
|
-
TContextOverridesIn,
|
|
96
|
-
$ContextOverridesOut,
|
|
97
|
-
TInputIn,
|
|
98
|
-
> = {
|
|
99
|
-
(opts: {
|
|
100
|
-
ctx: Simplify<Overwrite<TContext, TContextOverridesIn>>;
|
|
101
|
-
type: ProcedureType;
|
|
102
|
-
path: string;
|
|
103
|
-
input: TInputIn;
|
|
104
|
-
getRawInput: GetRawInputFn;
|
|
105
|
-
meta: TMeta | undefined;
|
|
106
|
-
next: {
|
|
107
|
-
(): Promise<MiddlewareResult<TContextOverridesIn>>;
|
|
108
|
-
<$ContextOverride>(opts: {
|
|
109
|
-
ctx?: $ContextOverride;
|
|
110
|
-
input?: unknown;
|
|
111
|
-
}): Promise<MiddlewareResult<$ContextOverride>>;
|
|
112
|
-
(opts: { getRawInput: GetRawInputFn }): Promise<
|
|
113
|
-
MiddlewareResult<TContextOverridesIn>
|
|
114
|
-
>;
|
|
115
|
-
};
|
|
116
|
-
}): Promise<MiddlewareResult<$ContextOverridesOut>>;
|
|
117
|
-
_type?: string | undefined;
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
export type AnyMiddlewareFunction = MiddlewareFunction<any, any, any, any, any>;
|
|
121
|
-
export type AnyMiddlewareBuilder = MiddlewareBuilder<any, any, any, any>;
|
|
122
|
-
/**
|
|
123
|
-
* @internal
|
|
124
|
-
*/
|
|
125
|
-
export function createMiddlewareFactory<TContext, TMeta, TInputIn = unknown>() {
|
|
126
|
-
function createMiddlewareInner(
|
|
127
|
-
middlewares: AnyMiddlewareFunction[],
|
|
128
|
-
): AnyMiddlewareBuilder {
|
|
129
|
-
return {
|
|
130
|
-
_middlewares: middlewares,
|
|
131
|
-
unstable_pipe(middlewareBuilderOrFn) {
|
|
132
|
-
const pipedMiddleware =
|
|
133
|
-
'_middlewares' in middlewareBuilderOrFn
|
|
134
|
-
? middlewareBuilderOrFn._middlewares
|
|
135
|
-
: [middlewareBuilderOrFn];
|
|
136
|
-
|
|
137
|
-
return createMiddlewareInner([...middlewares, ...pipedMiddleware]);
|
|
138
|
-
},
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
function createMiddleware<$ContextOverrides>(
|
|
143
|
-
fn: MiddlewareFunction<
|
|
144
|
-
TContext,
|
|
145
|
-
TMeta,
|
|
146
|
-
object,
|
|
147
|
-
$ContextOverrides,
|
|
148
|
-
TInputIn
|
|
149
|
-
>,
|
|
150
|
-
): MiddlewareBuilder<TContext, TMeta, $ContextOverrides, TInputIn> {
|
|
151
|
-
return createMiddlewareInner([fn]);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
return createMiddleware;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
export const experimental_standaloneMiddleware = <
|
|
158
|
-
TCtx extends {
|
|
159
|
-
ctx?: object;
|
|
160
|
-
meta?: object;
|
|
161
|
-
input?: unknown;
|
|
162
|
-
},
|
|
163
|
-
>() => ({
|
|
164
|
-
create: createMiddlewareFactory<
|
|
165
|
-
TCtx extends { ctx: infer T extends object } ? T : any,
|
|
166
|
-
TCtx extends { meta: infer T extends object } ? T : object,
|
|
167
|
-
TCtx extends { input: infer T } ? T : unknown
|
|
168
|
-
>(),
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
function isPlainObject(obj: unknown) {
|
|
172
|
-
return obj && typeof obj === 'object' && !Array.isArray(obj);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* @internal
|
|
177
|
-
* Please note, `trpc-openapi` uses this function.
|
|
178
|
-
*/
|
|
179
|
-
export function createInputMiddleware<TInput>(parse: ParseFn<TInput>) {
|
|
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
|
-
};
|
|
205
|
-
inputMiddleware._type = 'input';
|
|
206
|
-
return inputMiddleware;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* @internal
|
|
211
|
-
*/
|
|
212
|
-
export function createOutputMiddleware<TOutput>(parse: ParseFn<TOutput>) {
|
|
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
|
-
};
|
|
234
|
-
outputMiddleware._type = 'output';
|
|
235
|
-
return outputMiddleware;
|
|
236
|
-
}
|
package/src/core/parser.ts
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
// zod / @decs/typeschema
|
|
2
|
-
export type ParserZodEsque<TInput, TParsedInput> = {
|
|
3
|
-
_input: TInput;
|
|
4
|
-
_output: TParsedInput;
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
export type ParserMyZodEsque<TInput> = {
|
|
8
|
-
parse: (input: any) => TInput;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export type ParserSuperstructEsque<TInput> = {
|
|
12
|
-
create: (input: unknown) => TInput;
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
export type ParserCustomValidatorEsque<TInput> = (
|
|
16
|
-
input: unknown,
|
|
17
|
-
) => Promise<TInput> | TInput;
|
|
18
|
-
|
|
19
|
-
export type ParserYupEsque<TInput> = {
|
|
20
|
-
validateSync: (input: unknown) => TInput;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
export type ParserScaleEsque<TInput> = {
|
|
24
|
-
assert(value: unknown): asserts value is TInput;
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
export type ParserWithoutInput<TInput> =
|
|
28
|
-
| ParserCustomValidatorEsque<TInput>
|
|
29
|
-
| ParserMyZodEsque<TInput>
|
|
30
|
-
| ParserScaleEsque<TInput>
|
|
31
|
-
| ParserSuperstructEsque<TInput>
|
|
32
|
-
| ParserYupEsque<TInput>;
|
|
33
|
-
|
|
34
|
-
export type ParserWithInputOutput<TInput, TParsedInput> = ParserZodEsque<
|
|
35
|
-
TInput,
|
|
36
|
-
TParsedInput
|
|
37
|
-
>;
|
|
38
|
-
|
|
39
|
-
export type Parser = ParserWithInputOutput<any, any> | ParserWithoutInput<any>;
|
|
40
|
-
|
|
41
|
-
export type inferParser<TParser extends Parser> =
|
|
42
|
-
TParser extends ParserWithInputOutput<infer $TIn, infer $TOut>
|
|
43
|
-
? {
|
|
44
|
-
in: $TIn;
|
|
45
|
-
out: $TOut;
|
|
46
|
-
}
|
|
47
|
-
: TParser extends ParserWithoutInput<infer $InOut>
|
|
48
|
-
? {
|
|
49
|
-
in: $InOut;
|
|
50
|
-
out: $InOut;
|
|
51
|
-
}
|
|
52
|
-
: never;
|
package/src/core/procedure.ts
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { ProcedureCallOptions } from './internals/procedureBuilder';
|
|
2
|
-
import { ProcedureType } from './types';
|
|
3
|
-
|
|
4
|
-
type ClientContext = Record<string, unknown>;
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @internal
|
|
8
|
-
*/
|
|
9
|
-
export interface ProcedureOptions {
|
|
10
|
-
/**
|
|
11
|
-
* Client-side context
|
|
12
|
-
*/
|
|
13
|
-
context?: ClientContext;
|
|
14
|
-
signal?: AbortSignal;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* @internal
|
|
19
|
-
*/
|
|
20
|
-
export type ProcedureArgs<TParams extends AnyProcedure['_def']> =
|
|
21
|
-
void extends TParams['_input_in']
|
|
22
|
-
? [input?: undefined | void, opts?: ProcedureOptions]
|
|
23
|
-
: undefined extends TParams['_input_in']
|
|
24
|
-
? [input?: TParams['_input_in'] | void, opts?: ProcedureOptions]
|
|
25
|
-
: [input: TParams['_input_in'], opts?: ProcedureOptions];
|
|
26
|
-
|
|
27
|
-
interface BuiltProcedureDef {
|
|
28
|
-
input: unknown;
|
|
29
|
-
output: unknown;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
*
|
|
33
|
-
* @internal
|
|
34
|
-
*/
|
|
35
|
-
export interface Procedure<
|
|
36
|
-
TType extends ProcedureType,
|
|
37
|
-
TDef extends BuiltProcedureDef,
|
|
38
|
-
> {
|
|
39
|
-
_def: {
|
|
40
|
-
_input_in: TDef['input'];
|
|
41
|
-
_output_out: TDef['output'];
|
|
42
|
-
procedure: true;
|
|
43
|
-
type: TType;
|
|
44
|
-
/**
|
|
45
|
-
* @internal
|
|
46
|
-
* Meta is not inferrable on individual procedures, only on the router
|
|
47
|
-
*/
|
|
48
|
-
meta: unknown;
|
|
49
|
-
};
|
|
50
|
-
/**
|
|
51
|
-
* @internal
|
|
52
|
-
*/
|
|
53
|
-
(opts: ProcedureCallOptions): Promise<unknown>;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export interface QueryProcedure<TDef extends BuiltProcedureDef>
|
|
57
|
-
extends Procedure<'query', TDef> {}
|
|
58
|
-
|
|
59
|
-
export interface MutationProcedure<TDef extends BuiltProcedureDef>
|
|
60
|
-
extends Procedure<'mutation', TDef> {}
|
|
61
|
-
|
|
62
|
-
export interface SubscriptionProcedure<TDef extends BuiltProcedureDef>
|
|
63
|
-
extends Procedure<'subscription', TDef> {}
|
|
64
|
-
|
|
65
|
-
export type AnyQueryProcedure = QueryProcedure<any>;
|
|
66
|
-
export type AnyMutationProcedure = MutationProcedure<any>;
|
|
67
|
-
export type AnySubscriptionProcedure = SubscriptionProcedure<any>;
|
|
68
|
-
export type AnyProcedure = Procedure<ProcedureType, any>;
|
package/src/core/router.ts
DELETED
|
@@ -1,241 +0,0 @@
|
|
|
1
|
-
import { defaultFormatter } from '../error/formatter';
|
|
2
|
-
import { TRPCError } from '../error/TRPCError';
|
|
3
|
-
import { createRecursiveProxy } from '../shared/createProxy';
|
|
4
|
-
import { defaultTransformer } from '../transformer';
|
|
5
|
-
import { MaybePromise } from '../types';
|
|
6
|
-
import { AnyRootConfig } from './internals/config';
|
|
7
|
-
import { omitPrototype } from './internals/omitPrototype';
|
|
8
|
-
import { ProcedureCallOptions } from './internals/procedureBuilder';
|
|
9
|
-
import { AnyProcedure, ProcedureArgs } from './procedure';
|
|
10
|
-
|
|
11
|
-
/** @internal **/
|
|
12
|
-
export type ProcedureRecord = Record<string, AnyProcedure>;
|
|
13
|
-
|
|
14
|
-
export interface ProcedureRouterRecord {
|
|
15
|
-
[key: string]: AnyProcedure | AnyRouter;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export interface RouterDef<
|
|
19
|
-
TConfig extends AnyRootConfig,
|
|
20
|
-
TRecord extends ProcedureRouterRecord,
|
|
21
|
-
> {
|
|
22
|
-
_config: TConfig;
|
|
23
|
-
router: true;
|
|
24
|
-
procedure?: never;
|
|
25
|
-
procedures: TRecord;
|
|
26
|
-
record: TRecord;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export type AnyRouterDef<TConfig extends AnyRootConfig = AnyRootConfig> =
|
|
30
|
-
RouterDef<TConfig, any>;
|
|
31
|
-
|
|
32
|
-
type DecorateProcedure<TProcedure extends AnyProcedure> = (
|
|
33
|
-
input: ProcedureArgs<TProcedure['_def']>[0],
|
|
34
|
-
) => Promise<TProcedure['_def']['_output_out']>;
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* @internal
|
|
38
|
-
*/
|
|
39
|
-
type DecoratedProcedureRecord<TProcedures extends ProcedureRouterRecord> = {
|
|
40
|
-
[TKey in keyof TProcedures]: TProcedures[TKey] extends AnyRouter
|
|
41
|
-
? DecoratedProcedureRecord<TProcedures[TKey]['_def']['record']>
|
|
42
|
-
: TProcedures[TKey] extends AnyProcedure
|
|
43
|
-
? DecorateProcedure<TProcedures[TKey]>
|
|
44
|
-
: never;
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* @internal
|
|
49
|
-
*/
|
|
50
|
-
export type RouterCaller<TDef extends AnyRouterDef> = (
|
|
51
|
-
/**
|
|
52
|
-
* @note
|
|
53
|
-
* If passing a function, we recommend it's a cached function
|
|
54
|
-
* e.g. wrapped in `React.cache` to avoid unnecessary computations
|
|
55
|
-
*/
|
|
56
|
-
ctx:
|
|
57
|
-
| TDef['_config']['$types']['ctx']
|
|
58
|
-
| (() => MaybePromise<TDef['_config']['$types']['ctx']>),
|
|
59
|
-
) => DecoratedProcedureRecord<TDef['record']>;
|
|
60
|
-
|
|
61
|
-
export interface Router<TDef extends AnyRouterDef> {
|
|
62
|
-
_def: TDef;
|
|
63
|
-
/**
|
|
64
|
-
* @deprecated use `t.createCallerFactory(router)` instead
|
|
65
|
-
* @see https://trpc.io/docs/server/server-side-calls
|
|
66
|
-
*/
|
|
67
|
-
createCaller: RouterCaller<TDef>;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export type AnyRouter = Router<AnyRouterDef>;
|
|
71
|
-
|
|
72
|
-
function isRouter(
|
|
73
|
-
procedureOrRouter: AnyProcedure | AnyRouter,
|
|
74
|
-
): procedureOrRouter is AnyRouter {
|
|
75
|
-
return 'router' in procedureOrRouter._def;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const emptyRouter = {
|
|
79
|
-
_ctx: null as any,
|
|
80
|
-
_errorShape: null as any,
|
|
81
|
-
_meta: null as any,
|
|
82
|
-
queries: {},
|
|
83
|
-
mutations: {},
|
|
84
|
-
subscriptions: {},
|
|
85
|
-
errorFormatter: defaultFormatter,
|
|
86
|
-
transformer: defaultTransformer,
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Reserved words that can't be used as router or procedure names
|
|
91
|
-
*/
|
|
92
|
-
const reservedWords = [
|
|
93
|
-
/**
|
|
94
|
-
* Then is a reserved word because otherwise we can't return a promise that returns a Proxy
|
|
95
|
-
* since JS will think that `.then` is something that exists
|
|
96
|
-
*/
|
|
97
|
-
'then',
|
|
98
|
-
];
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* @internal
|
|
102
|
-
*/
|
|
103
|
-
export type CreateRouterInner<
|
|
104
|
-
TConfig extends AnyRootConfig,
|
|
105
|
-
TProcRouterRecord extends ProcedureRouterRecord,
|
|
106
|
-
> = Router<RouterDef<TConfig, TProcRouterRecord>> &
|
|
107
|
-
/**
|
|
108
|
-
* This adds ability to call procedures directly but is primarily used for quick access in type inference
|
|
109
|
-
*/
|
|
110
|
-
TProcRouterRecord;
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* @internal
|
|
114
|
-
*/
|
|
115
|
-
export function createRouterFactory<TConfig extends AnyRootConfig>(
|
|
116
|
-
config: TConfig,
|
|
117
|
-
) {
|
|
118
|
-
return function createRouterInner<
|
|
119
|
-
TProcRouterRecord extends ProcedureRouterRecord,
|
|
120
|
-
>(
|
|
121
|
-
procedures: TProcRouterRecord,
|
|
122
|
-
): CreateRouterInner<TConfig, TProcRouterRecord> {
|
|
123
|
-
const reservedWordsUsed = new Set(
|
|
124
|
-
Object.keys(procedures).filter((v) => reservedWords.includes(v)),
|
|
125
|
-
);
|
|
126
|
-
if (reservedWordsUsed.size > 0) {
|
|
127
|
-
throw new Error(
|
|
128
|
-
'Reserved words used in `router({})` call: ' +
|
|
129
|
-
Array.from(reservedWordsUsed).join(', '),
|
|
130
|
-
);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
const routerProcedures: ProcedureRecord = omitPrototype({});
|
|
134
|
-
function recursiveGetPaths(procedures: ProcedureRouterRecord, path = '') {
|
|
135
|
-
for (const [key, procedureOrRouter] of Object.entries(procedures ?? {})) {
|
|
136
|
-
const newPath = `${path}${key}`;
|
|
137
|
-
|
|
138
|
-
if (isRouter(procedureOrRouter)) {
|
|
139
|
-
recursiveGetPaths(procedureOrRouter._def.procedures, `${newPath}.`);
|
|
140
|
-
continue;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
if (routerProcedures[newPath]) {
|
|
144
|
-
throw new Error(`Duplicate key: ${newPath}`);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
routerProcedures[newPath] = procedureOrRouter;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
recursiveGetPaths(procedures);
|
|
151
|
-
|
|
152
|
-
const _def: AnyRouterDef<TConfig> = {
|
|
153
|
-
_config: config,
|
|
154
|
-
router: true,
|
|
155
|
-
procedures: routerProcedures,
|
|
156
|
-
...emptyRouter,
|
|
157
|
-
record: procedures,
|
|
158
|
-
};
|
|
159
|
-
|
|
160
|
-
const router: AnyRouter = {
|
|
161
|
-
...procedures,
|
|
162
|
-
_def,
|
|
163
|
-
createCaller(ctx) {
|
|
164
|
-
const proxy = createRecursiveProxy(({ path, args }) => {
|
|
165
|
-
const fullPath = path.join('.');
|
|
166
|
-
const procedure = _def.procedures[fullPath] as AnyProcedure;
|
|
167
|
-
|
|
168
|
-
return procedure({
|
|
169
|
-
path: fullPath,
|
|
170
|
-
getRawInput: async () => args[0],
|
|
171
|
-
ctx,
|
|
172
|
-
type: procedure._def.type,
|
|
173
|
-
});
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
return proxy as ReturnType<RouterCaller<any>>;
|
|
177
|
-
},
|
|
178
|
-
};
|
|
179
|
-
|
|
180
|
-
return router as any;
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
function isProcedure(
|
|
185
|
-
procedureOrRouter: AnyProcedure | AnyRouter,
|
|
186
|
-
): procedureOrRouter is AnyProcedure {
|
|
187
|
-
return !!procedureOrRouter._def.procedure;
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* @internal
|
|
191
|
-
*/
|
|
192
|
-
export function callProcedure(
|
|
193
|
-
opts: ProcedureCallOptions & { procedures: ProcedureRouterRecord },
|
|
194
|
-
) {
|
|
195
|
-
const { type, path } = opts;
|
|
196
|
-
const proc = opts.procedures[path];
|
|
197
|
-
if (!proc || !isProcedure(proc) || proc._def.type !== type) {
|
|
198
|
-
throw new TRPCError({
|
|
199
|
-
code: 'NOT_FOUND',
|
|
200
|
-
message: `No "${type}"-procedure on path "${path}"`,
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
return proc(opts);
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
export function createCallerFactory<TConfig extends AnyRootConfig>() {
|
|
208
|
-
return function createCallerInner<
|
|
209
|
-
TRouter extends Router<AnyRouterDef<TConfig>>,
|
|
210
|
-
>(router: TRouter): RouterCaller<TRouter['_def']> {
|
|
211
|
-
const _def = router._def;
|
|
212
|
-
type Context = TConfig['$types']['ctx'];
|
|
213
|
-
|
|
214
|
-
return function createCaller(maybeContext) {
|
|
215
|
-
const proxy = createRecursiveProxy(({ path, args }) => {
|
|
216
|
-
const fullPath = path.join('.');
|
|
217
|
-
const procedure = _def.procedures[fullPath] as AnyProcedure;
|
|
218
|
-
|
|
219
|
-
const callProc = (ctx: Context) =>
|
|
220
|
-
procedure({
|
|
221
|
-
path: fullPath,
|
|
222
|
-
getRawInput: async () => args[0],
|
|
223
|
-
ctx,
|
|
224
|
-
type: procedure._def.type,
|
|
225
|
-
});
|
|
226
|
-
|
|
227
|
-
if (typeof maybeContext === 'function') {
|
|
228
|
-
const context = (maybeContext as () => MaybePromise<Context>)();
|
|
229
|
-
if (context instanceof Promise) {
|
|
230
|
-
return context.then(callProc);
|
|
231
|
-
}
|
|
232
|
-
return callProc(context);
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
return callProc(maybeContext);
|
|
236
|
-
});
|
|
237
|
-
|
|
238
|
-
return proxy as ReturnType<RouterCaller<any>>;
|
|
239
|
-
};
|
|
240
|
-
};
|
|
241
|
-
}
|
package/src/core/types.ts
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { inferTransformedProcedureOutput } from '../shared';
|
|
2
|
-
import { AnyProcedure, ProcedureArgs } from './procedure';
|
|
3
|
-
import { AnyRouter, AnyRouterDef, Router } from './router';
|
|
4
|
-
|
|
5
|
-
export type inferRouterDef<TRouter extends AnyRouter> = TRouter extends Router<
|
|
6
|
-
infer TParams
|
|
7
|
-
>
|
|
8
|
-
? TParams extends AnyRouterDef<any>
|
|
9
|
-
? TParams
|
|
10
|
-
: never
|
|
11
|
-
: never;
|
|
12
|
-
|
|
13
|
-
export type inferRouterConfig<TRouter extends AnyRouter> =
|
|
14
|
-
inferRouterDef<TRouter>['_config'];
|
|
15
|
-
export type inferRouterContext<TRouter extends AnyRouter> =
|
|
16
|
-
inferRouterConfig<TRouter>['$types']['ctx'];
|
|
17
|
-
export type inferRouterError<TRouter extends AnyRouter> =
|
|
18
|
-
inferRouterConfig<TRouter>['$types']['errorShape'];
|
|
19
|
-
export type inferRouterMeta<TRouter extends AnyRouter> =
|
|
20
|
-
inferRouterConfig<TRouter>['$types']['meta'];
|
|
21
|
-
|
|
22
|
-
export const procedureTypes = ['query', 'mutation', 'subscription'] as const;
|
|
23
|
-
/**
|
|
24
|
-
* @public
|
|
25
|
-
*/
|
|
26
|
-
export type ProcedureType = (typeof procedureTypes)[number];
|
|
27
|
-
|
|
28
|
-
export type inferHandlerInput<TProcedure extends AnyProcedure> = ProcedureArgs<
|
|
29
|
-
inferProcedureParams<TProcedure>
|
|
30
|
-
>;
|
|
31
|
-
|
|
32
|
-
export type inferProcedureInput<TProcedure extends AnyProcedure> =
|
|
33
|
-
inferProcedureParams<TProcedure>['_input_in'];
|
|
34
|
-
|
|
35
|
-
export type inferProcedureParams<TProcedure> = TProcedure extends AnyProcedure
|
|
36
|
-
? TProcedure['_def']
|
|
37
|
-
: never;
|
|
38
|
-
export type inferProcedureOutput<TProcedure> =
|
|
39
|
-
inferProcedureParams<TProcedure>['_output_out'];
|
|
40
|
-
|
|
41
|
-
type GetInferenceHelpers<
|
|
42
|
-
TType extends 'input' | 'output',
|
|
43
|
-
TRouter extends AnyRouter,
|
|
44
|
-
> = {
|
|
45
|
-
[TKey in keyof TRouter['_def']['record']]: TRouter['_def']['record'][TKey] extends infer TRouterOrProcedure
|
|
46
|
-
? TRouterOrProcedure extends AnyRouter
|
|
47
|
-
? GetInferenceHelpers<TType, TRouterOrProcedure>
|
|
48
|
-
: TRouterOrProcedure extends AnyProcedure
|
|
49
|
-
? TType extends 'input'
|
|
50
|
-
? inferProcedureInput<TRouterOrProcedure>
|
|
51
|
-
: inferTransformedProcedureOutput<
|
|
52
|
-
TRouter['_def']['_config'],
|
|
53
|
-
TRouterOrProcedure
|
|
54
|
-
>
|
|
55
|
-
: never
|
|
56
|
-
: never;
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
export type inferRouterInputs<TRouter extends AnyRouter> = GetInferenceHelpers<
|
|
60
|
-
'input',
|
|
61
|
-
TRouter
|
|
62
|
-
>;
|
|
63
|
-
|
|
64
|
-
export type inferRouterOutputs<TRouter extends AnyRouter> = GetInferenceHelpers<
|
|
65
|
-
'output',
|
|
66
|
-
TRouter
|
|
67
|
-
>;
|