@trpc/server 10.0.0-alpha.3 → 10.0.0-alpha.32
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 +87 -0
- package/dist/core/initTRPC.d.ts.map +1 -0
- package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts +282 -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 +103 -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 +87 -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 +80 -0
- package/dist/core/procedure.d.ts.map +1 -0
- package/dist/core/router.d.ts +114 -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 +34 -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 +800 -105
- package/dist/index.mjs +789 -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 +25 -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 +386 -0
- package/src/core/internals/config.ts +43 -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 +184 -0
- package/src/core/internals/utils.ts +64 -0
- package/src/core/middleware.ts +96 -0
- package/src/core/parser.ts +45 -0
- package/src/core/procedure.ts +108 -0
- package/src/core/router.ts +365 -0
- package/src/core/types.ts +54 -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 +229 -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 +28 -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
package/dist/index.mjs
CHANGED
|
@@ -1,88 +1,116 @@
|
|
|
1
|
-
import { a as assertNotBrowser,
|
|
2
|
-
export { a as assertNotBrowser, r as resolveHTTPResponse } from './
|
|
3
|
-
|
|
4
|
-
import { T as TRPCError, g as getErrorFromUnknown } from './
|
|
5
|
-
export { T as TRPCError } from './
|
|
6
|
-
import
|
|
7
|
-
import { T as TRPC_ERROR_CODES_BY_KEY } from './codes-7a3d4f65.mjs';
|
|
8
|
-
import 'url';
|
|
9
|
-
import 'events';
|
|
10
|
-
import 'http';
|
|
1
|
+
import { a as assertNotBrowser, g as getHTTPStatusCodeFromError } from './resolveHTTPResponse-8657b8de.mjs';
|
|
2
|
+
export { a as assertNotBrowser, r as resolveHTTPResponse } from './resolveHTTPResponse-8657b8de.mjs';
|
|
3
|
+
import { T as TRPC_ERROR_CODES_BY_KEY } from './envelopes-af8c2959.mjs';
|
|
4
|
+
import { T as TRPCError, g as getCauseFromUnknown, a as getErrorFromUnknown } from './TRPCError-b7fa0c31.mjs';
|
|
5
|
+
export { T as TRPCError } from './TRPCError-b7fa0c31.mjs';
|
|
6
|
+
import './transformTRPCResponse-747b9a68.mjs';
|
|
11
7
|
|
|
12
8
|
assertNotBrowser();
|
|
13
9
|
|
|
14
|
-
|
|
10
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
15
11
|
|
|
16
12
|
/**
|
|
17
|
-
* @
|
|
13
|
+
* @public
|
|
18
14
|
*/
|
|
19
|
-
|
|
15
|
+
|
|
20
16
|
/**
|
|
21
|
-
* @
|
|
17
|
+
* @public
|
|
22
18
|
*/
|
|
23
19
|
|
|
24
|
-
const createHttpHandler = createHTTPHandler;
|
|
25
20
|
/**
|
|
26
|
-
* @
|
|
21
|
+
* @public
|
|
27
22
|
*/
|
|
28
23
|
|
|
29
24
|
/**
|
|
30
|
-
* @
|
|
25
|
+
* @public
|
|
31
26
|
*/
|
|
32
|
-
|
|
27
|
+
|
|
33
28
|
/**
|
|
34
|
-
* @
|
|
29
|
+
* @public
|
|
35
30
|
*/
|
|
36
31
|
|
|
37
|
-
const middlewareMarker = /*#__PURE__*/Symbol('middlewareMarker');
|
|
38
|
-
|
|
39
32
|
/**
|
|
40
|
-
*
|
|
41
|
-
* Returns a discriminated union
|
|
33
|
+
* @internal
|
|
42
34
|
*/
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return {
|
|
47
|
-
ok: true,
|
|
48
|
-
data
|
|
49
|
-
};
|
|
50
|
-
} catch (cause) {
|
|
51
|
-
return {
|
|
52
|
-
ok: false,
|
|
53
|
-
error: cause
|
|
54
|
-
};
|
|
35
|
+
function getDataTransformer$1(transformer) {
|
|
36
|
+
if ('input' in transformer) {
|
|
37
|
+
return transformer;
|
|
55
38
|
}
|
|
39
|
+
|
|
40
|
+
return {
|
|
41
|
+
input: transformer,
|
|
42
|
+
output: transformer
|
|
43
|
+
};
|
|
56
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* @internal
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @internal
|
|
51
|
+
*/
|
|
52
|
+
const defaultTransformer = {
|
|
53
|
+
_default: true,
|
|
54
|
+
input: {
|
|
55
|
+
serialize: obj => obj,
|
|
56
|
+
deserialize: obj => obj
|
|
57
|
+
},
|
|
58
|
+
output: {
|
|
59
|
+
serialize: obj => obj,
|
|
60
|
+
deserialize: obj => obj
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* @internal
|
|
66
|
+
*/
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* @internal
|
|
70
|
+
*/
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* @internal
|
|
74
|
+
*/
|
|
75
|
+
const defaultFormatter = ({
|
|
76
|
+
shape
|
|
77
|
+
}) => {
|
|
78
|
+
return shape;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* @deprecated
|
|
83
|
+
*/
|
|
84
|
+
const middlewareMarker$1 = 'middlewareMarker';
|
|
57
85
|
|
|
58
86
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
59
87
|
assertNotBrowser();
|
|
60
88
|
|
|
61
|
-
function getParseFn(
|
|
62
|
-
const parser =
|
|
89
|
+
function getParseFn$1(procedureParser) {
|
|
90
|
+
const parser = procedureParser;
|
|
63
91
|
|
|
64
92
|
if (typeof parser === 'function') {
|
|
65
|
-
//
|
|
93
|
+
// ProcedureParserCustomValidatorEsque
|
|
66
94
|
return parser;
|
|
67
95
|
}
|
|
68
96
|
|
|
69
97
|
if (typeof parser.parseAsync === 'function') {
|
|
70
|
-
//
|
|
98
|
+
// ProcedureParserZodEsque
|
|
71
99
|
return parser.parseAsync.bind(parser);
|
|
72
100
|
}
|
|
73
101
|
|
|
74
102
|
if (typeof parser.parse === 'function') {
|
|
75
|
-
//
|
|
103
|
+
// ProcedureParserZodEsque
|
|
76
104
|
return parser.parse.bind(parser);
|
|
77
105
|
}
|
|
78
106
|
|
|
79
107
|
if (typeof parser.validateSync === 'function') {
|
|
80
|
-
//
|
|
108
|
+
// ProcedureParserYupEsque
|
|
81
109
|
return parser.validateSync.bind(parser);
|
|
82
110
|
}
|
|
83
111
|
|
|
84
112
|
if (typeof parser.create === 'function') {
|
|
85
|
-
//
|
|
113
|
+
// ProcedureParserSuperstructEsque
|
|
86
114
|
return parser.create.bind(parser);
|
|
87
115
|
}
|
|
88
116
|
|
|
@@ -90,6 +118,7 @@ function getParseFn(inputParser) {
|
|
|
90
118
|
}
|
|
91
119
|
/**
|
|
92
120
|
* @internal
|
|
121
|
+
* @deprecated
|
|
93
122
|
*/
|
|
94
123
|
|
|
95
124
|
|
|
@@ -98,25 +127,53 @@ class Procedure {
|
|
|
98
127
|
this.middlewares = void 0;
|
|
99
128
|
this.resolver = void 0;
|
|
100
129
|
this.inputParser = void 0;
|
|
101
|
-
this.
|
|
130
|
+
this.parseInputFn = void 0;
|
|
131
|
+
this.outputParser = void 0;
|
|
132
|
+
this.parseOutputFn = void 0;
|
|
133
|
+
this.meta = void 0;
|
|
102
134
|
this.middlewares = opts.middlewares;
|
|
103
135
|
this.resolver = opts.resolver;
|
|
104
136
|
this.inputParser = opts.inputParser;
|
|
105
|
-
this.
|
|
137
|
+
this.parseInputFn = getParseFn$1(this.inputParser);
|
|
138
|
+
this.outputParser = opts.outputParser;
|
|
139
|
+
this.parseOutputFn = getParseFn$1(this.outputParser);
|
|
140
|
+
this.meta = opts.meta;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
_def() {
|
|
144
|
+
return {
|
|
145
|
+
middlewares: this.middlewares,
|
|
146
|
+
resolver: this.resolver,
|
|
147
|
+
inputParser: this.inputParser,
|
|
148
|
+
outputParser: this.outputParser,
|
|
149
|
+
meta: this.meta
|
|
150
|
+
};
|
|
106
151
|
}
|
|
107
152
|
|
|
108
153
|
async parseInput(rawInput) {
|
|
109
154
|
try {
|
|
110
|
-
return await this.
|
|
155
|
+
return await this.parseInputFn(rawInput);
|
|
111
156
|
} catch (cause) {
|
|
112
157
|
throw new TRPCError({
|
|
113
158
|
code: 'BAD_REQUEST',
|
|
114
|
-
cause
|
|
159
|
+
cause: getCauseFromUnknown(cause)
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
async parseOutput(rawOutput) {
|
|
165
|
+
try {
|
|
166
|
+
return await this.parseOutputFn(rawOutput);
|
|
167
|
+
} catch (cause) {
|
|
168
|
+
throw new TRPCError({
|
|
169
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
170
|
+
cause: getCauseFromUnknown(cause),
|
|
171
|
+
message: 'Output validation failed'
|
|
115
172
|
});
|
|
116
173
|
}
|
|
117
174
|
}
|
|
118
175
|
/**
|
|
119
|
-
* Trigger middlewares in order, parse raw input &
|
|
176
|
+
* Trigger middlewares in order, parse raw input, call resolver & parse raw output
|
|
120
177
|
* @internal
|
|
121
178
|
*/
|
|
122
179
|
|
|
@@ -127,40 +184,50 @@ class Procedure {
|
|
|
127
184
|
ctx
|
|
128
185
|
}) => {
|
|
129
186
|
const input = await this.parseInput(opts.rawInput);
|
|
130
|
-
const
|
|
187
|
+
const rawOutput = await this.resolver({ ...opts,
|
|
131
188
|
ctx,
|
|
132
189
|
input
|
|
133
190
|
});
|
|
191
|
+
const data = await this.parseOutput(rawOutput);
|
|
134
192
|
return {
|
|
135
|
-
marker: middlewareMarker,
|
|
193
|
+
marker: middlewareMarker$1,
|
|
136
194
|
ok: true,
|
|
137
195
|
data,
|
|
138
196
|
ctx
|
|
139
197
|
};
|
|
140
|
-
}]); //
|
|
198
|
+
}]); // run the middlewares recursively with the resolver as the last one
|
|
141
199
|
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
200
|
+
const callRecursive = async (callOpts = {
|
|
201
|
+
index: 0,
|
|
202
|
+
ctx: opts.ctx
|
|
203
|
+
}) => {
|
|
204
|
+
try {
|
|
205
|
+
const result = await middlewaresWithResolver[callOpts.index]({
|
|
206
|
+
ctx: callOpts.ctx,
|
|
146
207
|
type: opts.type,
|
|
147
208
|
path: opts.path,
|
|
148
209
|
rawInput: opts.rawInput,
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
210
|
+
meta: this.meta,
|
|
211
|
+
next: async nextOpts => {
|
|
212
|
+
return await callRecursive({
|
|
213
|
+
index: callOpts.index + 1,
|
|
214
|
+
ctx: nextOpts ? nextOpts.ctx : callOpts.ctx
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
return result;
|
|
219
|
+
} catch (cause) {
|
|
156
220
|
return {
|
|
221
|
+
ctx: callOpts.ctx,
|
|
157
222
|
ok: false,
|
|
158
|
-
error: getErrorFromUnknown(
|
|
223
|
+
error: getErrorFromUnknown(cause),
|
|
224
|
+
marker: middlewareMarker$1
|
|
159
225
|
};
|
|
160
|
-
}
|
|
161
|
-
}
|
|
226
|
+
}
|
|
227
|
+
}; // there's always at least one "next" since we wrap this.resolver in a middleware
|
|
228
|
+
|
|
162
229
|
|
|
163
|
-
const result = await
|
|
230
|
+
const result = await callRecursive();
|
|
164
231
|
|
|
165
232
|
if (!result) {
|
|
166
233
|
throw new TRPCError({
|
|
@@ -187,7 +254,9 @@ class Procedure {
|
|
|
187
254
|
const instance = new Constructor({
|
|
188
255
|
middlewares: [...middlewares, ...this.middlewares],
|
|
189
256
|
resolver: this.resolver,
|
|
190
|
-
inputParser: this.inputParser
|
|
257
|
+
inputParser: this.inputParser,
|
|
258
|
+
outputParser: this.outputParser,
|
|
259
|
+
meta: this.meta
|
|
191
260
|
});
|
|
192
261
|
return instance;
|
|
193
262
|
}
|
|
@@ -204,19 +273,543 @@ function createProcedure(opts) {
|
|
|
204
273
|
|
|
205
274
|
return undefined;
|
|
206
275
|
};
|
|
276
|
+
const outputParser = 'output' in opts && opts.output ? opts.output : output => output;
|
|
207
277
|
return new Procedure({
|
|
208
278
|
inputParser: inputParser,
|
|
209
279
|
resolver: opts.resolve,
|
|
210
|
-
middlewares: []
|
|
280
|
+
middlewares: [],
|
|
281
|
+
outputParser: outputParser,
|
|
282
|
+
meta: opts.meta
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
function getParseFn(procedureParser) {
|
|
287
|
+
const parser = procedureParser;
|
|
288
|
+
|
|
289
|
+
if (typeof parser === 'function') {
|
|
290
|
+
// ProcedureParserCustomValidatorEsque
|
|
291
|
+
return parser;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
if (typeof parser.parseAsync === 'function') {
|
|
295
|
+
// ProcedureParserZodEsque
|
|
296
|
+
return parser.parseAsync.bind(parser);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
if (typeof parser.parse === 'function') {
|
|
300
|
+
// ProcedureParserZodEsque
|
|
301
|
+
return parser.parse.bind(parser);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
if (typeof parser.validateSync === 'function') {
|
|
305
|
+
// ProcedureParserYupEsque
|
|
306
|
+
return parser.validateSync.bind(parser);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
if (typeof parser.create === 'function') {
|
|
310
|
+
// ProcedureParserSuperstructEsque
|
|
311
|
+
return parser.create.bind(parser);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
throw new Error('Could not find a validator fn');
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* @deprecated only for backwards compat
|
|
318
|
+
* @internal
|
|
319
|
+
*/
|
|
320
|
+
|
|
321
|
+
function getParseFnOrPassThrough(procedureParser) {
|
|
322
|
+
if (!procedureParser) {
|
|
323
|
+
return v => v;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
return getParseFn(procedureParser);
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Ensures there are no duplicate keys when building a procedure.
|
|
331
|
+
*/
|
|
332
|
+
function mergeWithoutOverrides(obj1, ...objs) {
|
|
333
|
+
const newObj = Object.assign(Object.create(null), obj1);
|
|
334
|
+
|
|
335
|
+
for (const overrides of objs) {
|
|
336
|
+
for (const key in overrides) {
|
|
337
|
+
if (key in newObj && newObj[key] !== overrides[key]) {
|
|
338
|
+
throw new Error(`Duplicate key ${key}`);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
newObj[key] = overrides[key];
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
return newObj;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* @internal
|
|
350
|
+
*/
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* @internal
|
|
354
|
+
*/
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* @internal
|
|
358
|
+
*/
|
|
359
|
+
const middlewareMarker = 'middlewareMarker';
|
|
360
|
+
/**
|
|
361
|
+
* @internal
|
|
362
|
+
*/
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* This is the actual internal representation of a builder
|
|
366
|
+
* FIXME - I want to get rid of this and use the public API instead
|
|
367
|
+
*/
|
|
368
|
+
|
|
369
|
+
function createNewInternalBuilder(def1, def2) {
|
|
370
|
+
const {
|
|
371
|
+
middlewares = [],
|
|
372
|
+
...rest
|
|
373
|
+
} = def2; // TODO: maybe have a fn here to warn about calls
|
|
374
|
+
|
|
375
|
+
return createInternalBuilder({ ...mergeWithoutOverrides(def1, rest),
|
|
376
|
+
middlewares: [...def1.middlewares, ...middlewares]
|
|
211
377
|
});
|
|
212
378
|
}
|
|
213
379
|
|
|
380
|
+
const codeblock = /*#__PURE__*/`
|
|
381
|
+
If you want to call this function on the server, you do the following:
|
|
382
|
+
This is a client-only function.
|
|
383
|
+
|
|
384
|
+
const caller = appRouter.createCaller({
|
|
385
|
+
/* ... your context */
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
const result = await caller.call('myProcedure', input);
|
|
389
|
+
`.trim();
|
|
390
|
+
|
|
391
|
+
function createProcedureCaller(_def) {
|
|
392
|
+
const procedure = async function resolve(opts) {
|
|
393
|
+
if (!opts || !('rawInput' in opts)) {
|
|
394
|
+
throw new Error(codeblock);
|
|
395
|
+
} // run the middlewares recursively with the resolver as the last one
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
const callRecursive = async (callOpts = {
|
|
399
|
+
index: 0,
|
|
400
|
+
ctx: opts.ctx
|
|
401
|
+
}) => {
|
|
402
|
+
try {
|
|
403
|
+
const middleware = _def.middlewares[callOpts.index];
|
|
404
|
+
const result = await middleware({
|
|
405
|
+
ctx: callOpts.ctx,
|
|
406
|
+
type: opts.type,
|
|
407
|
+
path: opts.path,
|
|
408
|
+
rawInput: opts.rawInput,
|
|
409
|
+
meta: _def.meta,
|
|
410
|
+
input: callOpts.input,
|
|
411
|
+
next: async nextOpts => {
|
|
412
|
+
return await callRecursive({
|
|
413
|
+
index: callOpts.index + 1,
|
|
414
|
+
ctx: nextOpts && 'ctx' in nextOpts ? { ...callOpts.ctx,
|
|
415
|
+
...nextOpts.ctx
|
|
416
|
+
} : callOpts.ctx,
|
|
417
|
+
input: nextOpts && 'input' in nextOpts ? nextOpts.input : callOpts.input
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
});
|
|
421
|
+
return result;
|
|
422
|
+
} catch (cause) {
|
|
423
|
+
return {
|
|
424
|
+
ok: false,
|
|
425
|
+
error: getErrorFromUnknown(cause),
|
|
426
|
+
marker: middlewareMarker
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
}; // there's always at least one "next" since we wrap this.resolver in a middleware
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
const result = await callRecursive();
|
|
433
|
+
|
|
434
|
+
if (!result) {
|
|
435
|
+
throw new TRPCError({
|
|
436
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
437
|
+
message: 'No result from middlewares - did you forget to `return next()`?'
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
if (!result.ok) {
|
|
442
|
+
// re-throw original error
|
|
443
|
+
throw result.error;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
return result.data;
|
|
447
|
+
};
|
|
448
|
+
|
|
449
|
+
procedure._def = _def;
|
|
450
|
+
procedure.meta = _def.meta;
|
|
451
|
+
return procedure;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
function createInputMiddleware(parse) {
|
|
455
|
+
return async function inputMiddleware({
|
|
456
|
+
next,
|
|
457
|
+
rawInput
|
|
458
|
+
}) {
|
|
459
|
+
let input;
|
|
460
|
+
|
|
461
|
+
try {
|
|
462
|
+
input = await parse(rawInput);
|
|
463
|
+
} catch (cause) {
|
|
464
|
+
throw new TRPCError({
|
|
465
|
+
code: 'BAD_REQUEST',
|
|
466
|
+
cause: getCauseFromUnknown(cause)
|
|
467
|
+
});
|
|
468
|
+
} // TODO fix this typing?
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
return next({
|
|
472
|
+
input
|
|
473
|
+
});
|
|
474
|
+
};
|
|
475
|
+
}
|
|
476
|
+
function createOutputMiddleware(parse) {
|
|
477
|
+
return async function outputMiddleware({
|
|
478
|
+
next
|
|
479
|
+
}) {
|
|
480
|
+
const result = await next();
|
|
481
|
+
|
|
482
|
+
if (!result.ok) {
|
|
483
|
+
// pass through failures without validating
|
|
484
|
+
return result;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
try {
|
|
488
|
+
const data = await parse(result.data);
|
|
489
|
+
return { ...result,
|
|
490
|
+
data
|
|
491
|
+
};
|
|
492
|
+
} catch (cause) {
|
|
493
|
+
throw new TRPCError({
|
|
494
|
+
message: 'Output validation failed',
|
|
495
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
496
|
+
cause: getCauseFromUnknown(cause)
|
|
497
|
+
});
|
|
498
|
+
}
|
|
499
|
+
};
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
function createResolver(_def, resolver) {
|
|
503
|
+
const finalBuilder = createNewInternalBuilder(_def, {
|
|
504
|
+
resolver,
|
|
505
|
+
middlewares: [async function resolveMiddleware(opts) {
|
|
506
|
+
const data = await resolver(opts);
|
|
507
|
+
return {
|
|
508
|
+
marker: middlewareMarker,
|
|
509
|
+
ok: true,
|
|
510
|
+
data,
|
|
511
|
+
ctx: opts.ctx
|
|
512
|
+
};
|
|
513
|
+
}]
|
|
514
|
+
});
|
|
515
|
+
return createProcedureCaller(finalBuilder._def);
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
function createInternalBuilder(initDef) {
|
|
519
|
+
const _def = initDef || {
|
|
520
|
+
middlewares: []
|
|
521
|
+
};
|
|
522
|
+
|
|
523
|
+
return {
|
|
524
|
+
_def,
|
|
525
|
+
|
|
526
|
+
// _call: createProcedureCaller(_def),
|
|
527
|
+
input(input) {
|
|
528
|
+
const parser = getParseFn(input);
|
|
529
|
+
return createNewInternalBuilder(_def, {
|
|
530
|
+
input,
|
|
531
|
+
middlewares: [createInputMiddleware(parser)]
|
|
532
|
+
});
|
|
533
|
+
},
|
|
534
|
+
|
|
535
|
+
output(output) {
|
|
536
|
+
const parseOutput = getParseFn(output);
|
|
537
|
+
return createNewInternalBuilder(_def, {
|
|
538
|
+
output,
|
|
539
|
+
middlewares: [createOutputMiddleware(parseOutput)]
|
|
540
|
+
});
|
|
541
|
+
},
|
|
542
|
+
|
|
543
|
+
meta(meta) {
|
|
544
|
+
return createNewInternalBuilder(_def, {
|
|
545
|
+
meta
|
|
546
|
+
});
|
|
547
|
+
},
|
|
548
|
+
|
|
549
|
+
/** @deprecated **/
|
|
550
|
+
resolve(resolver) {
|
|
551
|
+
return createResolver(_def, resolver);
|
|
552
|
+
},
|
|
553
|
+
|
|
554
|
+
unstable_concat(builder) {
|
|
555
|
+
return createNewInternalBuilder(_def, builder._def);
|
|
556
|
+
},
|
|
557
|
+
|
|
558
|
+
use(middleware) {
|
|
559
|
+
return createNewInternalBuilder(_def, {
|
|
560
|
+
middlewares: [middleware]
|
|
561
|
+
});
|
|
562
|
+
},
|
|
563
|
+
|
|
564
|
+
query(resolver) {
|
|
565
|
+
return createResolver({ ..._def,
|
|
566
|
+
query: true
|
|
567
|
+
}, resolver);
|
|
568
|
+
},
|
|
569
|
+
|
|
570
|
+
mutation(resolver) {
|
|
571
|
+
return createResolver({ ..._def,
|
|
572
|
+
mutation: true
|
|
573
|
+
}, resolver);
|
|
574
|
+
},
|
|
575
|
+
|
|
576
|
+
subscription(resolver) {
|
|
577
|
+
return createResolver({ ..._def,
|
|
578
|
+
subscription: true
|
|
579
|
+
}, resolver);
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
};
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
/**
|
|
586
|
+
* Create an object without inheriting anything from `Object.prototype`
|
|
587
|
+
* @internal
|
|
588
|
+
*/
|
|
589
|
+
function omitPrototype(obj1) {
|
|
590
|
+
return Object.assign(Object.create(null), obj1);
|
|
591
|
+
}
|
|
592
|
+
|
|
214
593
|
/* eslint-disable @typescript-eslint/ban-types */
|
|
215
|
-
|
|
594
|
+
|
|
595
|
+
function createRouterProxy(callback) {
|
|
596
|
+
return new Proxy({}, {
|
|
597
|
+
get(_, path) {
|
|
598
|
+
return (...args) => callback(path, ...args);
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
});
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
const emptyRouter = {
|
|
605
|
+
_ctx: null,
|
|
606
|
+
_errorShape: null,
|
|
607
|
+
_meta: null,
|
|
608
|
+
queries: {},
|
|
609
|
+
mutations: {},
|
|
610
|
+
subscriptions: {},
|
|
611
|
+
errorFormatter: defaultFormatter,
|
|
612
|
+
transformer: defaultTransformer
|
|
613
|
+
};
|
|
216
614
|
/**
|
|
217
|
-
*
|
|
615
|
+
*
|
|
616
|
+
* @internal
|
|
218
617
|
*/
|
|
219
618
|
|
|
619
|
+
function createRouterFactory(defaults) {
|
|
620
|
+
return function createRouterInner(opts) {
|
|
621
|
+
var _defaults$transformer, _defaults$errorFormat;
|
|
622
|
+
|
|
623
|
+
const routerProcedures = omitPrototype({});
|
|
624
|
+
|
|
625
|
+
function recursiveGetPaths(procedures, path = '') {
|
|
626
|
+
for (const [key, procedureOrRouter] of Object.entries(procedures !== null && procedures !== void 0 ? procedures : {})) {
|
|
627
|
+
const newPath = `${path}${key}`;
|
|
628
|
+
|
|
629
|
+
if (typeof procedureOrRouter === 'object') {
|
|
630
|
+
const router = procedureOrRouter;
|
|
631
|
+
recursiveGetPaths(router._def.procedures, `${newPath}.`);
|
|
632
|
+
continue;
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
routerProcedures[newPath] = procedureOrRouter;
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
recursiveGetPaths(opts);
|
|
640
|
+
const result = mergeWithoutOverrides({
|
|
641
|
+
transformer: (_defaults$transformer = defaults === null || defaults === void 0 ? void 0 : defaults.transformer) !== null && _defaults$transformer !== void 0 ? _defaults$transformer : defaultTransformer,
|
|
642
|
+
errorFormatter: (_defaults$errorFormat = defaults === null || defaults === void 0 ? void 0 : defaults.errorFormatter) !== null && _defaults$errorFormat !== void 0 ? _defaults$errorFormat : defaultFormatter
|
|
643
|
+
}, {
|
|
644
|
+
procedures: routerProcedures
|
|
645
|
+
});
|
|
646
|
+
const _def = {
|
|
647
|
+
router: true,
|
|
648
|
+
procedures: {},
|
|
649
|
+
...emptyRouter,
|
|
650
|
+
...result,
|
|
651
|
+
record: opts,
|
|
652
|
+
queries: Object.entries(result.procedures || {}).filter(pair => pair[1]._def.query).reduce((acc, [key, val]) => ({ ...acc,
|
|
653
|
+
[key]: val
|
|
654
|
+
}), {}),
|
|
655
|
+
mutations: Object.entries(result.procedures || {}).filter(pair => pair[1]._def.mutation).reduce((acc, [key, val]) => ({ ...acc,
|
|
656
|
+
[key]: val
|
|
657
|
+
}), {}),
|
|
658
|
+
subscriptions: Object.entries(result.procedures || {}).filter(pair => pair[1]._def.subscription).reduce((acc, [key, val]) => ({ ...acc,
|
|
659
|
+
[key]: val
|
|
660
|
+
}), {}),
|
|
661
|
+
routers: Object.entries(result.procedures || {}).filter(pair => pair[1]._def._router).reduce((acc, [key, val]) => ({ ...acc,
|
|
662
|
+
[key]: val
|
|
663
|
+
}), {})
|
|
664
|
+
};
|
|
665
|
+
|
|
666
|
+
function callProcedure(opts) {
|
|
667
|
+
const {
|
|
668
|
+
type,
|
|
669
|
+
path
|
|
670
|
+
} = opts;
|
|
671
|
+
|
|
672
|
+
if (!(path in _def.procedures) || !_def.procedures[path]['_def'][type]) {
|
|
673
|
+
throw new TRPCError({
|
|
674
|
+
code: 'NOT_FOUND',
|
|
675
|
+
message: `No "${type}"-procedure on path "${path}"`
|
|
676
|
+
});
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
const procedure = _def.procedures[path];
|
|
680
|
+
return procedure(opts);
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
const router = { ...opts,
|
|
684
|
+
_def,
|
|
685
|
+
transformer: _def.transformer,
|
|
686
|
+
errorFormatter: _def.errorFormatter,
|
|
687
|
+
|
|
688
|
+
createCaller(ctx) {
|
|
689
|
+
return {
|
|
690
|
+
query: (path, ...args) => callProcedure({
|
|
691
|
+
path,
|
|
692
|
+
rawInput: args[0],
|
|
693
|
+
ctx,
|
|
694
|
+
type: 'query'
|
|
695
|
+
}),
|
|
696
|
+
mutation: (path, ...args) => callProcedure({
|
|
697
|
+
path,
|
|
698
|
+
rawInput: args[0],
|
|
699
|
+
ctx,
|
|
700
|
+
type: 'mutation'
|
|
701
|
+
}),
|
|
702
|
+
subscription: (path, ...args) => callProcedure({
|
|
703
|
+
path,
|
|
704
|
+
rawInput: args[0],
|
|
705
|
+
ctx,
|
|
706
|
+
type: 'subscription'
|
|
707
|
+
}),
|
|
708
|
+
queries: createRouterProxy((path, rawInput) => callProcedure({
|
|
709
|
+
path,
|
|
710
|
+
rawInput,
|
|
711
|
+
ctx,
|
|
712
|
+
type: 'query'
|
|
713
|
+
})),
|
|
714
|
+
mutations: createRouterProxy((path, rawInput) => callProcedure({
|
|
715
|
+
path,
|
|
716
|
+
rawInput,
|
|
717
|
+
ctx,
|
|
718
|
+
type: 'mutation'
|
|
719
|
+
})),
|
|
720
|
+
subscriptions: createRouterProxy((path, rawInput) => callProcedure({
|
|
721
|
+
path,
|
|
722
|
+
rawInput,
|
|
723
|
+
ctx,
|
|
724
|
+
type: 'subscription'
|
|
725
|
+
}))
|
|
726
|
+
};
|
|
727
|
+
},
|
|
728
|
+
|
|
729
|
+
getErrorShape(opts) {
|
|
730
|
+
const {
|
|
731
|
+
path,
|
|
732
|
+
error
|
|
733
|
+
} = opts;
|
|
734
|
+
const {
|
|
735
|
+
code
|
|
736
|
+
} = opts.error;
|
|
737
|
+
const shape = {
|
|
738
|
+
message: error.message,
|
|
739
|
+
code: TRPC_ERROR_CODES_BY_KEY[code],
|
|
740
|
+
data: {
|
|
741
|
+
code,
|
|
742
|
+
httpStatus: getHTTPStatusCodeFromError(error)
|
|
743
|
+
}
|
|
744
|
+
};
|
|
745
|
+
|
|
746
|
+
if (process.env.NODE_ENV !== 'production' && typeof opts.error.stack === 'string') {
|
|
747
|
+
shape.data.stack = opts.error.stack;
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
if (typeof path === 'string') {
|
|
751
|
+
shape.data.path = path;
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
return this._def.errorFormatter({ ...opts,
|
|
755
|
+
shape
|
|
756
|
+
});
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
};
|
|
760
|
+
return router;
|
|
761
|
+
};
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
function migrateProcedure(oldProc, type) {
|
|
765
|
+
const def = oldProc._def();
|
|
766
|
+
|
|
767
|
+
const inputParser = getParseFnOrPassThrough(def.inputParser);
|
|
768
|
+
const outputParser = getParseFnOrPassThrough(def.outputParser);
|
|
769
|
+
const inputMiddleware = createInputMiddleware(inputParser);
|
|
770
|
+
const builder = createInternalBuilder({
|
|
771
|
+
input: def.inputParser,
|
|
772
|
+
middlewares: [...def.middlewares, inputMiddleware, createOutputMiddleware(outputParser)],
|
|
773
|
+
meta: def.meta,
|
|
774
|
+
output: def.outputParser,
|
|
775
|
+
mutation: type === 'mutation',
|
|
776
|
+
query: type === 'query',
|
|
777
|
+
subscription: type === 'subscription'
|
|
778
|
+
});
|
|
779
|
+
const proc = builder[type](opts => def.resolver(opts));
|
|
780
|
+
return proc;
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
function migrateRouter(oldRouter) {
|
|
784
|
+
const errorFormatter = oldRouter._def.errorFormatter;
|
|
785
|
+
const transformer = oldRouter._def.transformer;
|
|
786
|
+
const queries = {};
|
|
787
|
+
const mutations = {};
|
|
788
|
+
const subscriptions = {};
|
|
789
|
+
|
|
790
|
+
for (const [name, procedure] of Object.entries(oldRouter._def.queries)) {
|
|
791
|
+
queries[name] = migrateProcedure(procedure, 'query');
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
for (const [name, procedure] of Object.entries(oldRouter._def.mutations)) {
|
|
795
|
+
mutations[name] = migrateProcedure(procedure, 'mutation');
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
for (const [name, procedure] of Object.entries(oldRouter._def.subscriptions)) {
|
|
799
|
+
subscriptions[name] = migrateProcedure(procedure, 'subscription');
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
const procedures = mergeWithoutOverrides(queries, mutations, subscriptions);
|
|
803
|
+
const newRouter = createRouterFactory({
|
|
804
|
+
transformer,
|
|
805
|
+
errorFormatter
|
|
806
|
+
})(procedures);
|
|
807
|
+
return newRouter;
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
/* eslint-disable @typescript-eslint/ban-types */
|
|
811
|
+
assertNotBrowser();
|
|
812
|
+
|
|
220
813
|
function getDataTransformer(transformer) {
|
|
221
814
|
if ('input' in transformer) {
|
|
222
815
|
return transformer;
|
|
@@ -229,6 +822,7 @@ function getDataTransformer(transformer) {
|
|
|
229
822
|
}
|
|
230
823
|
/**
|
|
231
824
|
* @internal
|
|
825
|
+
* @deprecated
|
|
232
826
|
*/
|
|
233
827
|
|
|
234
828
|
|
|
@@ -239,31 +833,16 @@ const PROCEDURE_DEFINITION_MAP = {
|
|
|
239
833
|
};
|
|
240
834
|
/**
|
|
241
835
|
* @internal
|
|
836
|
+
* @deprecated
|
|
242
837
|
*/
|
|
243
838
|
|
|
244
839
|
function safeObject(...args) {
|
|
245
840
|
return Object.assign(Object.create(null), ...args);
|
|
246
841
|
}
|
|
247
842
|
|
|
248
|
-
const defaultFormatter = ({
|
|
249
|
-
shape
|
|
250
|
-
}) => {
|
|
251
|
-
return shape;
|
|
252
|
-
};
|
|
253
|
-
|
|
254
|
-
const defaultTransformer = {
|
|
255
|
-
input: {
|
|
256
|
-
serialize: obj => obj,
|
|
257
|
-
deserialize: obj => obj
|
|
258
|
-
},
|
|
259
|
-
output: {
|
|
260
|
-
serialize: obj => obj,
|
|
261
|
-
deserialize: obj => obj
|
|
262
|
-
}
|
|
263
|
-
};
|
|
264
|
-
|
|
265
843
|
/**
|
|
266
844
|
* @internal The type signature of this class may change without warning.
|
|
845
|
+
* @deprecated
|
|
267
846
|
*/
|
|
268
847
|
class Router {
|
|
269
848
|
constructor(def) {
|
|
@@ -504,17 +1083,137 @@ class Router {
|
|
|
504
1083
|
flat() {
|
|
505
1084
|
return this;
|
|
506
1085
|
}
|
|
1086
|
+
/**
|
|
1087
|
+
* Interop mode for v9.x -> v10.x
|
|
1088
|
+
*/
|
|
1089
|
+
|
|
1090
|
+
|
|
1091
|
+
interop() {
|
|
1092
|
+
return migrateRouter(this);
|
|
1093
|
+
}
|
|
507
1094
|
|
|
508
1095
|
}
|
|
509
1096
|
/**
|
|
510
|
-
* Subclass of `VNextRouter` with `TInputContext` and `TContext` set to the same type, for backcompat.
|
|
511
|
-
*
|
|
512
1097
|
* @deprecated
|
|
513
1098
|
*/
|
|
514
1099
|
|
|
515
|
-
class LegacyRouter extends Router {}
|
|
516
1100
|
function router() {
|
|
517
1101
|
return new Router();
|
|
518
1102
|
}
|
|
519
1103
|
|
|
520
|
-
|
|
1104
|
+
function mergeRouters(...routerList) {
|
|
1105
|
+
const record = mergeWithoutOverrides({}, ...routerList.map(r => r._def.record));
|
|
1106
|
+
const errorFormatter = routerList.reduce((currentErrorFormatter, nextRouter) => {
|
|
1107
|
+
if (nextRouter.errorFormatter && nextRouter.errorFormatter !== defaultFormatter) {
|
|
1108
|
+
if (currentErrorFormatter !== defaultFormatter && currentErrorFormatter !== nextRouter.errorFormatter) {
|
|
1109
|
+
throw new Error('You seem to have several error formatters');
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
return nextRouter.errorFormatter;
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1115
|
+
return currentErrorFormatter;
|
|
1116
|
+
}, defaultFormatter);
|
|
1117
|
+
const transformer = routerList.reduce((prev, current) => {
|
|
1118
|
+
if (current.transformer && current.transformer !== defaultTransformer) {
|
|
1119
|
+
if (prev !== defaultTransformer && prev !== current.transformer) {
|
|
1120
|
+
throw new Error('You seem to have several transformers');
|
|
1121
|
+
}
|
|
1122
|
+
|
|
1123
|
+
return current.transformer;
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
return prev;
|
|
1127
|
+
}, defaultTransformer);
|
|
1128
|
+
const router = createRouterFactory({
|
|
1129
|
+
errorFormatter,
|
|
1130
|
+
transformer
|
|
1131
|
+
})(record);
|
|
1132
|
+
return router;
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1135
|
+
function mergeRoutersGeneric(...args) {
|
|
1136
|
+
return mergeRouters(...args);
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
function createBuilder() {
|
|
1140
|
+
return createInternalBuilder();
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
/**
|
|
1144
|
+
* @internal
|
|
1145
|
+
*/
|
|
1146
|
+
|
|
1147
|
+
/**
|
|
1148
|
+
* @internal
|
|
1149
|
+
*/
|
|
1150
|
+
|
|
1151
|
+
/**
|
|
1152
|
+
* @internal
|
|
1153
|
+
*/
|
|
1154
|
+
|
|
1155
|
+
/**
|
|
1156
|
+
* @internal
|
|
1157
|
+
*/
|
|
1158
|
+
|
|
1159
|
+
/**
|
|
1160
|
+
* @internal
|
|
1161
|
+
*/
|
|
1162
|
+
|
|
1163
|
+
/**
|
|
1164
|
+
* @internal
|
|
1165
|
+
*/
|
|
1166
|
+
// FIXME this should use RootConfig
|
|
1167
|
+
function createMiddlewareFactory() {
|
|
1168
|
+
return function createMiddleware(fn) {
|
|
1169
|
+
return fn;
|
|
1170
|
+
};
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1173
|
+
/* eslint-disable @typescript-eslint/ban-types */
|
|
1174
|
+
function initTRPC() {
|
|
1175
|
+
return function initTRPCInner(options) {
|
|
1176
|
+
var _options$errorFormatt, _options$transformer;
|
|
1177
|
+
|
|
1178
|
+
const errorFormatter = (_options$errorFormatt = options === null || options === void 0 ? void 0 : options.errorFormatter) !== null && _options$errorFormatt !== void 0 ? _options$errorFormatt : defaultFormatter;
|
|
1179
|
+
const transformer = getDataTransformer$1((_options$transformer = options === null || options === void 0 ? void 0 : options.transformer) !== null && _options$transformer !== void 0 ? _options$transformer : defaultTransformer);
|
|
1180
|
+
const _config = {
|
|
1181
|
+
transformer,
|
|
1182
|
+
errorShape: null,
|
|
1183
|
+
ctx: null,
|
|
1184
|
+
meta: null
|
|
1185
|
+
};
|
|
1186
|
+
return {
|
|
1187
|
+
/**
|
|
1188
|
+
* These are just types, they can't be used
|
|
1189
|
+
* @internal
|
|
1190
|
+
*/
|
|
1191
|
+
_config,
|
|
1192
|
+
|
|
1193
|
+
/**
|
|
1194
|
+
* Builder object for creating procedures
|
|
1195
|
+
*/
|
|
1196
|
+
procedure: createBuilder(),
|
|
1197
|
+
|
|
1198
|
+
/**
|
|
1199
|
+
* Create reusable middlewares
|
|
1200
|
+
*/
|
|
1201
|
+
middleware: createMiddlewareFactory(),
|
|
1202
|
+
|
|
1203
|
+
/**
|
|
1204
|
+
* Create a router
|
|
1205
|
+
*/
|
|
1206
|
+
router: createRouterFactory({
|
|
1207
|
+
errorFormatter,
|
|
1208
|
+
transformer
|
|
1209
|
+
}),
|
|
1210
|
+
|
|
1211
|
+
/**
|
|
1212
|
+
* Merge Routers
|
|
1213
|
+
*/
|
|
1214
|
+
mergeRouters: mergeRoutersGeneric
|
|
1215
|
+
};
|
|
1216
|
+
};
|
|
1217
|
+
}
|
|
1218
|
+
|
|
1219
|
+
export { defaultTransformer, getDataTransformer$1 as getDataTransformer, initTRPC, router };
|