@trpc/server 10.0.0-alpha.8 → 10.0.0-proxy-alpha.53
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/README.md +79 -1
- 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 +190 -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 +190 -0
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.esm.js +186 -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 -7
- package/adapters/express/dist/trpc-server-adapters-express.cjs.prod.js +7 -7
- package/adapters/express/dist/trpc-server-adapters-express.esm.js +7 -7
- package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.dev.js +18 -11
- package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.prod.js +18 -11
- package/adapters/fastify/dist/trpc-server-adapters-fastify.esm.js +18 -11
- 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 -4
- package/adapters/next/dist/trpc-server-adapters-next.cjs.prod.js +4 -4
- package/adapters/next/dist/trpc-server-adapters-next.esm.js +4 -4
- package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.dev.js +4 -4
- package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.prod.js +4 -4
- package/adapters/node-http/dist/trpc-server-adapters-node-http.esm.js +4 -4
- package/adapters/node-http/index.js +1 -1
- package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.dev.js +5 -5
- package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.prod.js +5 -5
- package/adapters/standalone/dist/trpc-server-adapters-standalone.esm.js +5 -5
- package/adapters/ws/dist/trpc-server-adapters-ws.cjs.dev.js +24 -7
- package/adapters/ws/dist/trpc-server-adapters-ws.cjs.prod.js +24 -7
- package/adapters/ws/dist/trpc-server-adapters-ws.esm.js +24 -7
- package/dist/TRPCError-bcb38a84.js +61 -0
- package/dist/TRPCError-e6e632a5.mjs +57 -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/index.js +153 -0
- package/dist/adapters/aws-lambda/index.mjs +149 -0
- package/dist/adapters/aws-lambda/utils.d.ts +35 -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 +14 -13
- package/dist/adapters/express.mjs +14 -13
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts +2 -2
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
- package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +2 -2
- package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -1
- package/dist/adapters/fastify/index.d.ts.map +1 -1
- package/dist/adapters/fastify/index.js +87 -0
- package/dist/adapters/fastify/index.mjs +82 -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 +57 -0
- package/dist/adapters/fetch/index.mjs +53 -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 +42 -46
- package/dist/adapters/next.mjs +42 -46
- package/dist/adapters/node-http/index.d.ts.map +1 -1
- 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 +30 -28
- package/dist/adapters/standalone.mjs +30 -27
- package/dist/adapters/ws.d.ts +8 -6
- package/dist/adapters/ws.d.ts.map +1 -1
- package/dist/adapters/ws.js +284 -317
- package/dist/adapters/ws.mjs +284 -317
- package/dist/assertNotBrowser.d.ts.map +1 -1
- package/dist/codes-1c24d919.js +47 -0
- package/dist/codes-aaa7d554.mjs +44 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/initTRPC.d.ts +95 -0
- package/dist/core/initTRPC.d.ts.map +1 -0
- package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts +302 -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/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 +124 -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 +89 -0
- package/dist/core/procedure.d.ts.map +1 -0
- package/dist/core/router.d.ts +136 -0
- package/dist/core/router.d.ts.map +1 -0
- package/dist/core/types.d.ts +19 -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 +61 -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/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-47817162.mjs +26 -0
- package/dist/index-9d687d33.js +28 -0
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +78 -516
- package/dist/index.mjs +71 -508
- package/dist/internals/invert.d.ts.map +1 -1
- 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/internals.d.ts +11 -0
- package/dist/internals.d.ts.map +1 -0
- package/dist/nodeHTTPRequestHandler-2c467c02.mjs +80 -0
- package/dist/nodeHTTPRequestHandler-6609461a.js +82 -0
- package/dist/observable/index.d.ts +5 -0
- package/dist/observable/index.d.ts.map +1 -0
- package/dist/observable/index.js +157 -0
- package/dist/observable/index.mjs +148 -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-b651bf11.js +84 -0
- package/dist/observable-e129ac9d.mjs +81 -0
- package/dist/resolveHTTPResponse-11d52bd0.mjs +255 -0
- package/dist/resolveHTTPResponse-29d4b64a.js +259 -0
- package/dist/router-3ee4babe.js +903 -0
- package/dist/router-a2a75de3.mjs +893 -0
- package/dist/rpc/codes.d.ts +2 -0
- package/dist/rpc/codes.d.ts.map +1 -1
- package/dist/rpc/envelopes.d.ts +64 -41
- package/dist/rpc/envelopes.d.ts.map +1 -1
- package/dist/rpc/index.d.ts.map +1 -1
- package/dist/rpc/index.js +1 -1
- 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/shared/createProxy/index.d.ts +12 -0
- package/dist/shared/createProxy/index.d.ts.map +1 -0
- package/dist/shared/index.d.ts +2 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +9 -0
- package/dist/shared/index.mjs +1 -0
- package/dist/subscription.d.ts +3 -52
- package/dist/subscription.d.ts.map +1 -1
- package/dist/subscription.js +34 -0
- package/dist/subscription.mjs +30 -0
- package/dist/transformTRPCResponse-11ac69cc.js +27 -0
- package/dist/transformTRPCResponse-c8138d5f.mjs +25 -0
- package/dist/transformer.d.ts +14 -0
- package/dist/transformer.d.ts.map +1 -1
- package/dist/types.d.ts +37 -10
- package/dist/types.d.ts.map +1 -1
- package/observable/index.d.ts +1 -0
- package/observable/index.js +1 -0
- package/package.json +53 -25
- 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.js +1 -1
- package/shared/index.d.ts +1 -0
- package/shared/index.js +1 -0
- package/src/adapters/aws-lambda/index.ts +173 -0
- package/src/adapters/aws-lambda/utils.ts +92 -0
- package/src/adapters/express.ts +4 -4
- package/src/adapters/fastify/fastifyRequestHandler.ts +6 -8
- package/src/adapters/fastify/fastifyTRPCPlugin.ts +17 -9
- 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 +150 -91
- package/src/assertNotBrowser.ts +1 -0
- package/src/core/index.ts +15 -0
- package/src/core/initTRPC.ts +94 -0
- package/src/core/internals/__generated__/mergeRoutersGeneric.ts +406 -0
- package/src/core/internals/config.ts +43 -0
- package/src/core/internals/getParseFn.ts +47 -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 +430 -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 +121 -0
- package/src/core/router.ts +351 -0
- package/src/core/types.ts +58 -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 +272 -0
- package/src/{router.ts → deprecated/router.ts} +221 -108
- package/src/{TRPCError.ts → error/TRPCError.ts} +6 -14
- package/src/error/formatter.ts +51 -0
- package/src/{internals/errors.ts → error/utils.ts} +24 -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 +34 -39
- package/src/http/{ResponseMeta.ts → types.ts} +0 -0
- package/src/index.ts +4 -7
- package/src/internals/transformTRPCResponse.ts +21 -16
- package/src/internals/types.ts +24 -0
- package/src/internals.ts +14 -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 +23 -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 +94 -68
- package/src/rpc/internals/invert.ts +27 -0
- package/src/shared/createProxy/index.ts +38 -0
- package/src/shared/index.ts +1 -0
- package/src/subscription.ts +7 -125
- package/src/transformer.ts +28 -0
- package/src/types.ts +45 -15
- package/subscription/index.d.ts +1 -0
- package/subscription/index.js +1 -0
- package/adapters/fastify/package.json +0 -4
- package/dist/TRPCError.d.ts +0 -19
- package/dist/TRPCError.d.ts.map +0 -1
- package/dist/adapters/express.ts.js +0 -1
- package/dist/adapters/next.ts.js +0 -1
- package/dist/adapters/node-http/index.ts.js +0 -1
- package/dist/adapters/standalone.ts.js +0 -1
- package/dist/adapters/ws.ts.js +0 -1
- package/dist/codes-7a3d4f65.mjs +0 -56
- package/dist/codes-7f46544e.js +0 -60
- 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/index.ts.js +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/nodeHTTPRequestHandler-10e6d2f9.mjs +0 -394
- package/dist/nodeHTTPRequestHandler-d7c307d3.js +0 -399
- package/dist/router.d.ts +0 -176
- package/dist/router.d.ts.map +0 -1
- package/dist/rpc/index.ts.js +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/dist/ws/index.ts.js +0 -1
- 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,121 @@
|
|
|
1
|
+
import { DefaultErrorShape } from '../error/formatter';
|
|
2
|
+
import { CombinedDataTransformer } from '../transformer';
|
|
3
|
+
import { RootConfig } from './internals/config';
|
|
4
|
+
import {
|
|
5
|
+
ProcedureBuilderDef,
|
|
6
|
+
ProcedureCallOptions,
|
|
7
|
+
} from './internals/procedureBuilder';
|
|
8
|
+
import { UnsetMarker } from './internals/utils';
|
|
9
|
+
|
|
10
|
+
type ClientContext = Record<string, unknown>;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
export interface ProcedureOptions {
|
|
16
|
+
/**
|
|
17
|
+
* Client-side context
|
|
18
|
+
*/
|
|
19
|
+
context?: ClientContext;
|
|
20
|
+
signal?: AbortSignal;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* FIXME: this should only take 1 generic argument instead of a list
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
export interface ProcedureParams<
|
|
28
|
+
TConfig extends RootConfig = {
|
|
29
|
+
transformer: CombinedDataTransformer;
|
|
30
|
+
errorShape: DefaultErrorShape;
|
|
31
|
+
ctx: Record<string, unknown>;
|
|
32
|
+
meta: Record<string, unknown>;
|
|
33
|
+
},
|
|
34
|
+
TContextIn = unknown,
|
|
35
|
+
TContextOut = unknown,
|
|
36
|
+
TInputIn = unknown,
|
|
37
|
+
TInputOut = unknown,
|
|
38
|
+
TOutputIn = unknown,
|
|
39
|
+
TOutputOut = unknown,
|
|
40
|
+
TMeta = unknown,
|
|
41
|
+
> {
|
|
42
|
+
// FIXME make non-optional
|
|
43
|
+
_config: TConfig;
|
|
44
|
+
/**
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
_meta: TMeta;
|
|
48
|
+
/**
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
_ctx_in: TContextIn;
|
|
52
|
+
/**
|
|
53
|
+
* @internal
|
|
54
|
+
*/
|
|
55
|
+
_ctx_out: TContextOut;
|
|
56
|
+
/**
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
_input_in: TInputIn;
|
|
60
|
+
/**
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
63
|
+
_input_out: TInputOut;
|
|
64
|
+
/**
|
|
65
|
+
* @internal
|
|
66
|
+
*/
|
|
67
|
+
_output_in: TOutputIn;
|
|
68
|
+
/**
|
|
69
|
+
* @internal
|
|
70
|
+
*/
|
|
71
|
+
_output_out: TOutputOut;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* @internal
|
|
76
|
+
*/
|
|
77
|
+
export type ProcedureArgs<TParams extends ProcedureParams> =
|
|
78
|
+
TParams['_input_in'] extends UnsetMarker
|
|
79
|
+
? [input?: undefined | void, opts?: ProcedureOptions]
|
|
80
|
+
: undefined extends TParams['_input_in']
|
|
81
|
+
? [input?: TParams['_input_in'] | void, opts?: ProcedureOptions]
|
|
82
|
+
: [input: TParams['_input_in'], opts?: ProcedureOptions];
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
*
|
|
86
|
+
* @internal
|
|
87
|
+
*/
|
|
88
|
+
export interface ProcedureBase<TParams extends ProcedureParams> {
|
|
89
|
+
_def: TParams & ProcedureBuilderDef;
|
|
90
|
+
/**
|
|
91
|
+
* @deprecated use `._def.meta` instead
|
|
92
|
+
*/
|
|
93
|
+
meta?: TParams['_meta'];
|
|
94
|
+
_procedure: true;
|
|
95
|
+
/**
|
|
96
|
+
* @internal
|
|
97
|
+
*/
|
|
98
|
+
(opts: ProcedureCallOptions): Promise<unknown>;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export interface QueryProcedure<TParams extends ProcedureParams>
|
|
102
|
+
extends ProcedureBase<TParams> {
|
|
103
|
+
_query: true;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export interface MutationProcedure<TParams extends ProcedureParams>
|
|
107
|
+
extends ProcedureBase<TParams> {
|
|
108
|
+
_mutation: true;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export interface SubscriptionProcedure<TParams extends ProcedureParams>
|
|
112
|
+
extends ProcedureBase<TParams> {
|
|
113
|
+
_subscription: true;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export type Procedure<TParams extends ProcedureParams> =
|
|
117
|
+
| QueryProcedure<TParams>
|
|
118
|
+
| MutationProcedure<TParams>
|
|
119
|
+
| SubscriptionProcedure<TParams>;
|
|
120
|
+
|
|
121
|
+
export type AnyProcedure = Procedure<any>;
|
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
import { inferProcedureOutput } from '.';
|
|
2
|
+
import { Filter } from '..';
|
|
3
|
+
import { TRPCError } from '../error/TRPCError';
|
|
4
|
+
import {
|
|
5
|
+
DefaultErrorShape,
|
|
6
|
+
ErrorFormatter,
|
|
7
|
+
defaultFormatter,
|
|
8
|
+
} from '../error/formatter';
|
|
9
|
+
import { getHTTPStatusCodeFromError } from '../http/internals/getHTTPStatusCode';
|
|
10
|
+
import { TRPCErrorShape, TRPC_ERROR_CODES_BY_KEY } from '../rpc';
|
|
11
|
+
import { createProxy } from '../shared';
|
|
12
|
+
import { CombinedDataTransformer, defaultTransformer } from '../transformer';
|
|
13
|
+
import { RootConfig } from './internals/config';
|
|
14
|
+
import { mergeWithoutOverrides } from './internals/mergeWithoutOverrides';
|
|
15
|
+
import { omitPrototype } from './internals/omitPrototype';
|
|
16
|
+
import { ProcedureCallOptions } from './internals/procedureBuilder';
|
|
17
|
+
import {
|
|
18
|
+
AnyProcedure,
|
|
19
|
+
MutationProcedure,
|
|
20
|
+
Procedure,
|
|
21
|
+
ProcedureArgs,
|
|
22
|
+
QueryProcedure,
|
|
23
|
+
SubscriptionProcedure,
|
|
24
|
+
} from './procedure';
|
|
25
|
+
import { ProcedureType, procedureTypes } from './types';
|
|
26
|
+
|
|
27
|
+
/** @internal **/
|
|
28
|
+
export 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
|
+
TRecord extends ProcedureRouterRecord,
|
|
45
|
+
> {
|
|
46
|
+
router: true;
|
|
47
|
+
/**
|
|
48
|
+
* @internal
|
|
49
|
+
*/
|
|
50
|
+
_ctx: TContext;
|
|
51
|
+
/**
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
54
|
+
_errorShape: TErrorShape;
|
|
55
|
+
/**
|
|
56
|
+
* @internal
|
|
57
|
+
*/
|
|
58
|
+
_meta: TMeta;
|
|
59
|
+
errorFormatter: ErrorFormatter<TContext, TErrorShape>;
|
|
60
|
+
transformer: CombinedDataTransformer;
|
|
61
|
+
// FIXME this is slow:
|
|
62
|
+
// - I think this has to go & be replaced by something by only using `TRecord` without `& SimpleFlatten...`
|
|
63
|
+
// - Potentially, we have a `legacyProcedures` record where we only register the old things that are availble by string path
|
|
64
|
+
procedures: TRecord;
|
|
65
|
+
/**
|
|
66
|
+
* V9 procedures
|
|
67
|
+
* @deprecated
|
|
68
|
+
*/
|
|
69
|
+
legacy: {};
|
|
70
|
+
routers: Filter<TRecord, Router<any>>;
|
|
71
|
+
record: TRecord;
|
|
72
|
+
/**
|
|
73
|
+
* FIXME remove?
|
|
74
|
+
* @deprecated
|
|
75
|
+
*/
|
|
76
|
+
subscriptions: Filter<TRecord, SubscriptionProcedure<any> & { _old: true }>;
|
|
77
|
+
/**
|
|
78
|
+
* FIXME remove?
|
|
79
|
+
* @deprecated
|
|
80
|
+
*/
|
|
81
|
+
queries: Filter<TRecord, QueryProcedure<any> & { _old: true }>;
|
|
82
|
+
/**
|
|
83
|
+
* FIXME remove?
|
|
84
|
+
* @deprecated
|
|
85
|
+
*/
|
|
86
|
+
mutations: Filter<TRecord, MutationProcedure<any> & { _old: true }>;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export type AnyRouterDef<TContext = any> = RouterDef<TContext, any, any, any>;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* @internal
|
|
93
|
+
*/
|
|
94
|
+
export type inferHandlerInput<TProcedure extends Procedure<any>> =
|
|
95
|
+
TProcedure extends Procedure<infer TDef>
|
|
96
|
+
? undefined extends TDef['_input_in'] // ? is input optional
|
|
97
|
+
? unknown extends TDef['_input_in'] // ? is input unset
|
|
98
|
+
? [(null | undefined)?] // -> there is no input
|
|
99
|
+
: [(TDef['_input_in'] | null | undefined)?] // -> there is optional input
|
|
100
|
+
: [TDef['_input_in']] // -> input is required
|
|
101
|
+
: [(undefined | null)?]; // -> there is no input
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* @internal
|
|
105
|
+
*/
|
|
106
|
+
type inferHandlerFn<TProcedures extends Record<string, Procedure<any>>> = <
|
|
107
|
+
TProcedure extends TProcedures[TPath],
|
|
108
|
+
TPath extends keyof TProcedures & string,
|
|
109
|
+
>(
|
|
110
|
+
path: TPath,
|
|
111
|
+
...args: inferHandlerInput<TProcedure>
|
|
112
|
+
) => Promise<inferProcedureOutput<TProcedure>>;
|
|
113
|
+
|
|
114
|
+
type DecorateProcedure<TProcedure extends Procedure<any>> = (
|
|
115
|
+
input: ProcedureArgs<TProcedure['_def']>[0],
|
|
116
|
+
) => Promise<TProcedure['_def']['_output_out']>;
|
|
117
|
+
|
|
118
|
+
type assertProcedure<T> = T extends Procedure<any> ? T : never;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* @internal
|
|
122
|
+
*/
|
|
123
|
+
type DecoratedProcedureRecord<TProcedures extends ProcedureRouterRecord> = {
|
|
124
|
+
[TKey in keyof TProcedures]: TProcedures[TKey] extends AnyRouter
|
|
125
|
+
? DecoratedProcedureRecord<TProcedures[TKey]['_def']['record']>
|
|
126
|
+
: DecorateProcedure<assertProcedure<TProcedures[TKey]>>;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* @internal
|
|
131
|
+
*/
|
|
132
|
+
type RouterCaller<TDef extends AnyRouterDef> = (ctx: TDef['_ctx']) => {
|
|
133
|
+
/**
|
|
134
|
+
* @deprecated
|
|
135
|
+
*/
|
|
136
|
+
query: inferHandlerFn<TDef['queries']>;
|
|
137
|
+
/**
|
|
138
|
+
* @deprecated
|
|
139
|
+
*/
|
|
140
|
+
mutation: inferHandlerFn<TDef['mutations']>;
|
|
141
|
+
/**
|
|
142
|
+
* @deprecated
|
|
143
|
+
*/
|
|
144
|
+
subscription: inferHandlerFn<TDef['subscriptions']>;
|
|
145
|
+
} & DecoratedProcedureRecord<TDef['record']>;
|
|
146
|
+
|
|
147
|
+
export interface Router<TDef extends AnyRouterDef> {
|
|
148
|
+
_def: TDef;
|
|
149
|
+
/** @deprecated **/
|
|
150
|
+
errorFormatter: TDef['errorFormatter'];
|
|
151
|
+
/** @deprecated **/
|
|
152
|
+
transformer: TDef['transformer'];
|
|
153
|
+
createCaller: RouterCaller<TDef>;
|
|
154
|
+
// FIXME rename me and deprecate
|
|
155
|
+
getErrorShape(opts: {
|
|
156
|
+
error: TRPCError;
|
|
157
|
+
type: ProcedureType | 'unknown';
|
|
158
|
+
path: string | undefined;
|
|
159
|
+
input: unknown;
|
|
160
|
+
ctx: undefined | TDef['_ctx'];
|
|
161
|
+
}): TDef['_errorShape'];
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* @internal
|
|
166
|
+
*/
|
|
167
|
+
export type RouterDefaultOptions<TContext> = Pick<
|
|
168
|
+
AnyRouterDef<TContext>,
|
|
169
|
+
'transformer' | 'errorFormatter'
|
|
170
|
+
>;
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* @internal
|
|
174
|
+
*/
|
|
175
|
+
export type RouterBuildOptions<TContext> = Partial<
|
|
176
|
+
Pick<AnyRouterDef<TContext>, 'procedures'>
|
|
177
|
+
>;
|
|
178
|
+
|
|
179
|
+
export type AnyRouter = Router<any>;
|
|
180
|
+
|
|
181
|
+
function isRouter(
|
|
182
|
+
procedureOrRouter: AnyProcedure | AnyRouter,
|
|
183
|
+
): procedureOrRouter is AnyRouter {
|
|
184
|
+
return 'router' in procedureOrRouter._def;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
const emptyRouter = {
|
|
188
|
+
_ctx: null as any,
|
|
189
|
+
_errorShape: null as any,
|
|
190
|
+
_meta: null as any,
|
|
191
|
+
queries: {},
|
|
192
|
+
mutations: {},
|
|
193
|
+
subscriptions: {},
|
|
194
|
+
errorFormatter: defaultFormatter,
|
|
195
|
+
transformer: defaultTransformer,
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
*
|
|
200
|
+
* @internal
|
|
201
|
+
*/
|
|
202
|
+
export function createRouterFactory<TConfig extends RootConfig>(
|
|
203
|
+
defaults?: RouterDefaultOptions<TConfig['ctx']>,
|
|
204
|
+
) {
|
|
205
|
+
return function createRouterInner<
|
|
206
|
+
TProcRouterRecord extends ProcedureRouterRecord,
|
|
207
|
+
>(
|
|
208
|
+
opts: TProcRouterRecord,
|
|
209
|
+
): Router<
|
|
210
|
+
RouterDef<
|
|
211
|
+
TConfig['ctx'],
|
|
212
|
+
TConfig['errorShape'],
|
|
213
|
+
TConfig['meta'],
|
|
214
|
+
TProcRouterRecord
|
|
215
|
+
>
|
|
216
|
+
> &
|
|
217
|
+
TProcRouterRecord {
|
|
218
|
+
const routerProcedures: Record<string, Procedure<any>> = omitPrototype({});
|
|
219
|
+
function recursiveGetPaths(procedures: ProcedureRouterRecord, path = '') {
|
|
220
|
+
for (const [key, procedureOrRouter] of Object.entries(procedures ?? {})) {
|
|
221
|
+
const newPath = `${path}${key}`;
|
|
222
|
+
|
|
223
|
+
if (isRouter(procedureOrRouter)) {
|
|
224
|
+
recursiveGetPaths(procedureOrRouter._def.procedures, `${newPath}.`);
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
routerProcedures[newPath] = procedureOrRouter;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
recursiveGetPaths(opts);
|
|
233
|
+
|
|
234
|
+
const result = mergeWithoutOverrides<
|
|
235
|
+
RouterDefaultOptions<TConfig['ctx']> & RouterBuildOptions<TConfig['ctx']>
|
|
236
|
+
>(
|
|
237
|
+
{
|
|
238
|
+
transformer: defaults?.transformer ?? defaultTransformer,
|
|
239
|
+
errorFormatter: defaults?.errorFormatter ?? defaultFormatter,
|
|
240
|
+
},
|
|
241
|
+
{ procedures: routerProcedures },
|
|
242
|
+
);
|
|
243
|
+
|
|
244
|
+
const _def: AnyRouterDef<TConfig['ctx']> = {
|
|
245
|
+
router: true,
|
|
246
|
+
legacy: {},
|
|
247
|
+
procedures: {},
|
|
248
|
+
...emptyRouter,
|
|
249
|
+
...result,
|
|
250
|
+
record: opts,
|
|
251
|
+
queries: Object.entries(result.procedures || {})
|
|
252
|
+
.filter((pair) => (pair[1] as any)._def.query)
|
|
253
|
+
.reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {}),
|
|
254
|
+
mutations: Object.entries(result.procedures || {})
|
|
255
|
+
.filter((pair) => (pair[1] as any)._def.mutation)
|
|
256
|
+
.reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {}),
|
|
257
|
+
subscriptions: Object.entries(result.procedures || {})
|
|
258
|
+
.filter((pair) => (pair[1] as any)._def.subscription)
|
|
259
|
+
.reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {}),
|
|
260
|
+
routers: Object.entries(result.procedures || {})
|
|
261
|
+
.filter((pair) => (pair[1] as any)._def._router)
|
|
262
|
+
.reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {}),
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
const router: AnyRouter = {
|
|
266
|
+
...opts,
|
|
267
|
+
_def,
|
|
268
|
+
transformer: _def.transformer,
|
|
269
|
+
errorFormatter: _def.errorFormatter,
|
|
270
|
+
createCaller(ctx) {
|
|
271
|
+
const proxy = createProxy(({ path, args }) => {
|
|
272
|
+
// interop mode
|
|
273
|
+
if (
|
|
274
|
+
path.length === 1 &&
|
|
275
|
+
procedureTypes.includes(path[0] as ProcedureType)
|
|
276
|
+
) {
|
|
277
|
+
return callProcedure({
|
|
278
|
+
procedures: _def.procedures,
|
|
279
|
+
path: args[0] as string,
|
|
280
|
+
rawInput: args[1],
|
|
281
|
+
ctx,
|
|
282
|
+
type: path[0] as ProcedureType,
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
const fullPath = path.join('.');
|
|
287
|
+
const procedure = _def.procedures[fullPath] as AnyProcedure;
|
|
288
|
+
|
|
289
|
+
let type: ProcedureType = 'query';
|
|
290
|
+
if (procedure._def.mutation) {
|
|
291
|
+
type = 'mutation';
|
|
292
|
+
} else if (procedure._def.subscription) {
|
|
293
|
+
type = 'subscription';
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
return procedure({
|
|
297
|
+
path: fullPath,
|
|
298
|
+
rawInput: args[0],
|
|
299
|
+
ctx,
|
|
300
|
+
type,
|
|
301
|
+
});
|
|
302
|
+
});
|
|
303
|
+
|
|
304
|
+
return proxy as ReturnType<RouterCaller<any>>;
|
|
305
|
+
},
|
|
306
|
+
getErrorShape(opts) {
|
|
307
|
+
const { path, error } = opts;
|
|
308
|
+
const { code } = opts.error;
|
|
309
|
+
const shape: DefaultErrorShape = {
|
|
310
|
+
message: error.message,
|
|
311
|
+
code: TRPC_ERROR_CODES_BY_KEY[code],
|
|
312
|
+
data: {
|
|
313
|
+
code,
|
|
314
|
+
httpStatus: getHTTPStatusCodeFromError(error),
|
|
315
|
+
},
|
|
316
|
+
};
|
|
317
|
+
if (
|
|
318
|
+
process.env.NODE_ENV !== 'production' &&
|
|
319
|
+
typeof opts.error.stack === 'string'
|
|
320
|
+
) {
|
|
321
|
+
shape.data.stack = opts.error.stack;
|
|
322
|
+
}
|
|
323
|
+
if (typeof path === 'string') {
|
|
324
|
+
shape.data.path = path;
|
|
325
|
+
}
|
|
326
|
+
return this._def.errorFormatter({ ...opts, shape });
|
|
327
|
+
},
|
|
328
|
+
};
|
|
329
|
+
return router as any;
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* @internal
|
|
335
|
+
*/
|
|
336
|
+
export function callProcedure(
|
|
337
|
+
opts: ProcedureCallOptions & { procedures: ProcedureRouterRecord },
|
|
338
|
+
) {
|
|
339
|
+
const { type, path } = opts;
|
|
340
|
+
|
|
341
|
+
if (!(path in opts.procedures) || !opts.procedures[path]?._def[type]) {
|
|
342
|
+
throw new TRPCError({
|
|
343
|
+
code: 'NOT_FOUND',
|
|
344
|
+
message: `No "${type}"-procedure on path "${path}"`,
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
const procedure = opts.procedures[path] as AnyProcedure;
|
|
349
|
+
|
|
350
|
+
return procedure(opts);
|
|
351
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
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
|
+
export const procedureTypes = ['query', 'mutation', 'subscription'] as const;
|
|
21
|
+
/**
|
|
22
|
+
* @public
|
|
23
|
+
*/
|
|
24
|
+
export type ProcedureType = typeof procedureTypes[number];
|
|
25
|
+
|
|
26
|
+
export type inferHandlerInput<TProcedure extends Procedure<any>> =
|
|
27
|
+
ProcedureArgs<inferProcedureParams<TProcedure>>;
|
|
28
|
+
|
|
29
|
+
export type inferProcedureInput<TProcedure extends Procedure<any>> =
|
|
30
|
+
inferHandlerInput<TProcedure>[0];
|
|
31
|
+
|
|
32
|
+
// /**
|
|
33
|
+
// * @internal
|
|
34
|
+
// */
|
|
35
|
+
// type inferProcedureFn<TProcedure extends Procedure<any>> =
|
|
36
|
+
// TProcedure extends QueryProcedure<any>
|
|
37
|
+
// ? TProcedure['query']
|
|
38
|
+
// : TProcedure extends SubscriptionProcedure<any>
|
|
39
|
+
// ? TProcedure['subscription']
|
|
40
|
+
// : TProcedure extends MutationProcedure<any>
|
|
41
|
+
// ? TProcedure['mutate']
|
|
42
|
+
// : never;
|
|
43
|
+
|
|
44
|
+
export type inferProcedureParams<TProcedure> = TProcedure extends Procedure<any>
|
|
45
|
+
? TProcedure['_def']
|
|
46
|
+
: never;
|
|
47
|
+
export type inferProcedureOutput<TProcedure> =
|
|
48
|
+
inferProcedureParams<TProcedure>['_output_out'];
|
|
49
|
+
|
|
50
|
+
export type inferSubscriptionOutput<
|
|
51
|
+
TRouter extends AnyRouter,
|
|
52
|
+
TPath extends keyof TRouter['_def']['subscriptions'] & string,
|
|
53
|
+
> = inferObservableValue<
|
|
54
|
+
inferProcedureOutput<TRouter['_def']['subscriptions'][TPath]>
|
|
55
|
+
>;
|
|
56
|
+
|
|
57
|
+
export type inferProcedureClientError<T extends Procedure<any>> =
|
|
58
|
+
inferProcedureParams<T>['_config']['errorShape'];
|
|
@@ -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 */
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
+
import { TRPCError } from '../../error/TRPCError';
|
|
1
2
|
import { ProcedureType } from '../router';
|
|
2
|
-
import { TRPCError } from '../TRPCError';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated
|
|
6
|
+
*/
|
|
7
|
+
export const middlewareMarker = 'middlewareMarker' as 'middlewareMarker' & {
|
|
8
|
+
__brand: 'middlewareMarker';
|
|
9
|
+
};
|
|
10
|
+
|
|
5
11
|
interface MiddlewareResultBase<TContext> {
|
|
6
12
|
/**
|
|
7
13
|
* All middlewares should pass through their `next()`'s output.
|
|
@@ -11,11 +17,18 @@ interface MiddlewareResultBase<TContext> {
|
|
|
11
17
|
ctx: TContext;
|
|
12
18
|
}
|
|
13
19
|
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated
|
|
22
|
+
*/
|
|
14
23
|
interface MiddlewareOKResult<TContext> extends MiddlewareResultBase<TContext> {
|
|
15
24
|
ok: true;
|
|
16
25
|
data: unknown;
|
|
17
26
|
// this could be extended with `input`/`rawInput` later
|
|
18
27
|
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @deprecated
|
|
31
|
+
*/
|
|
19
32
|
interface MiddlewareErrorResult<TContext>
|
|
20
33
|
extends MiddlewareResultBase<TContext> {
|
|
21
34
|
ok: false;
|
|
@@ -23,15 +36,22 @@ interface MiddlewareErrorResult<TContext>
|
|
|
23
36
|
// we could guarantee it's always of this type
|
|
24
37
|
}
|
|
25
38
|
|
|
39
|
+
/**
|
|
40
|
+
* @deprecated
|
|
41
|
+
*/
|
|
26
42
|
export type MiddlewareResult<TContext> =
|
|
27
43
|
| MiddlewareOKResult<TContext>
|
|
28
44
|
| MiddlewareErrorResult<TContext>;
|
|
29
45
|
|
|
30
|
-
|
|
46
|
+
/**
|
|
47
|
+
* @deprecated
|
|
48
|
+
*/
|
|
49
|
+
export type MiddlewareFunction<TInputContext, TContext, TMeta> = (opts: {
|
|
31
50
|
ctx: TInputContext;
|
|
32
51
|
type: ProcedureType;
|
|
33
52
|
path: string;
|
|
34
53
|
rawInput: unknown;
|
|
54
|
+
meta?: TMeta;
|
|
35
55
|
next: {
|
|
36
56
|
(): Promise<MiddlewareResult<TInputContext>>;
|
|
37
57
|
<T>(opts: { ctx: T }): Promise<MiddlewareResult<T>>;
|