@trpc/server 11.0.0-next.92 → 11.0.0-rc.330
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 +6 -6
- package/adapters/next-app-dir/index.d.ts +1 -0
- package/adapters/next-app-dir/index.js +1 -0
- package/dist/@trpc/server/http.d.ts +8 -0
- package/dist/@trpc/server/http.d.ts.map +1 -0
- package/dist/@trpc/server/index.d.ts +61 -0
- package/dist/@trpc/server/index.d.ts.map +1 -0
- package/dist/@trpc/server/rpc.d.ts +3 -0
- package/dist/@trpc/server/rpc.d.ts.map +1 -0
- package/dist/adapters/aws-lambda/index.d.ts +11 -2
- package/dist/adapters/aws-lambda/index.d.ts.map +1 -1
- package/dist/adapters/aws-lambda/index.js +27 -106
- package/dist/adapters/aws-lambda/index.mjs +14 -91
- package/dist/adapters/aws-lambda/utils.d.ts +14 -14
- package/dist/adapters/aws-lambda/utils.d.ts.map +1 -1
- package/dist/adapters/aws-lambda/utils.js +100 -0
- package/dist/adapters/aws-lambda/utils.mjs +93 -0
- package/dist/adapters/express.d.ts +11 -2
- package/dist/adapters/express.d.ts.map +1 -1
- package/dist/adapters/express.js +2 -14
- package/dist/adapters/express.mjs +2 -12
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts +4 -4
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
- package/dist/adapters/fastify/fastifyRequestHandler.js +80 -0
- package/dist/adapters/fastify/fastifyRequestHandler.mjs +78 -0
- package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +13 -4
- package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -1
- package/dist/adapters/fastify/fastifyTRPCPlugin.js +48 -0
- package/dist/adapters/fastify/fastifyTRPCPlugin.mjs +46 -0
- package/dist/adapters/fastify/index.js +4 -126
- package/dist/adapters/fastify/index.mjs +2 -126
- package/dist/adapters/fetch/fetchRequestHandler.d.ts +11 -2
- package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -1
- package/dist/adapters/fetch/fetchRequestHandler.js +118 -0
- package/dist/adapters/fetch/fetchRequestHandler.mjs +116 -0
- package/dist/adapters/fetch/index.js +2 -106
- package/dist/adapters/fetch/index.mjs +1 -107
- package/dist/adapters/fetch/types.d.ts +13 -4
- package/dist/adapters/fetch/types.d.ts.map +1 -1
- package/dist/adapters/next-app-dir/formDataToObject.d.ts +2 -0
- package/dist/adapters/next-app-dir/formDataToObject.d.ts.map +1 -0
- package/dist/adapters/next-app-dir/formDataToObject.js +34 -0
- package/dist/adapters/next-app-dir/formDataToObject.mjs +32 -0
- package/dist/adapters/next-app-dir/nextAppDirCaller.d.ts +24 -0
- package/dist/adapters/next-app-dir/nextAppDirCaller.d.ts.map +1 -0
- package/dist/adapters/next-app-dir/nextAppDirCaller.js +85 -0
- package/dist/adapters/next-app-dir/nextAppDirCaller.mjs +83 -0
- package/dist/adapters/next-app-dir/notFound.d.ts +7 -0
- package/dist/adapters/next-app-dir/notFound.d.ts.map +1 -0
- package/dist/adapters/next-app-dir/notFound.js +15 -0
- package/dist/adapters/next-app-dir/notFound.mjs +13 -0
- package/dist/adapters/next-app-dir/redirect.d.ts +18 -0
- package/dist/adapters/next-app-dir/redirect.d.ts.map +1 -0
- package/dist/adapters/next-app-dir/redirect.js +33 -0
- package/dist/adapters/next-app-dir/redirect.mjs +30 -0
- package/dist/adapters/next-app-dir/rethrowNextErrors.d.ts +6 -0
- package/dist/adapters/next-app-dir/rethrowNextErrors.d.ts.map +1 -0
- package/dist/adapters/next-app-dir/rethrowNextErrors.js +23 -0
- package/dist/adapters/next-app-dir/rethrowNextErrors.mjs +21 -0
- package/dist/adapters/next-app-dir.d.ts +4 -0
- package/dist/adapters/next-app-dir.d.ts.map +1 -0
- package/dist/adapters/next-app-dir.js +11 -0
- package/dist/adapters/next-app-dir.mjs +3 -0
- package/dist/adapters/next.d.ts +16 -3
- package/dist/adapters/next.d.ts.map +1 -1
- package/dist/adapters/next.js +19 -19
- package/dist/adapters/next.mjs +18 -16
- package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.d.ts +6 -3
- package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.d.ts.map +1 -1
- package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.js +161 -0
- package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.mjs +157 -0
- package/dist/adapters/node-http/content-type/form-data/index.d.ts +6 -8
- package/dist/adapters/node-http/content-type/form-data/index.d.ts.map +1 -1
- package/dist/adapters/node-http/content-type/form-data/index.js +21 -647
- package/dist/adapters/node-http/content-type/form-data/index.mjs +10 -632
- package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.d.ts +2 -2
- package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.d.ts.map +1 -1
- package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.js +29 -0
- package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.mjs +27 -0
- package/dist/adapters/node-http/content-type/form-data/streamSlice.d.ts +2 -1
- package/dist/adapters/node-http/content-type/form-data/streamSlice.d.ts.map +1 -1
- package/dist/adapters/node-http/content-type/form-data/streamSlice.js +46 -0
- package/dist/adapters/node-http/content-type/form-data/streamSlice.mjs +44 -0
- package/dist/adapters/node-http/content-type/form-data/uploadHandler.d.ts +2 -2
- package/dist/adapters/node-http/content-type/form-data/uploadHandler.d.ts.map +1 -1
- package/dist/adapters/node-http/content-type/form-data/uploadHandler.js +30 -0
- package/dist/adapters/node-http/content-type/form-data/uploadHandler.mjs +26 -0
- package/dist/adapters/node-http/content-type/json/getPostBody.d.ts +2 -2
- package/dist/adapters/node-http/content-type/json/getPostBody.d.ts.map +1 -1
- package/dist/adapters/node-http/content-type/json/getPostBody.js +53 -0
- package/dist/adapters/node-http/content-type/json/getPostBody.mjs +51 -0
- package/dist/adapters/node-http/content-type/json/index.js +5 -42
- package/dist/adapters/node-http/content-type/json/index.mjs +4 -39
- package/dist/adapters/node-http/index.js +1 -14
- package/dist/adapters/node-http/index.mjs +1 -12
- package/dist/adapters/node-http/internals/contentType.d.ts +3 -3
- package/dist/adapters/node-http/internals/contentType.d.ts.map +1 -1
- package/dist/{contentType-8c16408e.js → adapters/node-http/internals/contentType.js} +1 -0
- package/dist/{contentType-3194ed5f.mjs → adapters/node-http/internals/contentType.mjs} +2 -1
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +11 -2
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
- package/dist/{nodeHTTPRequestHandler-18f3370e.js → adapters/node-http/nodeHTTPRequestHandler.js} +18 -10
- package/dist/{nodeHTTPRequestHandler-0986c5a1.mjs → adapters/node-http/nodeHTTPRequestHandler.mjs} +18 -10
- package/dist/adapters/node-http/types.d.ts +18 -9
- package/dist/adapters/node-http/types.d.ts.map +1 -1
- package/dist/adapters/standalone.d.ts +11 -2
- package/dist/adapters/standalone.d.ts.map +1 -1
- package/dist/adapters/standalone.js +9 -22
- package/dist/adapters/standalone.mjs +9 -16
- package/dist/adapters/ws.d.ts +18 -17
- package/dist/adapters/ws.d.ts.map +1 -1
- package/dist/adapters/ws.js +34 -22
- package/dist/adapters/ws.mjs +27 -14
- package/dist/bundle-analysis.json +382 -495
- package/dist/http.d.ts +2 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +17 -0
- package/dist/http.mjs +6 -0
- package/dist/index.d.ts +1 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -86
- package/dist/index.mjs +8 -81
- package/dist/observable/index.d.ts +4 -4
- package/dist/observable/index.d.ts.map +1 -1
- package/dist/observable/index.js +6 -149
- package/dist/observable/index.mjs +2 -147
- package/dist/observable/observable.d.ts +9 -1
- package/dist/observable/observable.d.ts.map +1 -1
- package/dist/{observable-464116ac.js → observable/observable.js} +50 -20
- package/dist/{observable-ade1bad8.mjs → observable/observable.mjs} +50 -21
- package/dist/observable/operators.d.ts +8 -0
- package/dist/observable/operators.d.ts.map +1 -0
- package/dist/observable/operators.js +99 -0
- package/dist/observable/operators.mjs +95 -0
- package/dist/observable/types.d.ts +2 -5
- package/dist/observable/types.d.ts.map +1 -1
- package/dist/rpc.d.ts +2 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/{rpc/index.js → rpc.js} +3 -4
- package/dist/rpc.mjs +3 -0
- package/dist/shared.d.ts +26 -0
- package/dist/shared.d.ts.map +1 -0
- package/dist/shared.js +10 -0
- package/dist/shared.mjs +3 -0
- package/dist/unstable-core-do-not-import/clientish/inference.d.ts +17 -0
- package/dist/unstable-core-do-not-import/clientish/inference.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/clientish/inferrable.d.ts +32 -0
- package/dist/unstable-core-do-not-import/clientish/inferrable.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/clientish/serialize.d.ts +62 -0
- package/dist/unstable-core-do-not-import/clientish/serialize.d.ts.map +1 -0
- package/dist/{shared/createProxy/index.d.ts → unstable-core-do-not-import/createProxy.d.ts} +1 -1
- package/dist/unstable-core-do-not-import/createProxy.d.ts.map +1 -0
- package/dist/{index-784ff647.js → unstable-core-do-not-import/createProxy.js} +0 -51
- package/dist/unstable-core-do-not-import/createProxy.mjs +49 -0
- package/dist/{error → unstable-core-do-not-import/error}/TRPCError.d.ts +3 -2
- package/dist/unstable-core-do-not-import/error/TRPCError.d.ts.map +1 -0
- package/dist/{TRPCError-ae7b67e8.js → unstable-core-do-not-import/error/TRPCError.js} +25 -25
- package/dist/{TRPCError-816ff32e.mjs → unstable-core-do-not-import/error/TRPCError.mjs} +24 -25
- package/dist/{error → unstable-core-do-not-import/error}/formatter.d.ts +11 -6
- package/dist/unstable-core-do-not-import/error/formatter.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/error/formatter.js +7 -0
- package/dist/unstable-core-do-not-import/error/formatter.mjs +5 -0
- package/dist/unstable-core-do-not-import/error/getErrorShape.d.ts +15 -0
- package/dist/unstable-core-do-not-import/error/getErrorShape.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/error/getErrorShape.js +31 -0
- package/dist/unstable-core-do-not-import/error/getErrorShape.mjs +29 -0
- package/dist/unstable-core-do-not-import/http/batchStreamFormatter.d.ts.map +1 -0
- package/dist/{batchStreamFormatter-fc1ffb26.mjs → unstable-core-do-not-import/http/batchStreamFormatter.mjs} +1 -1
- package/dist/{http → unstable-core-do-not-import/http}/contentType.d.ts +3 -3
- package/dist/unstable-core-do-not-import/http/contentType.d.ts.map +1 -0
- package/dist/{contentType-90bad7bb.js → unstable-core-do-not-import/http/contentType.js} +1 -1
- package/dist/{contentType-93515a46.mjs → unstable-core-do-not-import/http/contentType.mjs} +2 -2
- package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.d.ts +5 -0
- package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.js +52 -0
- package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.mjs +49 -0
- package/dist/unstable-core-do-not-import/http/index.d.ts +12 -0
- package/dist/unstable-core-do-not-import/http/index.d.ts.map +1 -0
- package/dist/{http → unstable-core-do-not-import/http}/resolveHTTPResponse.d.ts +4 -5
- package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.d.ts.map +1 -0
- package/dist/{resolveHTTPResponse-5def1b0c.js → unstable-core-do-not-import/http/resolveHTTPResponse.js} +60 -63
- package/dist/{resolveHTTPResponse-55c648bd.mjs → unstable-core-do-not-import/http/resolveHTTPResponse.mjs} +54 -57
- package/dist/unstable-core-do-not-import/http/toURL.d.ts +2 -0
- package/dist/unstable-core-do-not-import/http/toURL.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/http/toURL.js +8 -0
- package/dist/unstable-core-do-not-import/http/toURL.mjs +6 -0
- package/dist/unstable-core-do-not-import/http/types.d.ts +109 -0
- package/dist/unstable-core-do-not-import/http/types.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/initTRPC.d.ts +102 -0
- package/dist/unstable-core-do-not-import/initTRPC.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/initTRPC.js +81 -0
- package/dist/unstable-core-do-not-import/initTRPC.mjs +79 -0
- package/dist/unstable-core-do-not-import/middleware.d.ts +106 -0
- package/dist/unstable-core-do-not-import/middleware.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/middleware.js +96 -0
- package/dist/unstable-core-do-not-import/middleware.mjs +90 -0
- package/dist/{core → unstable-core-do-not-import}/parser.d.ts +3 -7
- package/dist/unstable-core-do-not-import/parser.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/parser.js +37 -0
- package/dist/unstable-core-do-not-import/parser.mjs +35 -0
- package/dist/unstable-core-do-not-import/procedure.d.ts +75 -0
- package/dist/unstable-core-do-not-import/procedure.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/procedure.js +9 -0
- package/dist/unstable-core-do-not-import/procedure.mjs +7 -0
- package/dist/unstable-core-do-not-import/procedureBuilder.d.ts +134 -0
- package/dist/unstable-core-do-not-import/procedureBuilder.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/procedureBuilder.js +204 -0
- package/dist/unstable-core-do-not-import/procedureBuilder.mjs +201 -0
- package/dist/{core/internals/config.d.ts → unstable-core-do-not-import/rootConfig.d.ts} +19 -27
- package/dist/unstable-core-do-not-import/rootConfig.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/rootConfig.js +8 -0
- package/dist/unstable-core-do-not-import/rootConfig.mjs +6 -0
- package/dist/unstable-core-do-not-import/router.d.ts +81 -0
- package/dist/unstable-core-do-not-import/router.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/router.js +168 -0
- package/dist/unstable-core-do-not-import/router.mjs +163 -0
- package/dist/{rpc → unstable-core-do-not-import/rpc}/codes.d.ts +8 -16
- package/dist/unstable-core-do-not-import/rpc/codes.d.ts.map +1 -0
- package/dist/{codes-87f6824b.js → unstable-core-do-not-import/rpc/codes.js} +19 -13
- package/dist/{codes-c924c3db.mjs → unstable-core-do-not-import/rpc/codes.mjs} +20 -13
- package/dist/{rpc → unstable-core-do-not-import/rpc}/envelopes.d.ts +6 -4
- package/dist/unstable-core-do-not-import/rpc/envelopes.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/rpc/index.d.ts +5 -0
- package/dist/unstable-core-do-not-import/rpc/index.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.d.ts.map +1 -0
- package/dist/{parseTRPCMessage-1377f305.js → unstable-core-do-not-import/rpc/parseTRPCMessage.js} +5 -2
- package/dist/{parseTRPCMessage-a0f17853.mjs → unstable-core-do-not-import/rpc/parseTRPCMessage.mjs} +6 -3
- package/dist/unstable-core-do-not-import/transformer.d.ts +101 -0
- package/dist/unstable-core-do-not-import/transformer.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/transformer.js +106 -0
- package/dist/unstable-core-do-not-import/transformer.mjs +101 -0
- package/dist/unstable-core-do-not-import/types.d.ts +103 -0
- package/dist/unstable-core-do-not-import/types.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/types.js +11 -0
- package/dist/unstable-core-do-not-import/types.mjs +9 -0
- package/dist/unstable-core-do-not-import/utils.d.ts +19 -0
- package/dist/unstable-core-do-not-import/utils.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/utils.js +37 -0
- package/dist/unstable-core-do-not-import/utils.mjs +32 -0
- package/dist/unstable-core-do-not-import.d.ts +31 -0
- package/dist/unstable-core-do-not-import.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import.js +66 -0
- package/dist/unstable-core-do-not-import.mjs +21 -0
- package/package.json +51 -69
- package/src/@trpc/server/http.ts +27 -0
- package/src/@trpc/server/index.ts +100 -0
- package/src/@trpc/server/rpc.ts +26 -0
- package/src/adapters/aws-lambda/index.ts +21 -10
- package/src/adapters/aws-lambda/utils.ts +33 -26
- package/src/adapters/express.ts +18 -4
- package/src/adapters/fastify/fastifyRequestHandler.ts +22 -12
- package/src/adapters/fastify/fastifyTRPCPlugin.ts +21 -9
- package/src/adapters/fetch/fetchRequestHandler.ts +36 -12
- package/src/adapters/fetch/types.ts +18 -4
- package/src/adapters/next-app-dir/formDataToObject.ts +36 -0
- package/src/adapters/next-app-dir/nextAppDirCaller.ts +129 -0
- package/src/adapters/next-app-dir/notFound.ts +12 -0
- package/src/adapters/next-app-dir/redirect.ts +30 -0
- package/src/adapters/next-app-dir/rethrowNextErrors.ts +25 -0
- package/src/adapters/next-app-dir.ts +3 -0
- package/src/adapters/next.ts +30 -14
- package/src/adapters/node-http/content-type/form-data/fileUploadHandler.ts +11 -4
- package/src/adapters/node-http/content-type/form-data/index.ts +18 -18
- package/src/adapters/node-http/content-type/form-data/memoryUploadHandler.ts +3 -2
- package/src/adapters/node-http/content-type/form-data/streamSlice.ts +7 -2
- package/src/adapters/node-http/content-type/form-data/uploadHandler.ts +2 -2
- package/src/adapters/node-http/content-type/json/getPostBody.ts +20 -3
- package/src/adapters/node-http/content-type/json/index.ts +1 -1
- package/src/adapters/node-http/internals/contentType.ts +5 -3
- package/src/adapters/node-http/nodeHTTPRequestHandler.ts +28 -16
- package/src/adapters/node-http/types.ts +24 -9
- package/src/adapters/standalone.ts +22 -8
- package/src/adapters/ws.ts +68 -39
- package/src/http.ts +1 -0
- package/src/index.ts +1 -20
- package/src/observable/index.ts +10 -4
- package/src/observable/observable.ts +63 -3
- package/src/observable/operators.ts +114 -0
- package/src/observable/types.ts +1 -5
- package/src/rpc.ts +1 -0
- package/src/shared.ts +26 -0
- package/src/unstable-core-do-not-import/clientish/inference.ts +60 -0
- package/src/unstable-core-do-not-import/clientish/inferrable.ts +49 -0
- package/src/unstable-core-do-not-import/clientish/serialize.ts +122 -0
- package/src/{error → unstable-core-do-not-import/error}/TRPCError.ts +33 -27
- package/src/{error → unstable-core-do-not-import/error}/formatter.ts +12 -19
- package/src/{shared → unstable-core-do-not-import/error}/getErrorShape.ts +8 -8
- package/src/{http → unstable-core-do-not-import/http}/contentType.ts +4 -4
- package/src/{http → unstable-core-do-not-import/http}/getHTTPStatusCode.ts +8 -8
- package/src/unstable-core-do-not-import/http/index.ts +29 -0
- package/src/{http → unstable-core-do-not-import/http}/resolveHTTPResponse.ts +69 -69
- package/src/unstable-core-do-not-import/http/toURL.ts +7 -0
- package/src/unstable-core-do-not-import/http/types.ts +126 -0
- package/src/unstable-core-do-not-import/initTRPC.ts +151 -0
- package/src/unstable-core-do-not-import/middleware.ts +238 -0
- package/src/unstable-core-do-not-import/parser.ts +94 -0
- package/src/unstable-core-do-not-import/procedure.ts +94 -0
- package/src/unstable-core-do-not-import/procedureBuilder.ts +623 -0
- package/src/{core/internals/config.ts → unstable-core-do-not-import/rootConfig.ts} +22 -33
- package/src/unstable-core-do-not-import/router.ts +363 -0
- package/src/{rpc → unstable-core-do-not-import/rpc}/codes.ts +30 -3
- package/src/{rpc → unstable-core-do-not-import/rpc}/envelopes.ts +6 -9
- package/src/unstable-core-do-not-import/rpc/index.ts +21 -0
- package/src/{rpc → unstable-core-do-not-import/rpc}/parseTRPCMessage.ts +4 -3
- package/src/unstable-core-do-not-import/transformer.ts +194 -0
- package/src/unstable-core-do-not-import/types.ts +157 -0
- package/src/unstable-core-do-not-import/utils.ts +43 -0
- package/src/unstable-core-do-not-import.ts +30 -0
- package/unstable-core-do-not-import/index.d.ts +1 -0
- package/unstable-core-do-not-import/index.js +1 -0
- package/dist/TRPCError-efecb077.js +0 -63
- package/dist/batchStreamFormatter-2c1405a1.js +0 -31
- package/dist/codes-e5bb4d58.js +0 -48
- package/dist/config-5de7eae5.js +0 -10
- package/dist/config-60fc2667.js +0 -7
- package/dist/config-ab4c1c6b.mjs +0 -5
- package/dist/contentType-24c44bba.js +0 -5
- package/dist/contentType-9940f5d7.js +0 -58
- package/dist/core/index.d.ts +0 -9
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/initTRPC.d.ts +0 -105
- package/dist/core/initTRPC.d.ts.map +0 -1
- package/dist/core/internals/builderTypes.d.ts +0 -11
- package/dist/core/internals/builderTypes.d.ts.map +0 -1
- package/dist/core/internals/config.d.ts.map +0 -1
- package/dist/core/internals/getParseFn.d.ts +0 -4
- package/dist/core/internals/getParseFn.d.ts.map +0 -1
- package/dist/core/internals/mergeRouters.d.ts +0 -15
- package/dist/core/internals/mergeRouters.d.ts.map +0 -1
- package/dist/core/internals/mergeWithoutOverrides.d.ts +0 -5
- package/dist/core/internals/mergeWithoutOverrides.d.ts.map +0 -1
- package/dist/core/internals/omitPrototype.d.ts +0 -6
- package/dist/core/internals/omitPrototype.d.ts.map +0 -1
- package/dist/core/internals/procedureBuilder.d.ts +0 -113
- package/dist/core/internals/procedureBuilder.d.ts.map +0 -1
- package/dist/core/internals/utils.d.ts +0 -51
- package/dist/core/internals/utils.d.ts.map +0 -1
- package/dist/core/middleware.d.ts +0 -158
- package/dist/core/middleware.d.ts.map +0 -1
- package/dist/core/parser.d.ts.map +0 -1
- package/dist/core/procedure.d.ts +0 -72
- package/dist/core/procedure.d.ts.map +0 -1
- package/dist/core/router.d.ts +0 -65
- package/dist/core/router.d.ts.map +0 -1
- package/dist/core/types.d.ts +0 -24
- package/dist/core/types.d.ts.map +0 -1
- package/dist/error/TRPCError.d.ts.map +0 -1
- package/dist/error/formatter.d.ts.map +0 -1
- package/dist/error/utils.d.ts +0 -9
- package/dist/error/utils.d.ts.map +0 -1
- package/dist/http/batchStreamFormatter.d.ts.map +0 -1
- package/dist/http/contentType.d.ts.map +0 -1
- package/dist/http/getHTTPStatusCode.d.ts +0 -24
- package/dist/http/getHTTPStatusCode.d.ts.map +0 -1
- package/dist/http/index.d.ts +0 -5
- package/dist/http/index.d.ts.map +0 -1
- package/dist/http/index.js +0 -21
- package/dist/http/index.mjs +0 -9
- package/dist/http/internals/types.d.ts +0 -32
- package/dist/http/internals/types.d.ts.map +0 -1
- package/dist/http/resolveHTTPResponse.d.ts.map +0 -1
- package/dist/http/types.d.ts +0 -46
- package/dist/http/types.d.ts.map +0 -1
- package/dist/index-46cb3130.js +0 -94
- package/dist/index-f91d720c.mjs +0 -97
- package/dist/internals/invert.d.ts +0 -12
- package/dist/internals/invert.d.ts.map +0 -1
- package/dist/internals/types.d.ts +0 -26
- package/dist/internals/types.d.ts.map +0 -1
- package/dist/nodeHTTPRequestHandler-388f5fce.js +0 -107
- package/dist/observable/internals/identity.d.ts +0 -2
- package/dist/observable/internals/identity.d.ts.map +0 -1
- package/dist/observable/internals/observableToPromise.d.ts +0 -10
- package/dist/observable/internals/observableToPromise.d.ts.map +0 -1
- package/dist/observable/internals/pipe.d.ts +0 -4
- package/dist/observable/internals/pipe.d.ts.map +0 -1
- package/dist/observable/operators/index.d.ts +0 -4
- package/dist/observable/operators/index.d.ts.map +0 -1
- package/dist/observable/operators/map.d.ts +0 -3
- package/dist/observable/operators/map.d.ts.map +0 -1
- package/dist/observable/operators/share.d.ts +0 -6
- package/dist/observable/operators/share.d.ts.map +0 -1
- package/dist/observable/operators/tap.d.ts +0 -3
- package/dist/observable/operators/tap.d.ts.map +0 -1
- package/dist/observable-15588f28.js +0 -83
- package/dist/parseTRPCMessage-95955211.js +0 -63
- package/dist/resolveHTTPResponse-8d474952.js +0 -267
- package/dist/router-3c22fe56.js +0 -159
- package/dist/router-5274e533.mjs +0 -153
- package/dist/router-a1635eab.js +0 -147
- package/dist/rpc/codes.d.ts.map +0 -1
- package/dist/rpc/envelopes.d.ts.map +0 -1
- package/dist/rpc/index.d.ts +0 -4
- package/dist/rpc/index.d.ts.map +0 -1
- package/dist/rpc/index.mjs +0 -2
- package/dist/rpc/parseTRPCMessage.d.ts.map +0 -1
- package/dist/shared/createProxy/index.d.ts.map +0 -1
- package/dist/shared/getErrorShape.d.ts +0 -15
- package/dist/shared/getErrorShape.d.ts.map +0 -1
- package/dist/shared/index.d.ts +0 -7
- package/dist/shared/index.d.ts.map +0 -1
- package/dist/shared/index.js +0 -14
- package/dist/shared/index.mjs +0 -3
- package/dist/shared/internal/serialize.d.ts +0 -30
- package/dist/shared/internal/serialize.d.ts.map +0 -1
- package/dist/shared/jsonify.d.ts +0 -11
- package/dist/shared/jsonify.d.ts.map +0 -1
- package/dist/shared/transformTRPCResponse.d.ts +0 -9
- package/dist/shared/transformTRPCResponse.d.ts.map +0 -1
- package/dist/shared/types.d.ts +0 -6
- package/dist/shared/types.d.ts.map +0 -1
- package/dist/transformTRPCResponse-1153b421.mjs +0 -53
- package/dist/transformTRPCResponse-20ce3b68.js +0 -54
- package/dist/transformTRPCResponse-e65f34e9.js +0 -56
- package/dist/transformer.d.ts +0 -74
- package/dist/transformer.d.ts.map +0 -1
- package/dist/types.d.ts +0 -83
- package/dist/types.d.ts.map +0 -1
- package/dist/unstableInternalsExport-10cc2bae.mjs +0 -353
- package/dist/unstableInternalsExport-a064a7dd.js +0 -349
- package/dist/unstableInternalsExport-bf8496ea.js +0 -363
- package/dist/unstableInternalsExport.d.ts +0 -11
- package/dist/unstableInternalsExport.d.ts.map +0 -1
- package/dist/unstableInternalsExport.js +0 -16
- package/dist/unstableInternalsExport.mjs +0 -5
- package/src/core/index.ts +0 -28
- package/src/core/initTRPC.ts +0 -169
- package/src/core/internals/builderTypes.ts +0 -11
- package/src/core/internals/getParseFn.ts +0 -43
- package/src/core/internals/mergeRouters.ts +0 -90
- package/src/core/internals/mergeWithoutOverrides.ts +0 -19
- package/src/core/internals/omitPrototype.ts +0 -9
- package/src/core/internals/procedureBuilder.ts +0 -394
- package/src/core/internals/utils.ts +0 -84
- package/src/core/middleware.ts +0 -295
- package/src/core/parser.ts +0 -57
- package/src/core/procedure.ts +0 -88
- package/src/core/router.ts +0 -226
- package/src/core/types.ts +0 -67
- package/src/error/utils.ts +0 -23
- package/src/http/index.ts +0 -4
- package/src/http/internals/types.ts +0 -40
- package/src/http/types.ts +0 -51
- package/src/internals/invert.ts +0 -21
- package/src/internals/types.ts +0 -27
- package/src/observable/internals/identity.ts +0 -3
- package/src/observable/internals/observableToPromise.ts +0 -49
- package/src/observable/internals/pipe.ts +0 -23
- package/src/observable/operators/index.ts +0 -3
- package/src/observable/operators/map.ts +0 -25
- package/src/observable/operators/share.ts +0 -65
- package/src/observable/operators/tap.ts +0 -26
- package/src/rpc/index.ts +0 -3
- package/src/shared/index.ts +0 -10
- package/src/shared/internal/serialize.ts +0 -65
- package/src/shared/jsonify.ts +0 -22
- package/src/shared/transformTRPCResponse.ts +0 -40
- package/src/shared/types.ts +0 -9
- package/src/transformer.ts +0 -94
- package/src/types.ts +0 -125
- package/src/unstableInternalsExport.ts +0 -10
- package/subscription/index.d.ts +0 -1
- package/subscription/index.js +0 -1
- package/unstableInternalsExport/index.d.ts +0 -1
- package/unstableInternalsExport/index.js +0 -1
- /package/dist/{http → unstable-core-do-not-import/http}/batchStreamFormatter.d.ts +0 -0
- /package/dist/{batchStreamFormatter-93cdcdd4.js → unstable-core-do-not-import/http/batchStreamFormatter.js} +0 -0
- /package/dist/{rpc → unstable-core-do-not-import/rpc}/parseTRPCMessage.d.ts +0 -0
- /package/src/{shared/createProxy/index.ts → unstable-core-do-not-import/createProxy.ts} +0 -0
- /package/src/{http → unstable-core-do-not-import/http}/batchStreamFormatter.ts +0 -0
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
import type { Observable } from '../observable';
|
|
2
|
+
import { createRecursiveProxy } from './createProxy';
|
|
3
|
+
import { defaultFormatter } from './error/formatter';
|
|
4
|
+
import { getTRPCErrorFromUnknown, TRPCError } from './error/TRPCError';
|
|
5
|
+
import type {
|
|
6
|
+
AnyProcedure,
|
|
7
|
+
ErrorHandlerOptions,
|
|
8
|
+
inferProcedureInput,
|
|
9
|
+
inferProcedureOutput,
|
|
10
|
+
} from './procedure';
|
|
11
|
+
import type { ProcedureCallOptions } from './procedureBuilder';
|
|
12
|
+
import type { AnyRootTypes, RootConfig } from './rootConfig';
|
|
13
|
+
import { defaultTransformer } from './transformer';
|
|
14
|
+
import type { MaybePromise, ValueOf } from './types';
|
|
15
|
+
import { isFunction, mergeWithoutOverrides, omitPrototype } from './utils';
|
|
16
|
+
|
|
17
|
+
export interface RouterRecord {
|
|
18
|
+
[key: string]: AnyProcedure | RouterRecord;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
type DecorateProcedure<TProcedure extends AnyProcedure> = (
|
|
22
|
+
input: inferProcedureInput<TProcedure>,
|
|
23
|
+
) => Promise<
|
|
24
|
+
TProcedure['_def']['type'] extends 'subscription'
|
|
25
|
+
? Observable<inferProcedureOutput<TProcedure>, TRPCError>
|
|
26
|
+
: inferProcedureOutput<TProcedure>
|
|
27
|
+
>;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
export type DecorateRouterRecord<TRecord extends RouterRecord> = {
|
|
33
|
+
[TKey in keyof TRecord]: TRecord[TKey] extends AnyProcedure
|
|
34
|
+
? DecorateProcedure<TRecord[TKey]>
|
|
35
|
+
: TRecord[TKey] extends RouterRecord
|
|
36
|
+
? DecorateRouterRecord<TRecord[TKey]>
|
|
37
|
+
: never;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @internal
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
export type RouterCallerErrorHandler<TContext> = (
|
|
45
|
+
opts: ErrorHandlerOptions<TContext>,
|
|
46
|
+
) => void;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
export type RouterCaller<
|
|
52
|
+
TRoot extends AnyRootTypes,
|
|
53
|
+
TRecord extends RouterRecord,
|
|
54
|
+
> = (
|
|
55
|
+
/**
|
|
56
|
+
* @note
|
|
57
|
+
* If passing a function, we recommend it's a cached function
|
|
58
|
+
* e.g. wrapped in `React.cache` to avoid unnecessary computations
|
|
59
|
+
*/
|
|
60
|
+
ctx: TRoot['ctx'] | (() => MaybePromise<TRoot['ctx']>),
|
|
61
|
+
options?: {
|
|
62
|
+
onError?: RouterCallerErrorHandler<TRoot['ctx']>;
|
|
63
|
+
},
|
|
64
|
+
) => DecorateRouterRecord<TRecord>;
|
|
65
|
+
|
|
66
|
+
export interface Router<
|
|
67
|
+
TRoot extends AnyRootTypes,
|
|
68
|
+
TRecord extends RouterRecord,
|
|
69
|
+
> {
|
|
70
|
+
_def: {
|
|
71
|
+
_config: RootConfig<TRoot>;
|
|
72
|
+
router: true;
|
|
73
|
+
procedure?: never;
|
|
74
|
+
procedures: TRecord;
|
|
75
|
+
record: TRecord;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* @deprecated use `t.createCallerFactory(router)` instead
|
|
79
|
+
* @link https://trpc.io/docs/v11/server/server-side-calls
|
|
80
|
+
*/
|
|
81
|
+
createCaller: RouterCaller<TRoot, TRecord>;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export type BuiltRouter<
|
|
85
|
+
TRoot extends AnyRootTypes,
|
|
86
|
+
TDef extends RouterRecord,
|
|
87
|
+
> = Router<TRoot, TDef> & TDef;
|
|
88
|
+
|
|
89
|
+
export type AnyRouter = Router<any, any>;
|
|
90
|
+
|
|
91
|
+
export type inferRouterRootTypes<TRouter extends AnyRouter> =
|
|
92
|
+
TRouter['_def']['_config']['$types'];
|
|
93
|
+
|
|
94
|
+
export type inferRouterContext<TRouter extends AnyRouter> =
|
|
95
|
+
inferRouterRootTypes<TRouter>['ctx'];
|
|
96
|
+
export type inferRouterError<TRouter extends AnyRouter> =
|
|
97
|
+
inferRouterRootTypes<TRouter>['errorShape'];
|
|
98
|
+
export type inferRouterMeta<TRouter extends AnyRouter> =
|
|
99
|
+
inferRouterRootTypes<TRouter>['meta'];
|
|
100
|
+
|
|
101
|
+
function isRouter(
|
|
102
|
+
procedureOrRouter: ValueOf<CreateRouterOptions>,
|
|
103
|
+
): procedureOrRouter is AnyRouter {
|
|
104
|
+
return procedureOrRouter._def && 'router' in procedureOrRouter._def;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const emptyRouter = {
|
|
108
|
+
_ctx: null as any,
|
|
109
|
+
_errorShape: null as any,
|
|
110
|
+
_meta: null as any,
|
|
111
|
+
queries: {},
|
|
112
|
+
mutations: {},
|
|
113
|
+
subscriptions: {},
|
|
114
|
+
errorFormatter: defaultFormatter,
|
|
115
|
+
transformer: defaultTransformer,
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Reserved words that can't be used as router or procedure names
|
|
120
|
+
*/
|
|
121
|
+
const reservedWords = [
|
|
122
|
+
/**
|
|
123
|
+
* Then is a reserved word because otherwise we can't return a promise that returns a Proxy
|
|
124
|
+
* since JS will think that `.then` is something that exists
|
|
125
|
+
*/
|
|
126
|
+
'then',
|
|
127
|
+
];
|
|
128
|
+
|
|
129
|
+
export type CreateRouterOptions = {
|
|
130
|
+
[key: string]: AnyProcedure | AnyRouter | CreateRouterOptions;
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
export type DecorateCreateRouterOptions<
|
|
134
|
+
TRouterOptions extends CreateRouterOptions,
|
|
135
|
+
> = {
|
|
136
|
+
[K in keyof TRouterOptions]: TRouterOptions[K] extends infer $Value
|
|
137
|
+
? $Value extends AnyProcedure
|
|
138
|
+
? $Value
|
|
139
|
+
: $Value extends Router<any, infer TRecord>
|
|
140
|
+
? TRecord
|
|
141
|
+
: $Value extends CreateRouterOptions
|
|
142
|
+
? DecorateCreateRouterOptions<$Value>
|
|
143
|
+
: never
|
|
144
|
+
: never;
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* @internal
|
|
149
|
+
*/
|
|
150
|
+
export function createRouterFactory<TRoot extends AnyRootTypes>(
|
|
151
|
+
config: RootConfig<TRoot>,
|
|
152
|
+
) {
|
|
153
|
+
function createRouterInner<TInput extends RouterRecord>(
|
|
154
|
+
input: TInput,
|
|
155
|
+
): BuiltRouter<TRoot, TInput>;
|
|
156
|
+
function createRouterInner<TInput extends CreateRouterOptions>(
|
|
157
|
+
input: TInput,
|
|
158
|
+
): BuiltRouter<TRoot, DecorateCreateRouterOptions<TInput>>;
|
|
159
|
+
function createRouterInner(input: RouterRecord | CreateRouterOptions) {
|
|
160
|
+
const reservedWordsUsed = new Set(
|
|
161
|
+
Object.keys(input).filter((v) => reservedWords.includes(v)),
|
|
162
|
+
);
|
|
163
|
+
if (reservedWordsUsed.size > 0) {
|
|
164
|
+
throw new Error(
|
|
165
|
+
'Reserved words used in `router({})` call: ' +
|
|
166
|
+
Array.from(reservedWordsUsed).join(', '),
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
const procedures: Record<string, AnyProcedure> = omitPrototype({});
|
|
171
|
+
|
|
172
|
+
function step(from: CreateRouterOptions, path: string[] = []) {
|
|
173
|
+
const aggregate: RouterRecord = omitPrototype({});
|
|
174
|
+
for (const [key, item] of Object.entries(from ?? {})) {
|
|
175
|
+
if (isRouter(item)) {
|
|
176
|
+
aggregate[key] = step(item._def.record, [...path, key]);
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
if (!isProcedure(item)) {
|
|
180
|
+
// RouterRecord
|
|
181
|
+
aggregate[key] = step(item, [...path, key]);
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
const newPath = [...path, key].join('.');
|
|
186
|
+
|
|
187
|
+
if (procedures[newPath]) {
|
|
188
|
+
throw new Error(`Duplicate key: ${newPath}`);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
procedures[newPath] = item;
|
|
192
|
+
aggregate[key] = item;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
return aggregate;
|
|
196
|
+
}
|
|
197
|
+
const record = step(input);
|
|
198
|
+
|
|
199
|
+
const _def: AnyRouter['_def'] = {
|
|
200
|
+
_config: config,
|
|
201
|
+
router: true,
|
|
202
|
+
procedures,
|
|
203
|
+
...emptyRouter,
|
|
204
|
+
record,
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
return {
|
|
208
|
+
...record,
|
|
209
|
+
_def,
|
|
210
|
+
createCaller: createCallerFactory<TRoot>()({
|
|
211
|
+
_def,
|
|
212
|
+
}),
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
return createRouterInner;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
function isProcedure(
|
|
220
|
+
procedureOrRouter: ValueOf<CreateRouterOptions>,
|
|
221
|
+
): procedureOrRouter is AnyProcedure {
|
|
222
|
+
return typeof procedureOrRouter === 'function';
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* @internal
|
|
226
|
+
*/
|
|
227
|
+
export function callProcedure(
|
|
228
|
+
opts: ProcedureCallOptions<unknown> & {
|
|
229
|
+
procedures: RouterRecord;
|
|
230
|
+
allowMethodOverride?: boolean;
|
|
231
|
+
},
|
|
232
|
+
) {
|
|
233
|
+
const { type, path } = opts;
|
|
234
|
+
const proc = opts.procedures[path];
|
|
235
|
+
if (
|
|
236
|
+
!proc ||
|
|
237
|
+
!isProcedure(proc) ||
|
|
238
|
+
(proc._def.type !== type && !opts.allowMethodOverride)
|
|
239
|
+
) {
|
|
240
|
+
throw new TRPCError({
|
|
241
|
+
code: 'NOT_FOUND',
|
|
242
|
+
message: `No "${type}"-procedure on path "${path}"`,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
return proc(opts);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
export function createCallerFactory<TRoot extends AnyRootTypes>() {
|
|
250
|
+
return function createCallerInner<TRecord extends RouterRecord>(
|
|
251
|
+
router: Pick<Router<TRoot, TRecord>, '_def'>,
|
|
252
|
+
): RouterCaller<TRoot, TRecord> {
|
|
253
|
+
const _def = router._def;
|
|
254
|
+
type Context = TRoot['ctx'];
|
|
255
|
+
|
|
256
|
+
return function createCaller(
|
|
257
|
+
ctxOrCallback,
|
|
258
|
+
options?: {
|
|
259
|
+
onError?: RouterCallerErrorHandler<Context>;
|
|
260
|
+
},
|
|
261
|
+
) {
|
|
262
|
+
const proxy = createRecursiveProxy(async ({ path, args }) => {
|
|
263
|
+
const fullPath = path.join('.');
|
|
264
|
+
|
|
265
|
+
const procedure = _def.procedures[fullPath] as AnyProcedure;
|
|
266
|
+
|
|
267
|
+
let ctx: Context | undefined = undefined;
|
|
268
|
+
try {
|
|
269
|
+
ctx = isFunction(ctxOrCallback)
|
|
270
|
+
? await Promise.resolve(ctxOrCallback())
|
|
271
|
+
: ctxOrCallback;
|
|
272
|
+
|
|
273
|
+
return await procedure({
|
|
274
|
+
path: fullPath,
|
|
275
|
+
getRawInput: async () => args[0],
|
|
276
|
+
ctx,
|
|
277
|
+
type: procedure._def.type,
|
|
278
|
+
});
|
|
279
|
+
} catch (cause) {
|
|
280
|
+
options?.onError?.({
|
|
281
|
+
ctx,
|
|
282
|
+
error: getTRPCErrorFromUnknown(cause),
|
|
283
|
+
input: args[0],
|
|
284
|
+
path: fullPath,
|
|
285
|
+
type: procedure._def.type,
|
|
286
|
+
});
|
|
287
|
+
throw cause;
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
return proxy as ReturnType<RouterCaller<any, any>>;
|
|
292
|
+
};
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/** @internal */
|
|
297
|
+
type MergeRouters<
|
|
298
|
+
TRouters extends AnyRouter[],
|
|
299
|
+
TRoot extends AnyRootTypes = TRouters[0]['_def']['_config']['$types'],
|
|
300
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
301
|
+
TRecord extends RouterRecord = {},
|
|
302
|
+
> = TRouters extends [
|
|
303
|
+
infer Head extends AnyRouter,
|
|
304
|
+
...infer Tail extends AnyRouter[],
|
|
305
|
+
]
|
|
306
|
+
? MergeRouters<Tail, TRoot, Head['_def']['record'] & TRecord>
|
|
307
|
+
: BuiltRouter<TRoot, TRecord>;
|
|
308
|
+
|
|
309
|
+
export function mergeRouters<TRouters extends AnyRouter[]>(
|
|
310
|
+
...routerList: [...TRouters]
|
|
311
|
+
): MergeRouters<TRouters> {
|
|
312
|
+
const record = mergeWithoutOverrides(
|
|
313
|
+
{},
|
|
314
|
+
...routerList.map((r) => r._def.record),
|
|
315
|
+
);
|
|
316
|
+
const errorFormatter = routerList.reduce(
|
|
317
|
+
(currentErrorFormatter, nextRouter) => {
|
|
318
|
+
if (
|
|
319
|
+
nextRouter._def._config.errorFormatter &&
|
|
320
|
+
nextRouter._def._config.errorFormatter !== defaultFormatter
|
|
321
|
+
) {
|
|
322
|
+
if (
|
|
323
|
+
currentErrorFormatter !== defaultFormatter &&
|
|
324
|
+
currentErrorFormatter !== nextRouter._def._config.errorFormatter
|
|
325
|
+
) {
|
|
326
|
+
throw new Error('You seem to have several error formatters');
|
|
327
|
+
}
|
|
328
|
+
return nextRouter._def._config.errorFormatter;
|
|
329
|
+
}
|
|
330
|
+
return currentErrorFormatter;
|
|
331
|
+
},
|
|
332
|
+
defaultFormatter,
|
|
333
|
+
);
|
|
334
|
+
|
|
335
|
+
const transformer = routerList.reduce((prev, current) => {
|
|
336
|
+
if (
|
|
337
|
+
current._def._config.transformer &&
|
|
338
|
+
current._def._config.transformer !== defaultTransformer
|
|
339
|
+
) {
|
|
340
|
+
if (
|
|
341
|
+
prev !== defaultTransformer &&
|
|
342
|
+
prev !== current._def._config.transformer
|
|
343
|
+
) {
|
|
344
|
+
throw new Error('You seem to have several transformers');
|
|
345
|
+
}
|
|
346
|
+
return current._def._config.transformer;
|
|
347
|
+
}
|
|
348
|
+
return prev;
|
|
349
|
+
}, defaultTransformer);
|
|
350
|
+
|
|
351
|
+
const router = createRouterFactory({
|
|
352
|
+
errorFormatter,
|
|
353
|
+
transformer,
|
|
354
|
+
isDev: routerList.every((r) => r._def._config.isDev),
|
|
355
|
+
allowOutsideOfServer: routerList.every(
|
|
356
|
+
(r) => r._def._config.allowOutsideOfServer,
|
|
357
|
+
),
|
|
358
|
+
isServer: routerList.every((r) => r._def._config.isServer),
|
|
359
|
+
$types: routerList[0]?._def._config.$types,
|
|
360
|
+
})(record);
|
|
361
|
+
|
|
362
|
+
return router as MergeRouters<TRouters>;
|
|
363
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ValueOf } from '../types';
|
|
2
2
|
|
|
3
3
|
// reference: https://www.jsonrpc.org/specification
|
|
4
4
|
|
|
@@ -31,14 +31,41 @@ export const TRPC_ERROR_CODES_BY_KEY = {
|
|
|
31
31
|
TIMEOUT: -32008, // 408
|
|
32
32
|
CONFLICT: -32009, // 409
|
|
33
33
|
PRECONDITION_FAILED: -32012, // 412
|
|
34
|
+
UNSUPPORTED_MEDIA_TYPE: -32015, // 415
|
|
34
35
|
PAYLOAD_TOO_LARGE: -32013, // 413
|
|
35
36
|
UNPROCESSABLE_CONTENT: -32022, // 422
|
|
36
37
|
TOO_MANY_REQUESTS: -32029, // 429
|
|
37
38
|
CLIENT_CLOSED_REQUEST: -32099, // 499
|
|
38
39
|
} as const;
|
|
39
40
|
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
type KeyFromValue<TValue, TType extends Record<PropertyKey, PropertyKey>> = {
|
|
42
|
+
[K in keyof TType]: TValue extends TType[K] ? K : never;
|
|
43
|
+
}[keyof TType];
|
|
44
|
+
|
|
45
|
+
type Invert<TType extends Record<PropertyKey, PropertyKey>> = {
|
|
46
|
+
[TValue in TType[keyof TType]]: KeyFromValue<TValue, TType>;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
// pure
|
|
50
|
+
export const TRPC_ERROR_CODES_BY_NUMBER: Invert<
|
|
51
|
+
typeof TRPC_ERROR_CODES_BY_KEY
|
|
52
|
+
> = {
|
|
53
|
+
[-32700]: 'PARSE_ERROR',
|
|
54
|
+
[-32600]: 'BAD_REQUEST',
|
|
55
|
+
[-32603]: 'INTERNAL_SERVER_ERROR',
|
|
56
|
+
[-32001]: 'UNAUTHORIZED',
|
|
57
|
+
[-32003]: 'FORBIDDEN',
|
|
58
|
+
[-32004]: 'NOT_FOUND',
|
|
59
|
+
[-32005]: 'METHOD_NOT_SUPPORTED',
|
|
60
|
+
[-32008]: 'TIMEOUT',
|
|
61
|
+
[-32009]: 'CONFLICT',
|
|
62
|
+
[-32012]: 'PRECONDITION_FAILED',
|
|
63
|
+
[-32013]: 'PAYLOAD_TOO_LARGE',
|
|
64
|
+
[-32015]: 'UNSUPPORTED_MEDIA_TYPE',
|
|
65
|
+
[-32022]: 'UNPROCESSABLE_CONTENT',
|
|
66
|
+
[-32029]: 'TOO_MANY_REQUESTS',
|
|
67
|
+
[-32099]: 'CLIENT_CLOSED_REQUEST',
|
|
68
|
+
};
|
|
42
69
|
|
|
43
70
|
export type TRPC_ERROR_CODE_NUMBER = ValueOf<typeof TRPC_ERROR_CODES_BY_KEY>;
|
|
44
71
|
export type TRPC_ERROR_CODE_KEY = keyof typeof TRPC_ERROR_CODES_BY_KEY;
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-namespace */
|
|
2
|
-
import { ProcedureType } from '../
|
|
3
|
-
import { TRPC_ERROR_CODE_NUMBER } from './codes';
|
|
2
|
+
import type { ProcedureType } from '../procedure';
|
|
3
|
+
import type { TRPC_ERROR_CODE_NUMBER } from './codes';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Error response
|
|
7
7
|
*/
|
|
8
|
-
export interface TRPCErrorShape<
|
|
9
|
-
|
|
10
|
-
TData extends Record<string, unknown> = Record<string, unknown>,
|
|
11
|
-
> {
|
|
12
|
-
code: TCode;
|
|
8
|
+
export interface TRPCErrorShape<TData extends object = object> {
|
|
9
|
+
code: TRPC_ERROR_CODE_NUMBER;
|
|
13
10
|
message: string;
|
|
14
11
|
data: TData;
|
|
15
12
|
}
|
|
@@ -101,8 +98,8 @@ export type TRPCClientOutgoingMessage =
|
|
|
101
98
|
|
|
102
99
|
export interface TRPCResultMessage<TData>
|
|
103
100
|
extends JSONRPC2.ResultResponse<
|
|
104
|
-
| { type: 'started' }
|
|
105
|
-
| { type: 'stopped' }
|
|
101
|
+
| { type: 'started'; data?: never }
|
|
102
|
+
| { type: 'stopped'; data?: never }
|
|
106
103
|
| (TRPCResult<TData> & { type: 'data' })
|
|
107
104
|
> {}
|
|
108
105
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export { TRPC_ERROR_CODES_BY_KEY, TRPC_ERROR_CODES_BY_NUMBER } from './codes';
|
|
2
|
+
export type { TRPC_ERROR_CODE_KEY, TRPC_ERROR_CODE_NUMBER } from './codes';
|
|
3
|
+
export type {
|
|
4
|
+
JSONRPC2,
|
|
5
|
+
TRPCClientIncomingMessage,
|
|
6
|
+
TRPCClientIncomingRequest,
|
|
7
|
+
TRPCClientOutgoingMessage,
|
|
8
|
+
TRPCClientOutgoingRequest,
|
|
9
|
+
TRPCErrorResponse,
|
|
10
|
+
TRPCErrorShape,
|
|
11
|
+
TRPCReconnectNotification,
|
|
12
|
+
TRPCRequest,
|
|
13
|
+
TRPCRequestMessage,
|
|
14
|
+
TRPCResponse,
|
|
15
|
+
TRPCResponseMessage,
|
|
16
|
+
TRPCResult,
|
|
17
|
+
TRPCResultMessage,
|
|
18
|
+
TRPCSubscriptionStopNotification,
|
|
19
|
+
TRPCSuccessResponse,
|
|
20
|
+
} from './envelopes';
|
|
21
|
+
export { parseTRPCMessage } from './parseTRPCMessage';
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { procedureTypes, type ProcedureType } from '../procedure';
|
|
2
2
|
import type { CombinedDataTransformer } from '../transformer';
|
|
3
|
+
import { isObject } from '../utils';
|
|
3
4
|
import type { TRPCClientOutgoingMessage } from './envelopes';
|
|
4
5
|
|
|
5
6
|
/* istanbul ignore next -- @preserve */
|
|
6
7
|
function assertIsObject(obj: unknown): asserts obj is Record<string, unknown> {
|
|
7
|
-
if (
|
|
8
|
+
if (!isObject(obj)) {
|
|
8
9
|
throw new Error('Not an object');
|
|
9
10
|
}
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
/* istanbul ignore next -- @preserve */
|
|
13
14
|
function assertIsProcedureType(obj: unknown): asserts obj is ProcedureType {
|
|
14
|
-
if (obj
|
|
15
|
+
if (!procedureTypes.includes(obj as any)) {
|
|
15
16
|
throw new Error('Invalid procedure type');
|
|
16
17
|
}
|
|
17
18
|
}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import type { AnyRootTypes, RootConfig } from './rootConfig';
|
|
2
|
+
import type { AnyRouter, inferRouterError } from './router';
|
|
3
|
+
import type {
|
|
4
|
+
TRPCResponse,
|
|
5
|
+
TRPCResponseMessage,
|
|
6
|
+
TRPCResultMessage,
|
|
7
|
+
} from './rpc';
|
|
8
|
+
import { isObject } from './utils';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export interface DataTransformer {
|
|
14
|
+
serialize: (object: any) => any;
|
|
15
|
+
deserialize: (object: any) => any;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
interface InputDataTransformer extends DataTransformer {
|
|
19
|
+
/**
|
|
20
|
+
* This function runs **on the client** before sending the data to the server.
|
|
21
|
+
*/
|
|
22
|
+
serialize: (object: any) => any;
|
|
23
|
+
/**
|
|
24
|
+
* This function runs **on the server** to transform the data before it is passed to the resolver
|
|
25
|
+
*/
|
|
26
|
+
deserialize: (object: any) => any;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
interface OutputDataTransformer extends DataTransformer {
|
|
30
|
+
/**
|
|
31
|
+
* This function runs **on the server** before sending the data to the client.
|
|
32
|
+
*/
|
|
33
|
+
serialize: (object: any) => any;
|
|
34
|
+
/**
|
|
35
|
+
* This function runs **only on the client** to transform the data sent from the server.
|
|
36
|
+
*/
|
|
37
|
+
deserialize: (object: any) => any;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @public
|
|
42
|
+
*/
|
|
43
|
+
export interface CombinedDataTransformer {
|
|
44
|
+
/**
|
|
45
|
+
* Specify how the data sent from the client to the server should be transformed.
|
|
46
|
+
*/
|
|
47
|
+
input: InputDataTransformer;
|
|
48
|
+
/**
|
|
49
|
+
* Specify how the data sent from the server to the client should be transformed.
|
|
50
|
+
*/
|
|
51
|
+
output: OutputDataTransformer;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @public
|
|
56
|
+
*/
|
|
57
|
+
export type CombinedDataTransformerClient = {
|
|
58
|
+
input: Pick<CombinedDataTransformer['input'], 'serialize'>;
|
|
59
|
+
output: Pick<CombinedDataTransformer['output'], 'deserialize'>;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* @public
|
|
64
|
+
*/
|
|
65
|
+
export type DataTransformerOptions = CombinedDataTransformer | DataTransformer;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* @internal
|
|
69
|
+
*/
|
|
70
|
+
export function getDataTransformer(
|
|
71
|
+
transformer: DataTransformerOptions,
|
|
72
|
+
): CombinedDataTransformer {
|
|
73
|
+
if ('input' in transformer) {
|
|
74
|
+
return transformer;
|
|
75
|
+
}
|
|
76
|
+
return { input: transformer, output: transformer };
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* @internal
|
|
81
|
+
*/
|
|
82
|
+
export const defaultTransformer: CombinedDataTransformer = {
|
|
83
|
+
input: { serialize: (obj) => obj, deserialize: (obj) => obj },
|
|
84
|
+
output: { serialize: (obj) => obj, deserialize: (obj) => obj },
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
function transformTRPCResponseItem<
|
|
88
|
+
TResponseItem extends TRPCResponse | TRPCResponseMessage,
|
|
89
|
+
>(config: RootConfig<AnyRootTypes>, item: TResponseItem): TResponseItem {
|
|
90
|
+
if ('error' in item) {
|
|
91
|
+
return {
|
|
92
|
+
...item,
|
|
93
|
+
error: config.transformer.output.serialize(item.error),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if ('data' in item.result) {
|
|
98
|
+
return {
|
|
99
|
+
...item,
|
|
100
|
+
result: {
|
|
101
|
+
...item.result,
|
|
102
|
+
data: config.transformer.output.serialize(item.result.data),
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return item;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Takes a unserialized `TRPCResponse` and serializes it with the router's transformers
|
|
112
|
+
**/
|
|
113
|
+
export function transformTRPCResponse<
|
|
114
|
+
TResponse extends
|
|
115
|
+
| TRPCResponse
|
|
116
|
+
| TRPCResponse[]
|
|
117
|
+
| TRPCResponseMessage
|
|
118
|
+
| TRPCResponseMessage[],
|
|
119
|
+
>(config: RootConfig<AnyRootTypes>, itemOrItems: TResponse) {
|
|
120
|
+
return Array.isArray(itemOrItems)
|
|
121
|
+
? itemOrItems.map((item) => transformTRPCResponseItem(config, item))
|
|
122
|
+
: transformTRPCResponseItem(config, itemOrItems);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// FIXME:
|
|
126
|
+
// - the generics here are probably unnecessary
|
|
127
|
+
// - the RPC-spec could probably be simplified to combine HTTP + WS
|
|
128
|
+
/** @internal */
|
|
129
|
+
function transformResultInner<TRouter extends AnyRouter, TOutput>(
|
|
130
|
+
response:
|
|
131
|
+
| TRPCResponse<TOutput, inferRouterError<TRouter>>
|
|
132
|
+
| TRPCResponseMessage<TOutput, inferRouterError<TRouter>>,
|
|
133
|
+
transformer: DataTransformer,
|
|
134
|
+
) {
|
|
135
|
+
if ('error' in response) {
|
|
136
|
+
const error = transformer.deserialize(
|
|
137
|
+
response.error,
|
|
138
|
+
) as inferRouterError<TRouter>;
|
|
139
|
+
return {
|
|
140
|
+
ok: false,
|
|
141
|
+
error: {
|
|
142
|
+
...response,
|
|
143
|
+
error,
|
|
144
|
+
},
|
|
145
|
+
} as const;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
const result = {
|
|
149
|
+
...response.result,
|
|
150
|
+
...((!response.result.type || response.result.type === 'data') && {
|
|
151
|
+
type: 'data',
|
|
152
|
+
data: transformer.deserialize(response.result.data),
|
|
153
|
+
}),
|
|
154
|
+
} as TRPCResultMessage<TOutput>['result'];
|
|
155
|
+
return { ok: true, result } as const;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
class TransformResultError extends Error {
|
|
159
|
+
constructor() {
|
|
160
|
+
super('Unable to transform response from server');
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Transforms and validates that the result is a valid TRPCResponse
|
|
166
|
+
* @internal
|
|
167
|
+
*/
|
|
168
|
+
export function transformResult<TRouter extends AnyRouter, TOutput>(
|
|
169
|
+
response:
|
|
170
|
+
| TRPCResponse<TOutput, inferRouterError<TRouter>>
|
|
171
|
+
| TRPCResponseMessage<TOutput, inferRouterError<TRouter>>,
|
|
172
|
+
transformer: DataTransformer,
|
|
173
|
+
): ReturnType<typeof transformResultInner> {
|
|
174
|
+
let result: ReturnType<typeof transformResultInner>;
|
|
175
|
+
try {
|
|
176
|
+
// Use the data transformers on the JSON-response
|
|
177
|
+
result = transformResultInner(response, transformer);
|
|
178
|
+
} catch (err) {
|
|
179
|
+
throw new TransformResultError();
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// check that output of the transformers is a valid TRPCResponse
|
|
183
|
+
if (
|
|
184
|
+
!result.ok &&
|
|
185
|
+
(!isObject(result.error.error) ||
|
|
186
|
+
typeof result.error.error['code'] !== 'number')
|
|
187
|
+
) {
|
|
188
|
+
throw new TransformResultError();
|
|
189
|
+
}
|
|
190
|
+
if (result.ok && !isObject(result.result)) {
|
|
191
|
+
throw new TransformResultError();
|
|
192
|
+
}
|
|
193
|
+
return result;
|
|
194
|
+
}
|