@trpc/server 10.0.0-alpha.3 → 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/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.d.ts +1 -0
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.dev.js +170 -0
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.js +7 -0
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.prod.js +170 -0
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.esm.js +166 -0
- package/adapters/aws-lambda/index.d.ts +1 -0
- package/adapters/aws-lambda/index.js +1 -0
- package/adapters/express/dist/trpc-server-adapters-express.cjs.dev.js +7 -6
- package/adapters/express/dist/trpc-server-adapters-express.cjs.prod.js +7 -6
- package/adapters/express/dist/trpc-server-adapters-express.esm.js +7 -6
- package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.d.ts +1 -0
- package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.dev.js +109 -0
- package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.js +7 -0
- package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.prod.js +109 -0
- package/adapters/fastify/dist/trpc-server-adapters-fastify.esm.js +104 -0
- package/adapters/fastify/index.d.ts +1 -0
- package/adapters/fastify/index.js +1 -0
- package/adapters/fetch/index.d.ts +1 -0
- package/adapters/fetch/index.js +1 -0
- package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.d.ts +1 -0
- package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.dev.js +25 -0
- package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.js +7 -0
- package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.prod.js +25 -0
- package/adapters/lambda/dist/trpc-server-adapters-lambda.esm.js +21 -0
- package/adapters/next/dist/trpc-server-adapters-next.cjs.dev.js +4 -3
- package/adapters/next/dist/trpc-server-adapters-next.cjs.prod.js +4 -3
- package/adapters/next/dist/trpc-server-adapters-next.esm.js +4 -3
- package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.dev.js +4 -3
- package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.prod.js +4 -3
- package/adapters/node-http/dist/trpc-server-adapters-node-http.esm.js +4 -3
- package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.dev.js +5 -4
- package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.prod.js +5 -4
- package/adapters/standalone/dist/trpc-server-adapters-standalone.esm.js +5 -4
- package/adapters/ws/dist/trpc-server-adapters-ws.cjs.dev.js +6 -5
- package/adapters/ws/dist/trpc-server-adapters-ws.cjs.prod.js +6 -5
- package/adapters/ws/dist/trpc-server-adapters-ws.esm.js +6 -5
- package/dist/TRPCError-9050a68d.js +69 -0
- package/dist/TRPCError-b7fa0c31.mjs +65 -0
- package/dist/adapters/aws-lambda/index.d.ts +14 -0
- package/dist/adapters/aws-lambda/index.d.ts.map +1 -0
- package/dist/adapters/aws-lambda/utils.d.ts +34 -0
- package/dist/adapters/aws-lambda/utils.d.ts.map +1 -0
- package/dist/adapters/express.d.ts +1 -1
- package/dist/adapters/express.d.ts.map +1 -1
- package/dist/adapters/express.js +8 -7
- package/dist/adapters/express.mjs +8 -7
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts +13 -0
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -0
- package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +12 -0
- package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -0
- package/dist/adapters/fastify/index.d.ts +3 -0
- package/dist/adapters/fastify/index.d.ts.map +1 -0
- package/dist/adapters/fastify/index.js +108 -0
- package/dist/adapters/fastify/index.mjs +103 -0
- package/dist/{ws → adapters/fastify}/index.ts.js +0 -0
- package/dist/adapters/fetch/fetchRequestHandler.d.ts +8 -0
- package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -0
- package/dist/adapters/fetch/index.d.ts +3 -0
- package/dist/adapters/fetch/index.d.ts.map +1 -0
- package/dist/adapters/fetch/index.js +69 -0
- package/dist/adapters/fetch/index.mjs +65 -0
- package/dist/adapters/fetch/index.ts.js +1 -0
- package/dist/adapters/fetch/types.d.ts +21 -0
- package/dist/adapters/fetch/types.d.ts.map +1 -0
- package/dist/adapters/lambda/index.d.ts +12 -0
- package/dist/adapters/lambda/index.d.ts.map +1 -0
- package/dist/adapters/next.d.ts +2 -2
- package/dist/adapters/next.d.ts.map +1 -1
- package/dist/adapters/next.js +9 -9
- package/dist/adapters/next.mjs +8 -8
- package/dist/adapters/node-http/index.js +5 -4
- package/dist/adapters/node-http/index.mjs +5 -4
- package/dist/adapters/node-http/internals/getPostBody.d.ts +1 -1
- package/dist/adapters/node-http/internals/getPostBody.d.ts.map +1 -1
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +2 -2
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
- package/dist/adapters/node-http/types.d.ts +11 -9
- package/dist/adapters/node-http/types.d.ts.map +1 -1
- package/dist/adapters/standalone.d.ts +2 -2
- package/dist/adapters/standalone.d.ts.map +1 -1
- package/dist/adapters/standalone.js +11 -7
- package/dist/adapters/standalone.mjs +11 -6
- package/dist/adapters/ws.d.ts +8 -6
- package/dist/adapters/ws.d.ts.map +1 -1
- package/dist/adapters/ws.js +123 -90
- package/dist/adapters/ws.mjs +118 -85
- package/dist/assertNotBrowser.d.ts.map +1 -1
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/initTRPC.d.ts +64 -0
- package/dist/core/initTRPC.d.ts.map +1 -0
- package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts +222 -0
- package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts.map +1 -0
- package/dist/core/internals/config.d.ts +36 -0
- package/dist/core/internals/config.d.ts.map +1 -0
- package/dist/core/internals/getParseFn.d.ts +9 -0
- package/dist/core/internals/getParseFn.d.ts.map +1 -0
- package/dist/core/internals/internalProcedure.d.ts +78 -0
- package/dist/core/internals/internalProcedure.d.ts.map +1 -0
- package/dist/core/internals/mergeRouters.d.ts +3 -0
- package/dist/core/internals/mergeRouters.d.ts.map +1 -0
- package/dist/core/internals/mergeWithoutOverrides.d.ts +5 -0
- package/dist/core/internals/mergeWithoutOverrides.d.ts.map +1 -0
- package/dist/core/internals/omitPrototype.d.ts +6 -0
- package/dist/core/internals/omitPrototype.d.ts.map +1 -0
- 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 +99 -0
- package/dist/core/internals/procedureBuilder.d.ts.map +1 -0
- package/dist/core/internals/utils.d.ts +44 -0
- package/dist/core/internals/utils.d.ts.map +1 -0
- package/dist/core/middleware.d.ts +79 -0
- package/dist/core/middleware.d.ts.map +1 -0
- package/dist/core/parser.d.ts +25 -0
- package/dist/core/parser.d.ts.map +1 -0
- package/dist/core/procedure.d.ts +69 -0
- package/dist/core/procedure.d.ts.map +1 -0
- package/dist/core/router.d.ts +104 -0
- package/dist/core/router.d.ts.map +1 -0
- package/dist/core/types.d.ts +17 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/{internals → deprecated/internals}/callProcedure.d.ts +5 -2
- package/dist/deprecated/internals/callProcedure.d.ts.map +1 -0
- package/dist/{internals → deprecated/internals}/middlewares.d.ts +21 -3
- package/dist/deprecated/internals/middlewares.d.ts.map +1 -0
- package/dist/deprecated/internals/procedure.d.ts +96 -0
- package/dist/deprecated/internals/procedure.d.ts.map +1 -0
- package/dist/deprecated/interop.d.ts +18 -0
- package/dist/deprecated/interop.d.ts.map +1 -0
- package/dist/deprecated/router.d.ts +194 -0
- package/dist/deprecated/router.d.ts.map +1 -0
- package/dist/{codes-7a3d4f65.mjs → envelopes-af8c2959.mjs} +30 -1
- package/dist/{codes-7f46544e.js → envelopes-b6dd0367.js} +29 -1
- package/dist/error/TRPCError.d.ts +11 -0
- package/dist/error/TRPCError.d.ts.map +1 -0
- package/dist/error/formatter.d.ts +33 -0
- package/dist/error/formatter.d.ts.map +1 -0
- package/dist/{internals/errors.d.ts → error/utils.d.ts} +3 -2
- package/dist/error/utils.d.ts.map +1 -0
- package/dist/http/index.d.ts +1 -1
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/internals/getHTTPStatusCode.d.ts +2 -1
- package/dist/http/internals/getHTTPStatusCode.d.ts.map +1 -1
- package/dist/http/internals/types.d.ts +11 -8
- package/dist/http/internals/types.d.ts.map +1 -1
- package/dist/http/resolveHTTPResponse.d.ts +4 -4
- package/dist/http/resolveHTTPResponse.d.ts.map +1 -1
- package/dist/http/{ResponseMeta.d.ts → types.d.ts} +1 -1
- package/dist/http/types.d.ts.map +1 -0
- package/dist/index.d.ts +3 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +797 -105
- package/dist/index.mjs +786 -90
- package/dist/internals/transformTRPCResponse.d.ts +5 -3
- package/dist/internals/transformTRPCResponse.d.ts.map +1 -1
- package/dist/internals/types.d.ts +23 -0
- package/dist/internals/types.d.ts.map +1 -0
- package/dist/nodeHTTPRequestHandler-174459c5.mjs +105 -0
- package/dist/nodeHTTPRequestHandler-6b7c8622.js +107 -0
- package/dist/observable/index.d.ts +5 -0
- package/dist/observable/index.d.ts.map +1 -0
- package/dist/observable/index.js +204 -0
- package/dist/observable/index.mjs +195 -0
- package/dist/observable/index.ts.js +1 -0
- package/dist/observable/internals/identity.d.ts +2 -0
- package/dist/observable/internals/identity.d.ts.map +1 -0
- package/dist/observable/internals/observableToPromise.d.ts +10 -0
- package/dist/observable/internals/observableToPromise.d.ts.map +1 -0
- package/dist/observable/internals/pipe.d.ts +4 -0
- package/dist/observable/internals/pipe.d.ts.map +1 -0
- package/dist/observable/observable.d.ts +5 -0
- package/dist/observable/observable.d.ts.map +1 -0
- package/dist/observable/operators/index.d.ts +4 -0
- package/dist/observable/operators/index.d.ts.map +1 -0
- package/dist/observable/operators/map.d.ts +3 -0
- package/dist/observable/operators/map.d.ts.map +1 -0
- package/dist/observable/operators/share.d.ts +6 -0
- package/dist/observable/operators/share.d.ts.map +1 -0
- package/dist/observable/operators/tap.d.ts +3 -0
- package/dist/observable/operators/tap.d.ts.map +1 -0
- package/dist/observable/types.d.ts +29 -0
- package/dist/observable/types.d.ts.map +1 -0
- package/dist/observable-137ea1bd.mjs +105 -0
- package/dist/observable-3aa4d911.js +108 -0
- package/dist/{nodeHTTPRequestHandler-10e6d2f9.mjs → resolveHTTPResponse-8657b8de.mjs} +32 -133
- package/dist/{nodeHTTPRequestHandler-d7c307d3.js → resolveHTTPResponse-fcc8f644.js} +37 -139
- package/dist/rpc/codes.d.ts +2 -0
- package/dist/rpc/codes.d.ts.map +1 -1
- package/dist/rpc/envelopes.d.ts +62 -40
- package/dist/rpc/envelopes.d.ts.map +1 -1
- package/dist/rpc/index.js +7 -3
- package/dist/rpc/index.mjs +1 -1
- package/dist/rpc/internals/invert.d.ts +18 -0
- package/dist/rpc/internals/invert.d.ts.map +1 -0
- package/dist/subscription.d.ts +3 -52
- package/dist/subscription.d.ts.map +1 -1
- package/dist/subscription.js +44 -0
- package/dist/subscription.mjs +40 -0
- package/dist/subscription.ts.js +1 -0
- package/dist/transformTRPCResponse-0c261655.js +29 -0
- package/dist/transformTRPCResponse-747b9a68.mjs +27 -0
- package/dist/transformer.d.ts +14 -0
- package/dist/transformer.d.ts.map +1 -1
- package/dist/types.d.ts +23 -8
- package/dist/types.d.ts.map +1 -1
- package/observable/index.d.ts +1 -0
- package/observable/index.js +1 -0
- package/package.json +50 -16
- package/rpc/dist/trpc-server-rpc.cjs.dev.js +1 -1
- package/rpc/dist/trpc-server-rpc.cjs.prod.js +1 -1
- package/rpc/dist/trpc-server-rpc.esm.js +1 -1
- package/src/adapters/aws-lambda/index.ts +156 -0
- package/src/adapters/aws-lambda/utils.ts +91 -0
- package/src/adapters/express.ts +4 -4
- package/src/adapters/fastify/fastifyRequestHandler.ts +77 -0
- package/src/adapters/fastify/fastifyTRPCPlugin.ts +56 -0
- package/src/adapters/fastify/index.ts +2 -0
- package/src/adapters/fetch/fetchRequestHandler.ts +61 -0
- package/src/adapters/fetch/index.ts +2 -0
- package/src/adapters/fetch/types.ts +28 -0
- package/src/adapters/lambda/index.ts +18 -0
- package/src/adapters/next.ts +10 -8
- package/src/adapters/node-http/internals/getPostBody.test.ts +2 -1
- package/src/adapters/node-http/internals/getPostBody.ts +1 -1
- package/src/adapters/node-http/nodeHTTPRequestHandler.ts +7 -7
- package/src/adapters/node-http/types.ts +11 -9
- package/src/adapters/standalone.ts +12 -4
- package/src/adapters/ws.ts +135 -91
- package/src/assertNotBrowser.ts +1 -0
- package/src/core/index.ts +5 -0
- package/src/core/initTRPC.ts +95 -0
- package/src/core/internals/__generated__/mergeRoutersGeneric.ts +326 -0
- package/src/core/internals/config.ts +42 -0
- package/src/core/internals/getParseFn.ts +47 -0
- package/src/core/internals/internalProcedure.ts +296 -0
- package/src/core/internals/mergeRouters.ts +45 -0
- package/src/core/internals/mergeWithoutOverrides.ts +19 -0
- package/src/core/internals/omitPrototype.ts +9 -0
- package/src/core/internals/prefixObjectKeys.ts +9 -0
- package/src/core/internals/procedureBuilder.ts +180 -0
- package/src/core/internals/utils.ts +64 -0
- package/src/core/middleware.ts +94 -0
- package/src/core/parser.ts +45 -0
- package/src/core/procedure.ts +95 -0
- package/src/core/router.ts +336 -0
- package/src/core/types.ts +53 -0
- package/src/{internals → deprecated/internals}/callProcedure.ts +9 -3
- package/src/{internals → deprecated/internals}/middlewares.ts +23 -3
- package/src/deprecated/internals/procedure.ts +415 -0
- package/src/deprecated/interop.ts +196 -0
- package/src/{router.ts → deprecated/router.ts} +216 -100
- package/src/{TRPCError.ts → error/TRPCError.ts} +6 -14
- package/src/error/formatter.ts +51 -0
- package/src/{internals/errors.ts → error/utils.ts} +21 -5
- package/src/http/index.ts +1 -1
- package/src/http/internals/getHTTPStatusCode.ts +3 -2
- package/src/http/internals/types.ts +11 -14
- package/src/http/resolveHTTPResponse.ts +28 -37
- package/src/http/{ResponseMeta.ts → types.ts} +0 -0
- package/src/index.ts +3 -7
- package/src/internals/transformTRPCResponse.ts +21 -16
- package/src/internals/types.ts +24 -0
- package/src/observable/index.ts +4 -0
- package/src/observable/internals/identity.ts +3 -0
- package/src/observable/internals/observableToPromise.ts +49 -0
- package/src/observable/internals/pipe.ts +22 -0
- package/src/observable/observable.test.ts +101 -0
- package/src/observable/observable.ts +78 -0
- package/src/observable/operators/index.ts +3 -0
- package/src/observable/operators/map.test.ts +92 -0
- package/src/observable/operators/map.ts +25 -0
- package/src/observable/operators/share.test.ts +60 -0
- package/src/observable/operators/share.ts +67 -0
- package/src/observable/operators/tap.ts +26 -0
- package/src/observable/types.ts +69 -0
- package/src/rpc/codes.ts +2 -1
- package/src/rpc/envelopes.ts +88 -69
- package/src/rpc/internals/invert.ts +27 -0
- package/src/subscription.ts +7 -125
- package/src/transformer.ts +28 -0
- package/src/types.ts +26 -9
- package/dist/TRPCError.d.ts +0 -19
- package/dist/TRPCError.d.ts.map +0 -1
- package/dist/deprecated/LegacyRouter.d.ts +0 -3
- package/dist/deprecated/LegacyRouter.d.ts.map +0 -1
- package/dist/deprecated/createHttpServer.d.ts +0 -19
- package/dist/deprecated/createHttpServer.d.ts.map +0 -1
- package/dist/deprecated/requestHandler.d.ts +0 -15
- package/dist/deprecated/requestHandler.d.ts.map +0 -1
- package/dist/http/ResponseMeta.d.ts.map +0 -1
- package/dist/internals/BaseHandlerOptions.d.ts +0 -13
- package/dist/internals/BaseHandlerOptions.d.ts.map +0 -1
- package/dist/internals/OnErrorFunction.d.ts +0 -11
- package/dist/internals/OnErrorFunction.d.ts.map +0 -1
- package/dist/internals/callProcedure.d.ts.map +0 -1
- package/dist/internals/errors.d.ts.map +0 -1
- package/dist/internals/middlewares.d.ts.map +0 -1
- package/dist/internals/procedure.d.ts +0 -74
- package/dist/internals/procedure.d.ts.map +0 -1
- package/dist/internals/wrapCallSafe.d.ts +0 -16
- package/dist/internals/wrapCallSafe.d.ts.map +0 -1
- package/dist/router.d.ts +0 -176
- package/dist/router.d.ts.map +0 -1
- package/dist/subscription-5b7e1eba.js +0 -136
- package/dist/subscription-e1d42e69.mjs +0 -133
- package/dist/transformTRPCResponse-76e0c91e.mjs +0 -109
- package/dist/transformTRPCResponse-bd24f548.js +0 -114
- package/dist/ws/index.d.ts +0 -7
- package/dist/ws/index.d.ts.map +0 -1
- package/dist/ws/index.js +0 -15
- package/dist/ws/index.mjs +0 -11
- package/src/deprecated/LegacyRouter.ts +0 -3
- package/src/deprecated/createHttpServer.ts +0 -29
- package/src/deprecated/requestHandler.ts +0 -26
- package/src/internals/BaseHandlerOptions.ts +0 -13
- package/src/internals/OnErrorFunction.ts +0 -11
- package/src/internals/procedure.ts +0 -283
- package/src/internals/wrapCallSafe.ts +0 -19
- package/src/ws/index.ts +0 -8
- package/ws/dist/trpc-server-ws.cjs.d.ts +0 -1
- package/ws/dist/trpc-server-ws.cjs.dev.js +0 -15
- package/ws/dist/trpc-server-ws.cjs.js +0 -7
- package/ws/dist/trpc-server-ws.cjs.prod.js +0 -15
- package/ws/dist/trpc-server-ws.esm.js +0 -11
- package/ws/index.d.ts +0 -1
- package/ws/index.js +0 -1
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { RootConfig } from './internals/config';
|
|
2
|
+
import { MiddlewareMarker } from './internals/utils';
|
|
3
|
+
import { ProcedureParams } from './procedure';
|
|
4
|
+
import { ProcedureType } from './types';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
interface MiddlewareResultBase {
|
|
10
|
+
/**
|
|
11
|
+
* All middlewares should pass through their `next()`'s output.
|
|
12
|
+
* Requiring this marker makes sure that can't be forgotten at compile-time.
|
|
13
|
+
*/
|
|
14
|
+
readonly marker: MiddlewareMarker;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
interface MiddlewareOKResult<_TParams extends ProcedureParams>
|
|
21
|
+
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<_TParams extends ProcedureParams>
|
|
31
|
+
extends MiddlewareResultBase {
|
|
32
|
+
ok: false;
|
|
33
|
+
error: Error;
|
|
34
|
+
// we could guarantee it's always of this type
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @internal
|
|
39
|
+
*/
|
|
40
|
+
export type MiddlewareResult<TParams extends ProcedureParams> =
|
|
41
|
+
| MiddlewareOKResult<TParams>
|
|
42
|
+
| MiddlewareErrorResult<TParams>;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
export type MiddlewareFunction<
|
|
48
|
+
TParams extends ProcedureParams,
|
|
49
|
+
TParamsAfter extends ProcedureParams,
|
|
50
|
+
> = (opts: {
|
|
51
|
+
ctx: TParams['_ctx_out'];
|
|
52
|
+
type: ProcedureType;
|
|
53
|
+
path: string;
|
|
54
|
+
input: TParams['_input_out'];
|
|
55
|
+
rawInput: unknown;
|
|
56
|
+
meta: TParams['_meta'];
|
|
57
|
+
next: {
|
|
58
|
+
(): Promise<MiddlewareResult<TParams>>;
|
|
59
|
+
<$TContext>(opts: { ctx: $TContext }): Promise<
|
|
60
|
+
MiddlewareResult<{
|
|
61
|
+
_ctx_in: TParams['_ctx_in'];
|
|
62
|
+
_ctx_out: $TContext;
|
|
63
|
+
_input_in: TParams['_input_in'];
|
|
64
|
+
_input_out: TParams['_input_out'];
|
|
65
|
+
_output_in: TParams['_output_in'];
|
|
66
|
+
_output_out: TParams['_output_out'];
|
|
67
|
+
_meta: TParams['_meta'];
|
|
68
|
+
}>
|
|
69
|
+
>;
|
|
70
|
+
};
|
|
71
|
+
}) => Promise<MiddlewareResult<TParamsAfter>>;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* @internal
|
|
75
|
+
*/
|
|
76
|
+
// FIXME this should use RootConfig
|
|
77
|
+
export function createMiddlewareFactory<TConfig extends RootConfig>() {
|
|
78
|
+
return function createMiddleware<$TNewParams extends ProcedureParams>(
|
|
79
|
+
fn: MiddlewareFunction<
|
|
80
|
+
{
|
|
81
|
+
_ctx_in: TConfig['ctx'];
|
|
82
|
+
_ctx_out: TConfig['ctx'];
|
|
83
|
+
_input_out: unknown;
|
|
84
|
+
_input_in: unknown;
|
|
85
|
+
_output_in: unknown;
|
|
86
|
+
_output_out: unknown;
|
|
87
|
+
_meta: TConfig['meta'];
|
|
88
|
+
},
|
|
89
|
+
$TNewParams
|
|
90
|
+
>,
|
|
91
|
+
) {
|
|
92
|
+
return fn;
|
|
93
|
+
};
|
|
94
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export type ParserZodEsque<TInput, TParsedInput> = {
|
|
2
|
+
_input: TInput;
|
|
3
|
+
_output: TParsedInput;
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
export type ParserMyZodEsque<TInput> = {
|
|
7
|
+
parse: (input: any) => TInput;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export type ParserSuperstructEsque<TInput> = {
|
|
11
|
+
create: (input: unknown) => TInput;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export type ParserCustomValidatorEsque<TInput> = (
|
|
15
|
+
input: unknown,
|
|
16
|
+
) => TInput | Promise<TInput>;
|
|
17
|
+
|
|
18
|
+
export type ParserYupEsque<TInput> = {
|
|
19
|
+
validateSync: (input: unknown) => TInput;
|
|
20
|
+
};
|
|
21
|
+
export type ParserWithoutInput<TInput> =
|
|
22
|
+
| ParserYupEsque<TInput>
|
|
23
|
+
| ParserSuperstructEsque<TInput>
|
|
24
|
+
| ParserCustomValidatorEsque<TInput>
|
|
25
|
+
| ParserMyZodEsque<TInput>;
|
|
26
|
+
|
|
27
|
+
export type ParserWithInputOutput<TInput, TParsedInput> = ParserZodEsque<
|
|
28
|
+
TInput,
|
|
29
|
+
TParsedInput
|
|
30
|
+
>;
|
|
31
|
+
|
|
32
|
+
export type Parser = ParserWithoutInput<any> | ParserWithInputOutput<any, any>;
|
|
33
|
+
|
|
34
|
+
export type inferParser<TParser extends Parser> =
|
|
35
|
+
TParser extends ParserWithInputOutput<infer $TIn, infer $TOut>
|
|
36
|
+
? {
|
|
37
|
+
in: $TIn;
|
|
38
|
+
out: $TOut;
|
|
39
|
+
}
|
|
40
|
+
: TParser extends ParserWithoutInput<infer $InOut>
|
|
41
|
+
? {
|
|
42
|
+
in: $InOut;
|
|
43
|
+
out: $InOut;
|
|
44
|
+
}
|
|
45
|
+
: never;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { UnsetMarker } from './internals/utils';
|
|
2
|
+
|
|
3
|
+
type ClientContext = Record<string, unknown>;
|
|
4
|
+
export interface ProcedureOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Client-side context
|
|
7
|
+
*/
|
|
8
|
+
context?: ClientContext;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
export interface ProcedureParams<
|
|
15
|
+
TContextIn = unknown,
|
|
16
|
+
TContextOut = unknown,
|
|
17
|
+
TInputIn = unknown,
|
|
18
|
+
TInputOut = unknown,
|
|
19
|
+
TOutputIn = unknown,
|
|
20
|
+
TOutputOut = unknown,
|
|
21
|
+
TMeta = unknown,
|
|
22
|
+
> {
|
|
23
|
+
/**
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
_meta: TMeta;
|
|
27
|
+
/**
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
_ctx_in: TContextIn;
|
|
31
|
+
/**
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
_ctx_out: TContextOut;
|
|
35
|
+
/**
|
|
36
|
+
* @internal
|
|
37
|
+
*/
|
|
38
|
+
_output_in: TOutputIn;
|
|
39
|
+
/**
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
_output_out: TOutputOut;
|
|
43
|
+
/**
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
_input_in: TInputIn;
|
|
47
|
+
/**
|
|
48
|
+
* @internal
|
|
49
|
+
*/
|
|
50
|
+
_input_out: TInputOut;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @internal
|
|
55
|
+
*/
|
|
56
|
+
export type ProcedureArgs<TParams extends ProcedureParams> =
|
|
57
|
+
TParams['_input_in'] extends UnsetMarker
|
|
58
|
+
? [input?: undefined | void, opts?: ProcedureOptions]
|
|
59
|
+
: undefined extends TParams['_input_in']
|
|
60
|
+
? [input?: TParams['_input_in'] | void, opts?: ProcedureOptions]
|
|
61
|
+
: [input: TParams['_input_in'], opts?: ProcedureOptions];
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @internal
|
|
65
|
+
*/
|
|
66
|
+
export interface ProcedureBase<TParams extends ProcedureParams> {
|
|
67
|
+
/**
|
|
68
|
+
* @deprecated use `._def.meta` instead
|
|
69
|
+
*/
|
|
70
|
+
meta?: TParams['_meta'];
|
|
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>;
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/ban-types */
|
|
2
|
+
import { inferProcedureOutput } from '.';
|
|
3
|
+
import { Filter } from '..';
|
|
4
|
+
import { TRPCError } from '../error/TRPCError';
|
|
5
|
+
import {
|
|
6
|
+
DefaultErrorShape,
|
|
7
|
+
ErrorFormatter,
|
|
8
|
+
defaultFormatter,
|
|
9
|
+
} from '../error/formatter';
|
|
10
|
+
import { getHTTPStatusCodeFromError } from '../http/internals/getHTTPStatusCode';
|
|
11
|
+
import { TRPCErrorShape, TRPC_ERROR_CODES_BY_KEY } from '../rpc';
|
|
12
|
+
import { CombinedDataTransformer, defaultTransformer } from '../transformer';
|
|
13
|
+
import { RootConfig } from './internals/config';
|
|
14
|
+
import {
|
|
15
|
+
InternalProcedure,
|
|
16
|
+
InternalProcedureCallOptions,
|
|
17
|
+
} from './internals/internalProcedure';
|
|
18
|
+
import { mergeWithoutOverrides } from './internals/mergeWithoutOverrides';
|
|
19
|
+
import { omitPrototype } from './internals/omitPrototype';
|
|
20
|
+
import {
|
|
21
|
+
MutationProcedure,
|
|
22
|
+
Procedure,
|
|
23
|
+
QueryProcedure,
|
|
24
|
+
SubscriptionProcedure,
|
|
25
|
+
} from './procedure';
|
|
26
|
+
import { ProcedureType } from './types';
|
|
27
|
+
|
|
28
|
+
type ProcedureRecord = Record<string, Procedure<any>>;
|
|
29
|
+
|
|
30
|
+
export type ProcedureRouterRecord = Record<string, Procedure<any> | AnyRouter>;
|
|
31
|
+
|
|
32
|
+
export interface ProcedureStructure {
|
|
33
|
+
queries: Record<string, QueryProcedure<any>>;
|
|
34
|
+
mutations: Record<string, MutationProcedure<any>>;
|
|
35
|
+
subscriptions: Record<string, SubscriptionProcedure<any>>;
|
|
36
|
+
procedures: ProcedureRecord;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface RouterDef<
|
|
40
|
+
// FIXME this should use RootConfig
|
|
41
|
+
TContext,
|
|
42
|
+
TErrorShape extends TRPCErrorShape<number>,
|
|
43
|
+
TMeta extends Record<string, unknown>,
|
|
44
|
+
TProcedures extends ProcedureRouterRecord,
|
|
45
|
+
> {
|
|
46
|
+
/**
|
|
47
|
+
* @internal
|
|
48
|
+
*/
|
|
49
|
+
_ctx: TContext;
|
|
50
|
+
/**
|
|
51
|
+
* @internal
|
|
52
|
+
*/
|
|
53
|
+
_errorShape: TErrorShape;
|
|
54
|
+
/**
|
|
55
|
+
* @internal
|
|
56
|
+
*/
|
|
57
|
+
_meta: TMeta;
|
|
58
|
+
errorFormatter: ErrorFormatter<TContext, TErrorShape>;
|
|
59
|
+
transformer: CombinedDataTransformer;
|
|
60
|
+
// FIXME: separate `procedures` and `children`-routers
|
|
61
|
+
procedures: TProcedures;
|
|
62
|
+
// FIXME decide if these are deprecated
|
|
63
|
+
/**
|
|
64
|
+
* @deprecated
|
|
65
|
+
*/
|
|
66
|
+
subscriptions: Filter<TProcedures, SubscriptionProcedure<any>>;
|
|
67
|
+
/**
|
|
68
|
+
* @deprecated
|
|
69
|
+
*/
|
|
70
|
+
queries: Filter<TProcedures, QueryProcedure<any>>;
|
|
71
|
+
/**
|
|
72
|
+
* @deprecated
|
|
73
|
+
*/
|
|
74
|
+
mutations: Filter<TProcedures, MutationProcedure<any>>;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export type AnyRouterDef<TContext = any> = RouterDef<TContext, any, any, any>;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* @internal
|
|
81
|
+
*/
|
|
82
|
+
export type inferHandlerInput<TProcedure extends Procedure<any>> =
|
|
83
|
+
TProcedure extends Procedure<infer TDef>
|
|
84
|
+
? undefined extends TDef['_input_in'] // ? is input optional
|
|
85
|
+
? unknown extends TDef['_input_in'] // ? is input unset
|
|
86
|
+
? [(null | undefined)?] // -> there is no input
|
|
87
|
+
: [(TDef['_input_in'] | null | undefined)?] // -> there is optional input
|
|
88
|
+
: [TDef['_input_in']] // -> input is required
|
|
89
|
+
: [(undefined | null)?]; // -> there is no input
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* @internal
|
|
93
|
+
*/
|
|
94
|
+
type inferHandlerFn<TProcedures extends Record<string, Procedure<any>>> = <
|
|
95
|
+
TProcedure extends TProcedures[TPath],
|
|
96
|
+
TPath extends keyof TProcedures & string,
|
|
97
|
+
>(
|
|
98
|
+
path: TPath,
|
|
99
|
+
...args: inferHandlerInput<TProcedure>
|
|
100
|
+
) => inferProcedureOutput<TProcedure>;
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* This only exists b/c of interop mode
|
|
104
|
+
* @internal
|
|
105
|
+
*/
|
|
106
|
+
|
|
107
|
+
type RouterCaller<TDef extends AnyRouterDef> = (ctx: TDef['_ctx']) => {
|
|
108
|
+
/**
|
|
109
|
+
* @deprecated
|
|
110
|
+
*/
|
|
111
|
+
query: inferHandlerFn<TDef['queries']>;
|
|
112
|
+
/**
|
|
113
|
+
* @deprecated
|
|
114
|
+
*/
|
|
115
|
+
mutation: inferHandlerFn<TDef['mutations']>;
|
|
116
|
+
/**
|
|
117
|
+
* @deprecated
|
|
118
|
+
*/
|
|
119
|
+
subscription: inferHandlerFn<TDef['subscriptions']>;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
export interface Router<TDef extends AnyRouterDef> {
|
|
123
|
+
_def: RouterDef<
|
|
124
|
+
TDef['_ctx'],
|
|
125
|
+
TDef['_errorShape'],
|
|
126
|
+
TDef['_meta'],
|
|
127
|
+
TDef['procedures']
|
|
128
|
+
>;
|
|
129
|
+
/** @deprecated **/
|
|
130
|
+
errorFormatter: TDef['errorFormatter'];
|
|
131
|
+
/** @deprecated **/
|
|
132
|
+
transformer: TDef['transformer'];
|
|
133
|
+
|
|
134
|
+
// FIXME rename me and deprecate
|
|
135
|
+
createCaller: RouterCaller<TDef>;
|
|
136
|
+
// FIXME rename me and deprecate
|
|
137
|
+
getErrorShape(opts: {
|
|
138
|
+
error: TRPCError;
|
|
139
|
+
type: ProcedureType | 'unknown';
|
|
140
|
+
path: string | undefined;
|
|
141
|
+
input: unknown;
|
|
142
|
+
ctx: undefined | TDef['_ctx'];
|
|
143
|
+
}): TDef['_errorShape'];
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* @internal
|
|
148
|
+
*/
|
|
149
|
+
export type RouterDefaultOptions<TContext> = Pick<
|
|
150
|
+
AnyRouterDef<TContext>,
|
|
151
|
+
'transformer' | 'errorFormatter'
|
|
152
|
+
>;
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* @internal
|
|
156
|
+
*/
|
|
157
|
+
export type RouterBuildOptions<TContext> = Partial<
|
|
158
|
+
Pick<AnyRouterDef<TContext>, 'procedures'>
|
|
159
|
+
>;
|
|
160
|
+
|
|
161
|
+
export type AnyRouter = Router<any>;
|
|
162
|
+
|
|
163
|
+
function createRouterProxy(callback: (...args: [string, ...unknown[]]) => any) {
|
|
164
|
+
return new Proxy({} as any, {
|
|
165
|
+
get(_, path: string) {
|
|
166
|
+
return (...args: unknown[]) => callback(path, ...args);
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
const emptyRouter = {
|
|
171
|
+
_ctx: null as any,
|
|
172
|
+
_errorShape: null as any,
|
|
173
|
+
_meta: null as any,
|
|
174
|
+
queries: {},
|
|
175
|
+
mutations: {},
|
|
176
|
+
subscriptions: {},
|
|
177
|
+
errorFormatter: defaultFormatter,
|
|
178
|
+
transformer: defaultTransformer,
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
*
|
|
183
|
+
* @internal
|
|
184
|
+
*/
|
|
185
|
+
export function createRouterFactory<TConfig extends RootConfig>(
|
|
186
|
+
defaults?: RouterDefaultOptions<TConfig['ctx']>,
|
|
187
|
+
) {
|
|
188
|
+
return function createRouterInner<TProcedures extends ProcedureRouterRecord>(
|
|
189
|
+
procedures: TProcedures,
|
|
190
|
+
): Router<
|
|
191
|
+
RouterDef<
|
|
192
|
+
TConfig['ctx'],
|
|
193
|
+
TConfig['errorShape'],
|
|
194
|
+
TConfig['meta'],
|
|
195
|
+
TProcedures
|
|
196
|
+
>
|
|
197
|
+
> {
|
|
198
|
+
const routerProcedures: Record<string, Procedure<any>> = omitPrototype({});
|
|
199
|
+
function recursiveGetPaths(procedures: ProcedureRouterRecord, path = '') {
|
|
200
|
+
for (const [key, procedureOrRouter] of Object.entries(procedures ?? {})) {
|
|
201
|
+
const newPath = `${path}${key}`;
|
|
202
|
+
|
|
203
|
+
if (typeof procedureOrRouter === 'object') {
|
|
204
|
+
const router = procedureOrRouter as AnyRouter;
|
|
205
|
+
recursiveGetPaths(router._def.procedures, `${newPath}.`);
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
routerProcedures[newPath] = procedureOrRouter;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
recursiveGetPaths(procedures);
|
|
214
|
+
|
|
215
|
+
const result = mergeWithoutOverrides<
|
|
216
|
+
RouterDefaultOptions<TConfig['ctx']> & RouterBuildOptions<TConfig['ctx']>
|
|
217
|
+
>(
|
|
218
|
+
{
|
|
219
|
+
transformer: defaults?.transformer ?? defaultTransformer,
|
|
220
|
+
errorFormatter: defaults?.errorFormatter ?? defaultFormatter,
|
|
221
|
+
},
|
|
222
|
+
{ procedures: routerProcedures },
|
|
223
|
+
);
|
|
224
|
+
|
|
225
|
+
const _def: AnyRouterDef<TConfig['ctx']> = {
|
|
226
|
+
procedures: {},
|
|
227
|
+
...emptyRouter,
|
|
228
|
+
...result,
|
|
229
|
+
queries: Object.entries(result.procedures || {})
|
|
230
|
+
.filter((pair) => (pair[1] as any)._def.query)
|
|
231
|
+
.reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {}),
|
|
232
|
+
mutations: Object.entries(result.procedures || {})
|
|
233
|
+
.filter((pair) => (pair[1] as any)._def.mutation)
|
|
234
|
+
.reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {}),
|
|
235
|
+
subscriptions: Object.entries(result.procedures || {})
|
|
236
|
+
.filter((pair) => (pair[1] as any)._def.subscription)
|
|
237
|
+
.reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {}),
|
|
238
|
+
};
|
|
239
|
+
const def = {
|
|
240
|
+
_def,
|
|
241
|
+
transformer: _def.transformer,
|
|
242
|
+
errorFormatter: _def.errorFormatter,
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
function callProcedure(opts: InternalProcedureCallOptions) {
|
|
246
|
+
const { type, path } = opts;
|
|
247
|
+
|
|
248
|
+
if (!(path in _def.procedures) || !_def.procedures[path]['_def'][type]) {
|
|
249
|
+
throw new TRPCError({
|
|
250
|
+
code: 'NOT_FOUND',
|
|
251
|
+
message: `No "${type}"-procedure on path "${path}"`,
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
const procedure = _def.procedures[path] as InternalProcedure;
|
|
256
|
+
|
|
257
|
+
return procedure(opts);
|
|
258
|
+
}
|
|
259
|
+
const router: AnyRouter = {
|
|
260
|
+
...def,
|
|
261
|
+
createCaller(ctx) {
|
|
262
|
+
return {
|
|
263
|
+
query: (path, ...args) =>
|
|
264
|
+
callProcedure({
|
|
265
|
+
path,
|
|
266
|
+
rawInput: args[0],
|
|
267
|
+
ctx,
|
|
268
|
+
type: 'query',
|
|
269
|
+
}) as any,
|
|
270
|
+
mutation: (path, ...args) =>
|
|
271
|
+
callProcedure({
|
|
272
|
+
path,
|
|
273
|
+
rawInput: args[0],
|
|
274
|
+
ctx,
|
|
275
|
+
type: 'mutation',
|
|
276
|
+
}) as any,
|
|
277
|
+
subscription: (path, ...args) =>
|
|
278
|
+
callProcedure({
|
|
279
|
+
path,
|
|
280
|
+
rawInput: args[0],
|
|
281
|
+
ctx,
|
|
282
|
+
type: 'subscription',
|
|
283
|
+
}) as any,
|
|
284
|
+
|
|
285
|
+
queries: createRouterProxy((path, rawInput) =>
|
|
286
|
+
callProcedure({
|
|
287
|
+
path,
|
|
288
|
+
rawInput,
|
|
289
|
+
ctx,
|
|
290
|
+
type: 'query',
|
|
291
|
+
}),
|
|
292
|
+
),
|
|
293
|
+
mutations: createRouterProxy((path, rawInput) =>
|
|
294
|
+
callProcedure({
|
|
295
|
+
path,
|
|
296
|
+
rawInput,
|
|
297
|
+
ctx,
|
|
298
|
+
type: 'mutation',
|
|
299
|
+
}),
|
|
300
|
+
),
|
|
301
|
+
subscriptions: createRouterProxy((path, rawInput) =>
|
|
302
|
+
callProcedure({
|
|
303
|
+
path,
|
|
304
|
+
rawInput,
|
|
305
|
+
ctx,
|
|
306
|
+
type: 'subscription',
|
|
307
|
+
}),
|
|
308
|
+
),
|
|
309
|
+
};
|
|
310
|
+
},
|
|
311
|
+
getErrorShape(opts) {
|
|
312
|
+
const { path, error } = opts;
|
|
313
|
+
const { code } = opts.error;
|
|
314
|
+
const shape: DefaultErrorShape = {
|
|
315
|
+
message: error.message,
|
|
316
|
+
code: TRPC_ERROR_CODES_BY_KEY[code],
|
|
317
|
+
data: {
|
|
318
|
+
code,
|
|
319
|
+
httpStatus: getHTTPStatusCodeFromError(error),
|
|
320
|
+
},
|
|
321
|
+
};
|
|
322
|
+
if (
|
|
323
|
+
process.env.NODE_ENV !== 'production' &&
|
|
324
|
+
typeof opts.error.stack === 'string'
|
|
325
|
+
) {
|
|
326
|
+
shape.data.stack = opts.error.stack;
|
|
327
|
+
}
|
|
328
|
+
if (typeof path === 'string') {
|
|
329
|
+
shape.data.path = path;
|
|
330
|
+
}
|
|
331
|
+
return this._def.errorFormatter({ ...opts, shape });
|
|
332
|
+
},
|
|
333
|
+
};
|
|
334
|
+
return router as any;
|
|
335
|
+
};
|
|
336
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { inferObservableValue } from '../observable';
|
|
2
|
+
import { Procedure, 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 inferRouterContext<TRouter extends AnyRouter> =
|
|
14
|
+
inferRouterDef<TRouter>['_ctx'];
|
|
15
|
+
export type inferRouterError<TRouter extends AnyRouter> =
|
|
16
|
+
inferRouterDef<TRouter>['_errorShape'];
|
|
17
|
+
export type inferRouterMeta<TRouter extends AnyRouter> =
|
|
18
|
+
inferRouterDef<TRouter>['_meta'];
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
export type ProcedureType = 'query' | 'mutation' | 'subscription';
|
|
24
|
+
|
|
25
|
+
export type inferHandlerInput<TProcedure extends Procedure<any>> =
|
|
26
|
+
ProcedureArgs<inferProcedureParams<TProcedure>>;
|
|
27
|
+
|
|
28
|
+
export type inferProcedureInput<TProcedure extends Procedure<any>> =
|
|
29
|
+
inferHandlerInput<TProcedure>[0];
|
|
30
|
+
|
|
31
|
+
// /**
|
|
32
|
+
// * @internal
|
|
33
|
+
// */
|
|
34
|
+
// type inferProcedureFn<TProcedure extends Procedure<any>> =
|
|
35
|
+
// TProcedure extends QueryProcedure<any>
|
|
36
|
+
// ? TProcedure['query']
|
|
37
|
+
// : TProcedure extends SubscriptionProcedure<any>
|
|
38
|
+
// ? TProcedure['subscription']
|
|
39
|
+
// : TProcedure extends MutationProcedure<any>
|
|
40
|
+
// ? TProcedure['mutate']
|
|
41
|
+
// : never;
|
|
42
|
+
|
|
43
|
+
export type inferProcedureParams<TProcedure extends Procedure<any>> =
|
|
44
|
+
TProcedure extends Procedure<infer $Params> ? $Params : never;
|
|
45
|
+
export type inferProcedureOutput<TProcedure extends Procedure<any>> =
|
|
46
|
+
inferProcedureParams<TProcedure>['_output_out'];
|
|
47
|
+
|
|
48
|
+
export type inferSubscriptionOutput<
|
|
49
|
+
TRouter extends AnyRouter,
|
|
50
|
+
TPath extends keyof TRouter['_def']['subscriptions'] & string,
|
|
51
|
+
> = inferObservableValue<
|
|
52
|
+
inferProcedureOutput<TRouter['_def']['subscriptions'][TPath]>
|
|
53
|
+
>;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { Observable } from '../../observable';
|
|
1
2
|
import { AnyRouter, ProcedureType } from '../router';
|
|
2
|
-
import { Subscription } from '../subscription';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated
|
|
6
|
+
*/
|
|
4
7
|
export async function callProcedure<
|
|
5
8
|
TRouter extends AnyRouter<TContext>,
|
|
6
9
|
TContext,
|
|
@@ -10,7 +13,7 @@ export async function callProcedure<
|
|
|
10
13
|
router: TRouter;
|
|
11
14
|
ctx: TContext;
|
|
12
15
|
type: ProcedureType;
|
|
13
|
-
}): Promise<unknown |
|
|
16
|
+
}): Promise<unknown | Observable<TRouter, any>> {
|
|
14
17
|
const { type, path, input } = opts;
|
|
15
18
|
|
|
16
19
|
const caller = opts.router.createCaller(opts.ctx);
|
|
@@ -21,7 +24,10 @@ export async function callProcedure<
|
|
|
21
24
|
return caller.mutation(path, input as any);
|
|
22
25
|
}
|
|
23
26
|
if (type === 'subscription') {
|
|
24
|
-
const sub = (await caller.subscription(path, input as any)) as
|
|
27
|
+
const sub = (await caller.subscription(path, input as any)) as Observable<
|
|
28
|
+
any,
|
|
29
|
+
any
|
|
30
|
+
>;
|
|
25
31
|
return sub;
|
|
26
32
|
}
|
|
27
33
|
/* istanbul ignore next */
|