@trpc/server 10.0.0-alpha.2 → 10.0.0-alpha.22
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/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/express/index.d.ts +1 -0
- package/adapters/express/index.js +1 -0
- 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/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/next/index.d.ts +1 -0
- package/adapters/next/index.js +1 -0
- 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/node-http/index.d.ts +1 -0
- package/adapters/node-http/index.js +1 -0
- 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/standalone/index.d.ts +1 -0
- package/adapters/standalone/index.js +1 -0
- 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/adapters/ws/index.d.ts +1 -0
- package/adapters/ws/index.js +1 -0
- package/dist/TRPCError-7971540a.mjs +65 -0
- package/dist/TRPCError-ddec3395.js +69 -0
- package/dist/TRPCError.d.ts +11 -0
- package/dist/TRPCError.d.ts.map +1 -0
- package/dist/{declarations/src/adapters → adapters}/express.d.ts +5 -5
- package/dist/adapters/express.d.ts.map +1 -0
- package/dist/adapters/express.js +23 -0
- package/dist/adapters/express.mjs +19 -0
- package/dist/adapters/express.ts.js +1 -0
- 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/adapters/fastify/index.ts.js +1 -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/{declarations/src/adapters → adapters}/next.d.ts +5 -5
- package/dist/adapters/next.d.ts.map +1 -0
- package/dist/adapters/next.js +55 -0
- package/dist/adapters/next.mjs +51 -0
- package/dist/adapters/next.ts.js +1 -0
- package/dist/{declarations/src/adapters → adapters}/node-http/index.d.ts +2 -2
- package/dist/adapters/node-http/index.d.ts.map +1 -0
- package/dist/adapters/node-http/index.js +13 -0
- package/dist/adapters/node-http/index.mjs +5 -0
- package/dist/adapters/node-http/index.ts.js +1 -0
- package/dist/{declarations/src/adapters → adapters}/node-http/internals/getPostBody.d.ts +12 -12
- package/dist/adapters/node-http/internals/getPostBody.d.ts.map +1 -0
- package/dist/{declarations/src/adapters → adapters}/node-http/nodeHTTPRequestHandler.d.ts +9 -9
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -0
- package/dist/{declarations/src/adapters → adapters}/node-http/types.d.ts +31 -32
- package/dist/adapters/node-http/types.d.ts.map +1 -0
- package/dist/{declarations/src/adapters → adapters}/standalone.d.ts +13 -13
- package/dist/adapters/standalone.d.ts.map +1 -0
- package/dist/adapters/standalone.js +49 -0
- package/dist/adapters/standalone.mjs +40 -0
- package/dist/adapters/standalone.ts.js +1 -0
- package/dist/{declarations/src/adapters → adapters}/ws.d.ts +16 -16
- package/dist/adapters/ws.d.ts.map +1 -0
- package/dist/adapters/ws.js +384 -0
- package/dist/adapters/ws.mjs +380 -0
- package/dist/adapters/ws.ts.js +1 -0
- package/dist/{declarations/src/assertNotBrowser.d.ts → assertNotBrowser.d.ts} +1 -1
- package/dist/assertNotBrowser.d.ts.map +1 -0
- package/dist/{codes-e0df67c4.cjs.prod.js → envelopes-1deb2fa7.mjs} +19 -5
- package/dist/{codes-33cef953.cjs.dev.js → envelopes-a953b930.js} +18 -0
- package/dist/{declarations/src/http → http}/ResponseMeta.d.ts +4 -4
- package/dist/http/ResponseMeta.d.ts.map +1 -0
- package/dist/{declarations/src/http → http}/index.d.ts +2 -2
- package/dist/http/index.d.ts.map +1 -0
- package/dist/{declarations/src/http → http}/internals/getHTTPStatusCode.d.ts +21 -20
- package/dist/http/internals/getHTTPStatusCode.d.ts.map +1 -0
- package/dist/{declarations/src/http → http}/internals/types.d.ts +40 -39
- package/dist/http/internals/types.d.ts.map +1 -0
- package/dist/{declarations/src/http → http}/resolveHTTPResponse.d.ts +12 -12
- package/dist/http/resolveHTTPResponse.d.ts.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/{trpc-server.cjs.dev.js → index.js} +81 -107
- package/dist/{trpc-server.esm.js → index.mjs} +71 -91
- package/dist/index.ts.js +1 -0
- package/dist/{declarations/src/internals → internals}/BaseHandlerOptions.d.ts +12 -12
- package/dist/internals/BaseHandlerOptions.d.ts.map +1 -0
- package/dist/{declarations/src/internals → internals}/OnErrorFunction.d.ts +10 -10
- package/dist/internals/OnErrorFunction.d.ts.map +1 -0
- package/dist/{declarations/src/internals → internals}/callProcedure.d.ts +9 -9
- package/dist/internals/callProcedure.d.ts.map +1 -0
- package/dist/{declarations/src/internals → internals}/errors.d.ts +4 -3
- package/dist/internals/errors.d.ts.map +1 -0
- package/dist/{declarations/src/internals → internals}/invert.d.ts +8 -8
- package/dist/internals/invert.d.ts.map +1 -0
- package/dist/{declarations/src/internals → internals}/middlewares.d.ts +34 -33
- package/dist/internals/middlewares.d.ts.map +1 -0
- package/dist/internals/procedure.d.ts +87 -0
- package/dist/internals/procedure.d.ts.map +1 -0
- package/dist/internals/transformTRPCResponse.d.ts +9 -0
- package/dist/internals/transformTRPCResponse.d.ts.map +1 -0
- package/dist/nodeHTTPRequestHandler-1cdb6383.mjs +105 -0
- package/dist/nodeHTTPRequestHandler-848f07b5.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-2e6cc2d7.esm.js → resolveHTTPResponse-54a79e6c.mjs} +19 -126
- package/dist/{nodeHTTPRequestHandler-b7ff366e.cjs.dev.js → resolveHTTPResponse-ec3dccaa.js} +24 -132
- package/dist/router.d.ts +173 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/{declarations/src/rpc → rpc}/codes.d.ts +48 -46
- package/dist/rpc/codes.d.ts.map +1 -0
- package/dist/rpc/envelopes.d.ts +94 -0
- package/dist/rpc/envelopes.d.ts.map +1 -0
- package/dist/{declarations/src/rpc → rpc}/index.d.ts +2 -2
- package/dist/rpc/index.d.ts.map +1 -0
- package/dist/rpc/index.js +14 -0
- package/dist/rpc/index.mjs +1 -0
- package/dist/rpc/index.ts.js +1 -0
- package/dist/subscription.d.ts +9 -0
- package/dist/subscription.d.ts.map +1 -0
- package/dist/subscription.js +44 -0
- package/dist/subscription.mjs +40 -0
- package/dist/subscription.ts.js +1 -0
- package/dist/transformTRPCResponse-333bed6c.js +56 -0
- package/dist/transformTRPCResponse-e0cba527.mjs +53 -0
- package/dist/{declarations/src/transformer.d.ts → transformer.d.ts} +29 -29
- package/dist/transformer.d.ts.map +1 -0
- package/dist/{declarations/src/types.d.ts → types.d.ts} +40 -40
- package/dist/types.d.ts.map +1 -0
- package/observable/index.d.ts +1 -0
- package/observable/index.js +1 -0
- package/package.json +82 -26
- 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/rpc/index.d.ts +1 -0
- package/rpc/index.js +1 -0
- package/src/TRPCError.ts +5 -13
- package/src/adapters/express.ts +3 -3
- 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/next.ts +9 -7
- package/src/adapters/node-http/internals/getPostBody.test.ts +2 -1
- package/src/adapters/node-http/nodeHTTPRequestHandler.ts +5 -6
- package/src/adapters/node-http/types.ts +4 -5
- package/src/adapters/standalone.ts +11 -3
- package/src/adapters/ws.ts +122 -81
- package/src/assertNotBrowser.ts +1 -0
- package/src/http/internals/getHTTPStatusCode.ts +2 -1
- package/src/http/internals/types.ts +6 -7
- package/src/http/resolveHTTPResponse.ts +23 -27
- package/src/index.ts +1 -6
- package/src/internals/BaseHandlerOptions.ts +1 -1
- package/src/internals/OnErrorFunction.ts +1 -1
- package/src/internals/callProcedure.ts +6 -3
- package/src/internals/errors.ts +20 -4
- package/src/internals/middlewares.ts +3 -2
- package/src/internals/procedure.ts +213 -93
- package/src/internals/transformTRPCResponse.ts +20 -15
- 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 +75 -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/router.ts +171 -82
- package/src/rpc/codes.ts +1 -0
- package/src/rpc/envelopes.ts +87 -68
- package/src/subscription.ts +6 -124
- package/src/types.ts +7 -9
- package/adapters/express/package.json +0 -4
- package/adapters/next/package.json +0 -4
- package/adapters/node-http/package.json +0 -4
- package/adapters/standalone/package.json +0 -4
- package/adapters/ws/package.json +0 -4
- package/dist/codes-fe07bf82.esm.js +0 -56
- package/dist/declarations/src/TRPCError.d.ts +0 -19
- package/dist/declarations/src/TRPCError.d.ts.map +0 -1
- package/dist/declarations/src/adapters/express.d.ts.map +0 -1
- package/dist/declarations/src/adapters/next.d.ts.map +0 -1
- package/dist/declarations/src/adapters/node-http/index.d.ts.map +0 -1
- package/dist/declarations/src/adapters/node-http/internals/getPostBody.d.ts.map +0 -1
- package/dist/declarations/src/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +0 -1
- package/dist/declarations/src/adapters/node-http/types.d.ts.map +0 -1
- package/dist/declarations/src/adapters/standalone.d.ts.map +0 -1
- package/dist/declarations/src/adapters/ws.d.ts.map +0 -1
- package/dist/declarations/src/assertNotBrowser.d.ts.map +0 -1
- package/dist/declarations/src/deprecated/LegacyRouter.d.ts +0 -3
- package/dist/declarations/src/deprecated/LegacyRouter.d.ts.map +0 -1
- package/dist/declarations/src/deprecated/createHttpServer.d.ts +0 -19
- package/dist/declarations/src/deprecated/createHttpServer.d.ts.map +0 -1
- package/dist/declarations/src/deprecated/requestHandler.d.ts +0 -15
- package/dist/declarations/src/deprecated/requestHandler.d.ts.map +0 -1
- package/dist/declarations/src/http/ResponseMeta.d.ts.map +0 -1
- package/dist/declarations/src/http/index.d.ts.map +0 -1
- package/dist/declarations/src/http/internals/getHTTPStatusCode.d.ts.map +0 -1
- package/dist/declarations/src/http/internals/types.d.ts.map +0 -1
- package/dist/declarations/src/http/resolveHTTPResponse.d.ts.map +0 -1
- package/dist/declarations/src/index.d.ts +0 -10
- package/dist/declarations/src/index.d.ts.map +0 -1
- package/dist/declarations/src/internals/BaseHandlerOptions.d.ts.map +0 -1
- package/dist/declarations/src/internals/OnErrorFunction.d.ts.map +0 -1
- package/dist/declarations/src/internals/callProcedure.d.ts.map +0 -1
- package/dist/declarations/src/internals/errors.d.ts.map +0 -1
- package/dist/declarations/src/internals/invert.d.ts.map +0 -1
- package/dist/declarations/src/internals/middlewares.d.ts.map +0 -1
- package/dist/declarations/src/internals/procedure.d.ts +0 -74
- package/dist/declarations/src/internals/procedure.d.ts.map +0 -1
- package/dist/declarations/src/internals/transformTRPCResponse.d.ts +0 -7
- package/dist/declarations/src/internals/transformTRPCResponse.d.ts.map +0 -1
- package/dist/declarations/src/internals/wrapCallSafe.d.ts +0 -16
- package/dist/declarations/src/internals/wrapCallSafe.d.ts.map +0 -1
- package/dist/declarations/src/router.d.ts +0 -176
- package/dist/declarations/src/router.d.ts.map +0 -1
- package/dist/declarations/src/rpc/codes.d.ts.map +0 -1
- package/dist/declarations/src/rpc/envelopes.d.ts +0 -72
- package/dist/declarations/src/rpc/envelopes.d.ts.map +0 -1
- package/dist/declarations/src/rpc/index.d.ts.map +0 -1
- package/dist/declarations/src/subscription.d.ts +0 -58
- package/dist/declarations/src/subscription.d.ts.map +0 -1
- package/dist/declarations/src/transformer.d.ts.map +0 -1
- package/dist/declarations/src/types.d.ts.map +0 -1
- package/dist/declarations/src/ws/index.d.ts +0 -7
- package/dist/declarations/src/ws/index.d.ts.map +0 -1
- package/dist/nodeHTTPRequestHandler-7325b53f.cjs.prod.js +0 -399
- package/dist/subscription-b8831081.cjs.dev.js +0 -136
- package/dist/subscription-c2e0bfbc.cjs.prod.js +0 -136
- package/dist/subscription-fbda2888.esm.js +0 -133
- package/dist/transformTRPCResponse-8248515e.cjs.dev.js +0 -114
- package/dist/transformTRPCResponse-dcbf66c5.cjs.prod.js +0 -114
- package/dist/transformTRPCResponse-f73dc4a2.esm.js +0 -109
- package/dist/trpc-server.cjs.d.ts +0 -1
- package/dist/trpc-server.cjs.js +0 -7
- package/dist/trpc-server.cjs.prod.js +0 -528
- package/rpc/package.json +0 -4
- package/src/deprecated/LegacyRouter.ts +0 -3
- package/src/deprecated/createHttpServer.ts +0 -29
- package/src/deprecated/requestHandler.ts +0 -26
- 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/package.json +0 -4
package/src/adapters/ws.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { IncomingMessage } from 'http';
|
|
2
2
|
import ws from 'ws';
|
|
3
|
+
import { TRPCError } from '../TRPCError';
|
|
3
4
|
import { BaseHandlerOptions } from '../internals/BaseHandlerOptions';
|
|
4
5
|
import { callProcedure } from '../internals/callProcedure';
|
|
5
|
-
import { getErrorFromUnknown } from '../internals/errors';
|
|
6
|
+
import { getCauseFromUnknown, getErrorFromUnknown } from '../internals/errors';
|
|
6
7
|
import { transformTRPCResponse } from '../internals/transformTRPCResponse';
|
|
7
|
-
import {
|
|
8
|
+
import { Unsubscribable, isObservable } from '../observable';
|
|
9
|
+
import { AnyRouter, ProcedureType, inferRouterContext } from '../router';
|
|
8
10
|
import {
|
|
9
|
-
|
|
11
|
+
JSONRPC2,
|
|
12
|
+
TRPCClientOutgoingMessage,
|
|
10
13
|
TRPCReconnectNotification,
|
|
11
|
-
|
|
12
|
-
TRPCResponse,
|
|
14
|
+
TRPCResponseMessage,
|
|
13
15
|
} from '../rpc';
|
|
14
|
-
import { Subscription } from '../subscription';
|
|
15
16
|
import { CombinedDataTransformer } from '../transformer';
|
|
16
|
-
import { TRPCError } from '../TRPCError';
|
|
17
17
|
import { NodeHTTPCreateContextOption } from './node-http';
|
|
18
18
|
|
|
19
19
|
/* istanbul ignore next */
|
|
@@ -58,7 +58,7 @@ function assertIsJSONRPC2OrUndefined(
|
|
|
58
58
|
function parseMessage(
|
|
59
59
|
obj: unknown,
|
|
60
60
|
transformer: CombinedDataTransformer,
|
|
61
|
-
):
|
|
61
|
+
): TRPCClientOutgoingMessage {
|
|
62
62
|
assertIsObject(obj);
|
|
63
63
|
const { method, params, id, jsonrpc } = obj;
|
|
64
64
|
assertIsRequestId(id);
|
|
@@ -66,8 +66,8 @@ function parseMessage(
|
|
|
66
66
|
if (method === 'subscription.stop') {
|
|
67
67
|
return {
|
|
68
68
|
id,
|
|
69
|
+
jsonrpc,
|
|
69
70
|
method,
|
|
70
|
-
params: undefined,
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
73
|
assertIsProcedureType(method);
|
|
@@ -76,7 +76,15 @@ function parseMessage(
|
|
|
76
76
|
const { input: rawInput, path } = params;
|
|
77
77
|
assertIsString(path);
|
|
78
78
|
const input = transformer.input.deserialize(rawInput);
|
|
79
|
-
return {
|
|
79
|
+
return {
|
|
80
|
+
id,
|
|
81
|
+
jsonrpc,
|
|
82
|
+
method,
|
|
83
|
+
params: {
|
|
84
|
+
input,
|
|
85
|
+
path,
|
|
86
|
+
},
|
|
87
|
+
};
|
|
80
88
|
}
|
|
81
89
|
|
|
82
90
|
/**
|
|
@@ -84,11 +92,11 @@ function parseMessage(
|
|
|
84
92
|
*/
|
|
85
93
|
export type WSSHandlerOptions<TRouter extends AnyRouter> = BaseHandlerOptions<
|
|
86
94
|
TRouter,
|
|
87
|
-
|
|
95
|
+
IncomingMessage
|
|
88
96
|
> & {
|
|
89
97
|
wss: ws.Server;
|
|
90
98
|
process?: NodeJS.Process;
|
|
91
|
-
} & NodeHTTPCreateContextOption<TRouter,
|
|
99
|
+
} & NodeHTTPCreateContextOption<TRouter, IncomingMessage, ws>;
|
|
92
100
|
|
|
93
101
|
export function applyWSSHandler<TRouter extends AnyRouter>(
|
|
94
102
|
opts: WSSHandlerOptions<TRouter>,
|
|
@@ -96,22 +104,35 @@ export function applyWSSHandler<TRouter extends AnyRouter>(
|
|
|
96
104
|
const { wss, createContext, router } = opts;
|
|
97
105
|
|
|
98
106
|
const { transformer } = router._def;
|
|
99
|
-
wss.on('connection', (client, req) => {
|
|
100
|
-
const clientSubscriptions = new Map<
|
|
101
|
-
number | string,
|
|
102
|
-
Subscription<TRouter>
|
|
103
|
-
>();
|
|
107
|
+
wss.on('connection', async (client, req) => {
|
|
108
|
+
const clientSubscriptions = new Map<number | string, Unsubscribable>();
|
|
104
109
|
|
|
105
|
-
function respond(untransformedJSON:
|
|
110
|
+
function respond(untransformedJSON: TRPCResponseMessage) {
|
|
106
111
|
client.send(
|
|
107
112
|
JSON.stringify(transformTRPCResponse(router, untransformedJSON)),
|
|
108
113
|
);
|
|
109
114
|
}
|
|
115
|
+
|
|
116
|
+
function stopSubscription(
|
|
117
|
+
subscription: Unsubscribable,
|
|
118
|
+
{ id, jsonrpc }: { id: JSONRPC2.RequestId } & JSONRPC2.BaseEnvelope,
|
|
119
|
+
) {
|
|
120
|
+
subscription.unsubscribe();
|
|
121
|
+
|
|
122
|
+
respond({
|
|
123
|
+
id,
|
|
124
|
+
jsonrpc,
|
|
125
|
+
result: {
|
|
126
|
+
type: 'stopped',
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
|
|
110
131
|
const ctxPromise = createContext?.({ req, res: client });
|
|
111
132
|
let ctx: inferRouterContext<TRouter> | undefined = undefined;
|
|
112
133
|
|
|
113
|
-
async function handleRequest(msg:
|
|
114
|
-
const { id } = msg;
|
|
134
|
+
async function handleRequest(msg: TRPCClientOutgoingMessage) {
|
|
135
|
+
const { id, jsonrpc } = msg;
|
|
115
136
|
/* istanbul ignore next */
|
|
116
137
|
if (id === null) {
|
|
117
138
|
throw new TRPCError({
|
|
@@ -122,7 +143,7 @@ export function applyWSSHandler<TRouter extends AnyRouter>(
|
|
|
122
143
|
if (msg.method === 'subscription.stop') {
|
|
123
144
|
const sub = clientSubscriptions.get(id);
|
|
124
145
|
if (sub) {
|
|
125
|
-
sub
|
|
146
|
+
stopSubscription(sub, { id, jsonrpc });
|
|
126
147
|
}
|
|
127
148
|
clientSubscriptions.delete(id);
|
|
128
149
|
return;
|
|
@@ -139,9 +160,18 @@ export function applyWSSHandler<TRouter extends AnyRouter>(
|
|
|
139
160
|
ctx,
|
|
140
161
|
});
|
|
141
162
|
|
|
142
|
-
if (
|
|
163
|
+
if (type === 'subscription') {
|
|
164
|
+
if (!isObservable(result)) {
|
|
165
|
+
throw new TRPCError({
|
|
166
|
+
message: `Subscription ${path} did not return an observable`,
|
|
167
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
} else {
|
|
171
|
+
// send the value as data if the method is not a subscription
|
|
143
172
|
respond({
|
|
144
173
|
id,
|
|
174
|
+
jsonrpc,
|
|
145
175
|
result: {
|
|
146
176
|
type: 'data',
|
|
147
177
|
data: result,
|
|
@@ -150,86 +180,98 @@ export function applyWSSHandler<TRouter extends AnyRouter>(
|
|
|
150
180
|
return;
|
|
151
181
|
}
|
|
152
182
|
|
|
153
|
-
const
|
|
183
|
+
const observable = result;
|
|
184
|
+
const sub = observable.subscribe({
|
|
185
|
+
next(data) {
|
|
186
|
+
respond({
|
|
187
|
+
id,
|
|
188
|
+
jsonrpc,
|
|
189
|
+
result: {
|
|
190
|
+
type: 'data',
|
|
191
|
+
data,
|
|
192
|
+
},
|
|
193
|
+
});
|
|
194
|
+
},
|
|
195
|
+
error(err) {
|
|
196
|
+
const error = getErrorFromUnknown(err);
|
|
197
|
+
opts.onError?.({ error, path, type, ctx, req, input });
|
|
198
|
+
respond({
|
|
199
|
+
id,
|
|
200
|
+
jsonrpc,
|
|
201
|
+
error: router.getErrorShape({
|
|
202
|
+
error,
|
|
203
|
+
type,
|
|
204
|
+
path,
|
|
205
|
+
input,
|
|
206
|
+
ctx,
|
|
207
|
+
}),
|
|
208
|
+
});
|
|
209
|
+
},
|
|
210
|
+
complete() {
|
|
211
|
+
respond({
|
|
212
|
+
id,
|
|
213
|
+
jsonrpc,
|
|
214
|
+
result: {
|
|
215
|
+
type: 'stopped',
|
|
216
|
+
},
|
|
217
|
+
});
|
|
218
|
+
},
|
|
219
|
+
});
|
|
154
220
|
/* istanbul ignore next */
|
|
155
221
|
if (client.readyState !== client.OPEN) {
|
|
156
222
|
// if the client got disconnected whilst initializing the subscription
|
|
157
|
-
|
|
223
|
+
// no need to send stopped message if the client is disconnected
|
|
224
|
+
sub.unsubscribe();
|
|
158
225
|
return;
|
|
159
226
|
}
|
|
227
|
+
|
|
160
228
|
/* istanbul ignore next */
|
|
161
229
|
if (clientSubscriptions.has(id)) {
|
|
162
230
|
// duplicate request ids for client
|
|
163
|
-
sub
|
|
231
|
+
stopSubscription(sub, { id, jsonrpc });
|
|
164
232
|
throw new TRPCError({
|
|
165
233
|
message: `Duplicate id ${id}`,
|
|
166
234
|
code: 'BAD_REQUEST',
|
|
167
235
|
});
|
|
168
236
|
}
|
|
169
237
|
clientSubscriptions.set(id, sub);
|
|
170
|
-
sub.on('data', (data: unknown) => {
|
|
171
|
-
respond({
|
|
172
|
-
id,
|
|
173
|
-
result: {
|
|
174
|
-
type: 'data',
|
|
175
|
-
data,
|
|
176
|
-
},
|
|
177
|
-
});
|
|
178
|
-
});
|
|
179
|
-
sub.on('error', (_error: unknown) => {
|
|
180
|
-
const error = getErrorFromUnknown(_error);
|
|
181
|
-
const json: TRPCErrorResponse = {
|
|
182
|
-
id,
|
|
183
|
-
error: router.getErrorShape({
|
|
184
|
-
error,
|
|
185
|
-
type,
|
|
186
|
-
path,
|
|
187
|
-
input,
|
|
188
|
-
ctx,
|
|
189
|
-
}),
|
|
190
|
-
};
|
|
191
|
-
opts.onError?.({ error, path, type, ctx, req, input });
|
|
192
|
-
respond(json);
|
|
193
|
-
});
|
|
194
|
-
sub.on('destroy', () => {
|
|
195
|
-
respond({
|
|
196
|
-
id,
|
|
197
|
-
result: {
|
|
198
|
-
type: 'stopped',
|
|
199
|
-
},
|
|
200
|
-
});
|
|
201
|
-
});
|
|
202
238
|
|
|
203
239
|
respond({
|
|
204
240
|
id,
|
|
241
|
+
jsonrpc,
|
|
205
242
|
result: {
|
|
206
243
|
type: 'started',
|
|
207
244
|
},
|
|
208
245
|
});
|
|
209
|
-
await sub.start();
|
|
210
246
|
} catch (cause) /* istanbul ignore next */ {
|
|
211
247
|
// procedure threw an error
|
|
212
248
|
const error = getErrorFromUnknown(cause);
|
|
213
|
-
const json = router.getErrorShape({
|
|
214
|
-
error,
|
|
215
|
-
type,
|
|
216
|
-
path,
|
|
217
|
-
input,
|
|
218
|
-
ctx,
|
|
219
|
-
});
|
|
220
249
|
opts.onError?.({ error, path, type, ctx, req, input });
|
|
221
|
-
respond({
|
|
250
|
+
respond({
|
|
251
|
+
id,
|
|
252
|
+
jsonrpc,
|
|
253
|
+
error: router.getErrorShape({
|
|
254
|
+
error,
|
|
255
|
+
type,
|
|
256
|
+
path,
|
|
257
|
+
input,
|
|
258
|
+
ctx,
|
|
259
|
+
}),
|
|
260
|
+
});
|
|
222
261
|
}
|
|
223
262
|
}
|
|
224
263
|
client.on('message', async (message) => {
|
|
225
264
|
try {
|
|
226
265
|
const msgJSON: unknown = JSON.parse(message.toString());
|
|
227
266
|
const msgs: unknown[] = Array.isArray(msgJSON) ? msgJSON : [msgJSON];
|
|
228
|
-
|
|
267
|
+
const promises = msgs
|
|
268
|
+
.map((raw) => parseMessage(raw, transformer))
|
|
269
|
+
.map(handleRequest);
|
|
270
|
+
await Promise.all(promises);
|
|
229
271
|
} catch (cause) {
|
|
230
272
|
const error = new TRPCError({
|
|
231
273
|
code: 'PARSE_ERROR',
|
|
232
|
-
cause,
|
|
274
|
+
cause: getCauseFromUnknown(cause),
|
|
233
275
|
});
|
|
234
276
|
|
|
235
277
|
respond({
|
|
@@ -247,7 +289,7 @@ export function applyWSSHandler<TRouter extends AnyRouter>(
|
|
|
247
289
|
|
|
248
290
|
client.once('close', () => {
|
|
249
291
|
for (const sub of clientSubscriptions.values()) {
|
|
250
|
-
sub.
|
|
292
|
+
sub.unsubscribe();
|
|
251
293
|
}
|
|
252
294
|
clientSubscriptions.clear();
|
|
253
295
|
});
|
|
@@ -256,7 +298,15 @@ export function applyWSSHandler<TRouter extends AnyRouter>(
|
|
|
256
298
|
ctx = await ctxPromise;
|
|
257
299
|
} catch (cause) {
|
|
258
300
|
const error = getErrorFromUnknown(cause);
|
|
259
|
-
|
|
301
|
+
opts.onError?.({
|
|
302
|
+
error,
|
|
303
|
+
path: undefined,
|
|
304
|
+
type: 'unknown',
|
|
305
|
+
ctx,
|
|
306
|
+
req,
|
|
307
|
+
input: undefined,
|
|
308
|
+
});
|
|
309
|
+
respond({
|
|
260
310
|
id: null,
|
|
261
311
|
error: router.getErrorShape({
|
|
262
312
|
error,
|
|
@@ -265,16 +315,7 @@ export function applyWSSHandler<TRouter extends AnyRouter>(
|
|
|
265
315
|
input: undefined,
|
|
266
316
|
ctx,
|
|
267
317
|
}),
|
|
268
|
-
};
|
|
269
|
-
opts.onError?.({
|
|
270
|
-
error,
|
|
271
|
-
path: undefined,
|
|
272
|
-
type: 'unknown',
|
|
273
|
-
ctx,
|
|
274
|
-
req,
|
|
275
|
-
input: undefined,
|
|
276
318
|
});
|
|
277
|
-
respond(json);
|
|
278
319
|
|
|
279
320
|
// close in next tick
|
|
280
321
|
(global.setImmediate ?? global.setTimeout)(() => {
|
|
@@ -282,7 +323,7 @@ export function applyWSSHandler<TRouter extends AnyRouter>(
|
|
|
282
323
|
});
|
|
283
324
|
}
|
|
284
325
|
}
|
|
285
|
-
createContextAsync();
|
|
326
|
+
await createContextAsync();
|
|
286
327
|
});
|
|
287
328
|
|
|
288
329
|
return {
|
package/src/assertNotBrowser.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { TRPCResponse, TRPC_ERROR_CODES_BY_KEY } from '../../rpc';
|
|
2
1
|
import { TRPCError } from '../../TRPCError';
|
|
3
2
|
import { invert } from '../../internals/invert';
|
|
3
|
+
import { TRPCResponse, TRPC_ERROR_CODES_BY_KEY } from '../../rpc';
|
|
4
4
|
|
|
5
5
|
export const TRPC_ERROR_CODES_BY_NUMBER = invert(TRPC_ERROR_CODES_BY_KEY);
|
|
6
6
|
type ValueOf<T> = T[keyof T];
|
|
@@ -17,6 +17,7 @@ const JSONRPC2_TO_HTTP_CODE: Record<
|
|
|
17
17
|
UNAUTHORIZED: 401,
|
|
18
18
|
FORBIDDEN: 403,
|
|
19
19
|
TIMEOUT: 408,
|
|
20
|
+
CONFLICT: 409,
|
|
20
21
|
CLIENT_CLOSED_REQUEST: 499,
|
|
21
22
|
PRECONDITION_FAILED: 412,
|
|
22
23
|
PAYLOAD_TOO_LARGE: 413,
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
+
import { TRPCError } from '../../TRPCError';
|
|
2
|
+
import { BaseHandlerOptions } from '../../internals/BaseHandlerOptions';
|
|
1
3
|
import {
|
|
2
4
|
AnyRouter,
|
|
3
|
-
|
|
5
|
+
ProcedureType,
|
|
4
6
|
inferRouterContext,
|
|
5
7
|
inferRouterError,
|
|
6
|
-
|
|
7
|
-
ResponseMeta,
|
|
8
|
-
TRPCError,
|
|
9
|
-
} from '@trpc/server';
|
|
10
|
-
import { URLSearchParams } from 'url';
|
|
11
|
-
import { BaseHandlerOptions } from '../../internals/BaseHandlerOptions';
|
|
8
|
+
} from '../../router';
|
|
12
9
|
import { TRPCResponse } from '../../rpc';
|
|
10
|
+
import { Dict } from '../../types';
|
|
11
|
+
import { ResponseMeta } from '../ResponseMeta';
|
|
13
12
|
|
|
14
13
|
export type HTTPHeaders = Dict<string | string[]>;
|
|
15
14
|
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
2
|
-
import {
|
|
2
|
+
import { TRPCError } from '../TRPCError';
|
|
3
3
|
import { callProcedure } from '../internals/callProcedure';
|
|
4
|
-
import { getErrorFromUnknown } from '../internals/errors';
|
|
4
|
+
import { getCauseFromUnknown, getErrorFromUnknown } from '../internals/errors';
|
|
5
5
|
import { transformTRPCResponse } from '../internals/transformTRPCResponse';
|
|
6
6
|
import {
|
|
7
7
|
AnyRouter,
|
|
8
|
+
ProcedureType,
|
|
8
9
|
inferRouterContext,
|
|
9
10
|
inferRouterError,
|
|
10
|
-
ProcedureType,
|
|
11
11
|
} from '../router';
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
12
|
+
import { TRPCResponse } from '../rpc';
|
|
13
|
+
import { Maybe } from '../types';
|
|
14
14
|
import { getHTTPStatusCode } from './internals/getHTTPStatusCode';
|
|
15
15
|
import {
|
|
16
|
+
HTTPBaseHandlerOptions,
|
|
16
17
|
HTTPHeaders,
|
|
17
18
|
HTTPRequest,
|
|
18
19
|
HTTPResponse,
|
|
19
|
-
HTTPBaseHandlerOptions,
|
|
20
20
|
} from './internals/types';
|
|
21
21
|
|
|
22
22
|
const HTTP_METHOD_PROCEDURE_TYPE_MAP: Record<
|
|
@@ -37,10 +37,10 @@ function getRawProcedureInputOrThrow(req: HTTPRequest) {
|
|
|
37
37
|
return JSON.parse(raw!);
|
|
38
38
|
}
|
|
39
39
|
return typeof req.body === 'string' ? JSON.parse(req.body) : req.body;
|
|
40
|
-
} catch (
|
|
40
|
+
} catch (err) {
|
|
41
41
|
throw new TRPCError({
|
|
42
42
|
code: 'PARSE_ERROR',
|
|
43
|
-
cause,
|
|
43
|
+
cause: getCauseFromUnknown(err),
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
}
|
|
@@ -196,12 +196,11 @@ export async function resolveHTTPResponse<
|
|
|
196
196
|
}),
|
|
197
197
|
);
|
|
198
198
|
const errors = rawResults.flatMap((obj) => (obj.error ? [obj.error] : []));
|
|
199
|
-
const resultEnvelopes = rawResults.map((obj) => {
|
|
199
|
+
const resultEnvelopes = rawResults.map((obj): TRouterResponse => {
|
|
200
200
|
const { path, input } = obj;
|
|
201
201
|
|
|
202
202
|
if (obj.error) {
|
|
203
|
-
|
|
204
|
-
id: null,
|
|
203
|
+
return {
|
|
205
204
|
error: router.getErrorShape({
|
|
206
205
|
error: obj.error,
|
|
207
206
|
type,
|
|
@@ -210,16 +209,12 @@ export async function resolveHTTPResponse<
|
|
|
210
209
|
ctx,
|
|
211
210
|
}),
|
|
212
211
|
};
|
|
213
|
-
return json;
|
|
214
212
|
} else {
|
|
215
|
-
|
|
216
|
-
id: null,
|
|
213
|
+
return {
|
|
217
214
|
result: {
|
|
218
|
-
type: 'data',
|
|
219
215
|
data: obj.data,
|
|
220
216
|
},
|
|
221
217
|
};
|
|
222
|
-
return json;
|
|
223
218
|
}
|
|
224
219
|
});
|
|
225
220
|
|
|
@@ -233,16 +228,6 @@ export async function resolveHTTPResponse<
|
|
|
233
228
|
// - input deserialization fails
|
|
234
229
|
const error = getErrorFromUnknown(cause);
|
|
235
230
|
|
|
236
|
-
const json: TRPCErrorResponse<TRouterError> = {
|
|
237
|
-
id: null,
|
|
238
|
-
error: router.getErrorShape({
|
|
239
|
-
error,
|
|
240
|
-
type,
|
|
241
|
-
path: undefined,
|
|
242
|
-
input: undefined,
|
|
243
|
-
ctx,
|
|
244
|
-
}),
|
|
245
|
-
};
|
|
246
231
|
onError?.({
|
|
247
232
|
error,
|
|
248
233
|
path: undefined,
|
|
@@ -251,6 +236,17 @@ export async function resolveHTTPResponse<
|
|
|
251
236
|
type: type,
|
|
252
237
|
req,
|
|
253
238
|
});
|
|
254
|
-
return endResponse(
|
|
239
|
+
return endResponse(
|
|
240
|
+
{
|
|
241
|
+
error: router.getErrorShape({
|
|
242
|
+
error,
|
|
243
|
+
type,
|
|
244
|
+
path: undefined,
|
|
245
|
+
input: undefined,
|
|
246
|
+
ctx,
|
|
247
|
+
}),
|
|
248
|
+
},
|
|
249
|
+
[error],
|
|
250
|
+
);
|
|
255
251
|
}
|
|
256
252
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
export * from './assertNotBrowser';
|
|
2
2
|
export * from './http';
|
|
3
|
-
export * from './subscription';
|
|
4
3
|
export * from './transformer';
|
|
5
4
|
export * from './TRPCError';
|
|
6
5
|
export * from './types';
|
|
7
|
-
|
|
8
|
-
// deprecated
|
|
9
|
-
export * from './deprecated/createHttpServer';
|
|
10
|
-
export * from './deprecated/requestHandler';
|
|
11
|
-
export * from './deprecated/LegacyRouter';
|
|
6
|
+
export * from './router';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AnyRouter, inferRouterContext, ProcedureType } from '../router';
|
|
2
1
|
import { TRPCError } from '../TRPCError';
|
|
2
|
+
import { AnyRouter, ProcedureType, inferRouterContext } from '../router';
|
|
3
3
|
|
|
4
4
|
export type OnErrorFunction<TRouter extends AnyRouter, TRequest> = (opts: {
|
|
5
5
|
error: TRPCError;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { Observable } from '../observable';
|
|
1
2
|
import { AnyRouter, ProcedureType } from '../router';
|
|
2
|
-
import { Subscription } from '../subscription';
|
|
3
3
|
|
|
4
4
|
export async function callProcedure<
|
|
5
5
|
TRouter extends AnyRouter<TContext>,
|
|
@@ -10,7 +10,7 @@ export async function callProcedure<
|
|
|
10
10
|
router: TRouter;
|
|
11
11
|
ctx: TContext;
|
|
12
12
|
type: ProcedureType;
|
|
13
|
-
}): Promise<unknown |
|
|
13
|
+
}): Promise<unknown | Observable<TRouter, any>> {
|
|
14
14
|
const { type, path, input } = opts;
|
|
15
15
|
|
|
16
16
|
const caller = opts.router.createCaller(opts.ctx);
|
|
@@ -21,7 +21,10 @@ export async function callProcedure<
|
|
|
21
21
|
return caller.mutation(path, input as any);
|
|
22
22
|
}
|
|
23
23
|
if (type === 'subscription') {
|
|
24
|
-
const sub = (await caller.subscription(path, input as any)) as
|
|
24
|
+
const sub = (await caller.subscription(path, input as any)) as Observable<
|
|
25
|
+
any,
|
|
26
|
+
any
|
|
27
|
+
>;
|
|
25
28
|
return sub;
|
|
26
29
|
}
|
|
27
30
|
/* istanbul ignore next */
|
package/src/internals/errors.ts
CHANGED
|
@@ -20,14 +20,30 @@ export function getErrorFromUnknown(cause: unknown): TRPCError {
|
|
|
20
20
|
if (cause instanceof Error && cause.name === 'TRPCError') {
|
|
21
21
|
return cause as TRPCError;
|
|
22
22
|
}
|
|
23
|
+
|
|
24
|
+
let errorCause: Error | undefined = undefined;
|
|
25
|
+
let stack: string | undefined = undefined;
|
|
26
|
+
|
|
27
|
+
if (cause instanceof Error) {
|
|
28
|
+
errorCause = cause;
|
|
29
|
+
// take stack trace from cause
|
|
30
|
+
stack = cause.stack;
|
|
31
|
+
}
|
|
32
|
+
|
|
23
33
|
const err = new TRPCError({
|
|
24
34
|
code: 'INTERNAL_SERVER_ERROR',
|
|
25
|
-
cause,
|
|
35
|
+
cause: errorCause,
|
|
26
36
|
});
|
|
27
37
|
|
|
28
|
-
|
|
38
|
+
err.stack = stack;
|
|
39
|
+
|
|
40
|
+
return err;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function getCauseFromUnknown(cause: unknown) {
|
|
29
44
|
if (cause instanceof Error) {
|
|
30
|
-
|
|
45
|
+
return cause;
|
|
31
46
|
}
|
|
32
|
-
|
|
47
|
+
|
|
48
|
+
return undefined;
|
|
33
49
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ProcedureType } from '../router';
|
|
2
1
|
import { TRPCError } from '../TRPCError';
|
|
2
|
+
import { ProcedureType } from '../router';
|
|
3
3
|
|
|
4
4
|
export const middlewareMarker = Symbol('middlewareMarker');
|
|
5
5
|
interface MiddlewareResultBase<TContext> {
|
|
@@ -27,11 +27,12 @@ export type MiddlewareResult<TContext> =
|
|
|
27
27
|
| MiddlewareOKResult<TContext>
|
|
28
28
|
| MiddlewareErrorResult<TContext>;
|
|
29
29
|
|
|
30
|
-
export type MiddlewareFunction<TInputContext, TContext> = (opts: {
|
|
30
|
+
export type MiddlewareFunction<TInputContext, TContext, TMeta> = (opts: {
|
|
31
31
|
ctx: TInputContext;
|
|
32
32
|
type: ProcedureType;
|
|
33
33
|
path: string;
|
|
34
34
|
rawInput: unknown;
|
|
35
|
+
meta?: TMeta;
|
|
35
36
|
next: {
|
|
36
37
|
(): Promise<MiddlewareResult<TInputContext>>;
|
|
37
38
|
<T>(opts: { ctx: T }): Promise<MiddlewareResult<T>>;
|