@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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trpc/server",
|
|
3
|
-
"version": "10.0.0-alpha.
|
|
3
|
+
"version": "10.0.0-proxy-alpha.53",
|
|
4
4
|
"description": "tRPC Server",
|
|
5
5
|
"author": "KATT",
|
|
6
6
|
"license": "MIT",
|
|
@@ -12,12 +12,16 @@
|
|
|
12
12
|
},
|
|
13
13
|
"eslintConfig": {
|
|
14
14
|
"rules": {
|
|
15
|
-
"explicit-module-boundary-types": "off"
|
|
15
|
+
"explicit-module-boundary-types": "off",
|
|
16
|
+
"no-restricted-imports": [
|
|
17
|
+
"error",
|
|
18
|
+
"@trpc/server"
|
|
19
|
+
]
|
|
16
20
|
}
|
|
17
21
|
},
|
|
18
22
|
"scripts": {
|
|
19
|
-
"
|
|
20
|
-
"
|
|
23
|
+
"benchmark": "yarn tsc --project tsconfig.benchmark.json",
|
|
24
|
+
"ts-watch": "tsc --project tsconfig.watch.json"
|
|
21
25
|
},
|
|
22
26
|
"main": "dist/index.js",
|
|
23
27
|
"module": "dist/index.mjs",
|
|
@@ -28,11 +32,21 @@
|
|
|
28
32
|
"require": "./dist/index.js",
|
|
29
33
|
"default": "./dist/index.js"
|
|
30
34
|
},
|
|
35
|
+
"./adapters/aws-lambda": {
|
|
36
|
+
"import": "./dist/adapters/aws-lambda/index.mjs",
|
|
37
|
+
"require": "./dist/adapters/aws-lambda/index.js",
|
|
38
|
+
"default": "./dist/adapters/aws-lambda/index.js"
|
|
39
|
+
},
|
|
31
40
|
"./adapters/express": {
|
|
32
41
|
"import": "./dist/adapters/express.mjs",
|
|
33
42
|
"require": "./dist/adapters/express.js",
|
|
34
43
|
"default": "./dist/adapters/express.js"
|
|
35
44
|
},
|
|
45
|
+
"./adapters/fastify": {
|
|
46
|
+
"import": "./dist/adapters/fastify/index.mjs",
|
|
47
|
+
"require": "./dist/adapters/fastify/index.js",
|
|
48
|
+
"default": "./dist/adapters/fastify/index.js"
|
|
49
|
+
},
|
|
36
50
|
"./adapters/next": {
|
|
37
51
|
"import": "./dist/adapters/next.mjs",
|
|
38
52
|
"require": "./dist/adapters/next.js",
|
|
@@ -48,46 +62,61 @@
|
|
|
48
62
|
"require": "./dist/adapters/standalone.js",
|
|
49
63
|
"default": "./dist/adapters/standalone.js"
|
|
50
64
|
},
|
|
51
|
-
"./adapters/fastify": {
|
|
52
|
-
"import": "./dist/adapters/fastify.mjs",
|
|
53
|
-
"require": "./dist/adapters/fastify.js",
|
|
54
|
-
"default": "./dist/adapters/fastify.js"
|
|
55
|
-
},
|
|
56
65
|
"./adapters/ws": {
|
|
57
66
|
"import": "./dist/adapters/ws.mjs",
|
|
58
67
|
"require": "./dist/adapters/ws.js",
|
|
59
68
|
"default": "./dist/adapters/ws.js"
|
|
60
69
|
},
|
|
61
|
-
"./
|
|
62
|
-
"import": "./dist/
|
|
63
|
-
"require": "./dist/
|
|
64
|
-
"default": "./dist/
|
|
70
|
+
"./adapters/fetch": {
|
|
71
|
+
"import": "./dist/adapters/fetch/index.mjs",
|
|
72
|
+
"require": "./dist/adapters/fetch/index.js",
|
|
73
|
+
"default": "./dist/adapters/fetch/index.js"
|
|
65
74
|
},
|
|
66
75
|
"./rpc": {
|
|
67
76
|
"import": "./dist/rpc/index.mjs",
|
|
68
77
|
"require": "./dist/rpc/index.js",
|
|
69
78
|
"default": "./dist/rpc/index.js"
|
|
79
|
+
},
|
|
80
|
+
"./observable": {
|
|
81
|
+
"import": "./dist/observable/index.mjs",
|
|
82
|
+
"require": "./dist/observable/index.js",
|
|
83
|
+
"default": "./dist/observable/index.js"
|
|
84
|
+
},
|
|
85
|
+
"./subscription": {
|
|
86
|
+
"import": "./dist/subscription.mjs",
|
|
87
|
+
"require": "./dist/subscription.js",
|
|
88
|
+
"default": "./dist/subscription.js"
|
|
89
|
+
},
|
|
90
|
+
"./shared": {
|
|
91
|
+
"import": "./dist/shared/index.mjs",
|
|
92
|
+
"require": "./dist/shared/index.js",
|
|
93
|
+
"default": "./dist/shared/index.js"
|
|
70
94
|
}
|
|
71
95
|
},
|
|
72
96
|
"files": [
|
|
73
|
-
"README.md",
|
|
74
97
|
"dist",
|
|
98
|
+
"src",
|
|
99
|
+
"README.md",
|
|
75
100
|
"adapters",
|
|
76
|
-
"ws",
|
|
77
101
|
"rpc",
|
|
78
|
-
"
|
|
102
|
+
"observable",
|
|
103
|
+
"subscription",
|
|
104
|
+
"shared"
|
|
79
105
|
],
|
|
80
106
|
"publishConfig": {
|
|
81
107
|
"access": "public"
|
|
82
108
|
},
|
|
83
109
|
"devDependencies": {
|
|
84
|
-
"@
|
|
85
|
-
"@
|
|
86
|
-
"@
|
|
110
|
+
"@cloudflare/workers-types": "^3.14.1",
|
|
111
|
+
"@fastify/websocket": "^5.0.0",
|
|
112
|
+
"@miniflare/core": "^2.4.0",
|
|
113
|
+
"@tanstack/react-query": "^4.0.10",
|
|
114
|
+
"@types/aws-lambda": "^8.10.97",
|
|
87
115
|
"@types/express": "^4.17.12",
|
|
88
116
|
"@types/hash-sum": "^1.0.0",
|
|
89
117
|
"@types/ws": "^8.2.0",
|
|
90
118
|
"abort-controller": "^3.0.0",
|
|
119
|
+
"aws-lambda": "^1.0.7",
|
|
91
120
|
"devalue": "^2.0.1",
|
|
92
121
|
"express": "^4.17.1",
|
|
93
122
|
"fastify": "^3.27.1",
|
|
@@ -95,18 +124,17 @@
|
|
|
95
124
|
"fastify-websocket": "^4.0.0",
|
|
96
125
|
"hash-sum": "^2.0.0",
|
|
97
126
|
"jest": "^27.1.0",
|
|
127
|
+
"jest-environment-miniflare": "^2.4.0",
|
|
98
128
|
"konn": "^0.7.0",
|
|
129
|
+
"miniflare": "^2.4.0",
|
|
99
130
|
"myzod": "^1.3.1",
|
|
100
|
-
"next": "^12.
|
|
131
|
+
"next": "^12.1.6",
|
|
101
132
|
"node-fetch": "^2.6.1",
|
|
102
133
|
"superstruct": "^0.15.2",
|
|
103
|
-
"typescript": "4.
|
|
134
|
+
"typescript": "4.7.4",
|
|
104
135
|
"ws": "^8.0.0",
|
|
105
136
|
"yup": "^0.32.8",
|
|
106
137
|
"zod": "^3.0.0"
|
|
107
138
|
},
|
|
108
|
-
"gitHead": "
|
|
109
|
-
"dependencies": {
|
|
110
|
-
"tslib": "^2.1.0"
|
|
111
|
-
}
|
|
139
|
+
"gitHead": "1c5cae03b77ff2ba6b6b870f8dc95021605435ae"
|
|
112
140
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { T as TRPC_ERROR_CODES_BY_KEY, a as TRPC_ERROR_CODES_BY_NUMBER } from '../../dist/codes-
|
|
1
|
+
export { T as TRPC_ERROR_CODES_BY_KEY, a as TRPC_ERROR_CODES_BY_NUMBER } from '../../dist/codes-5678cc97.esm.js';
|
package/rpc/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
module.exports = require('../dist/rpc
|
|
1
|
+
module.exports = require('../dist/rpc');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../dist/shared';
|
package/shared/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('../dist/shared');
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
Context as APIGWContext,
|
|
3
|
+
APIGatewayProxyEvent,
|
|
4
|
+
APIGatewayProxyEventV2,
|
|
5
|
+
APIGatewayProxyResult,
|
|
6
|
+
APIGatewayProxyStructuredResultV2,
|
|
7
|
+
} from 'aws-lambda';
|
|
8
|
+
import { TRPCError, resolveHTTPResponse } from '../..';
|
|
9
|
+
import { AnyRouter, inferRouterContext } from '../../core';
|
|
10
|
+
import { HTTPHeaders, HTTPRequest } from '../../http/internals/types';
|
|
11
|
+
import type { HTTPResponse } from '../../http/internals/types';
|
|
12
|
+
import {
|
|
13
|
+
APIGatewayEvent,
|
|
14
|
+
APIGatewayResult,
|
|
15
|
+
AWSLambdaOptions,
|
|
16
|
+
UNKNOWN_PAYLOAD_FORMAT_VERSION_ERROR_MESSAGE,
|
|
17
|
+
isPayloadV1,
|
|
18
|
+
isPayloadV2,
|
|
19
|
+
} from './utils';
|
|
20
|
+
|
|
21
|
+
export type { CreateAWSLambdaContextOptions, AWSLambdaOptions } from './utils';
|
|
22
|
+
|
|
23
|
+
function lambdaEventToHTTPRequest(event: APIGatewayEvent): HTTPRequest {
|
|
24
|
+
const query = new URLSearchParams();
|
|
25
|
+
for (const [key, value] of Object.entries(
|
|
26
|
+
event.queryStringParameters ?? {},
|
|
27
|
+
)) {
|
|
28
|
+
if (typeof value !== 'undefined') {
|
|
29
|
+
query.append(key, value);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return {
|
|
34
|
+
method: getHTTPMethod(event),
|
|
35
|
+
query: query,
|
|
36
|
+
headers: event.headers,
|
|
37
|
+
body: event.body,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function getHTTPMethod(event: APIGatewayEvent) {
|
|
42
|
+
if (isPayloadV1(event)) {
|
|
43
|
+
return event.httpMethod;
|
|
44
|
+
}
|
|
45
|
+
if (isPayloadV2(event)) {
|
|
46
|
+
return event.requestContext.http.method;
|
|
47
|
+
}
|
|
48
|
+
throw new TRPCError({
|
|
49
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
50
|
+
message: UNKNOWN_PAYLOAD_FORMAT_VERSION_ERROR_MESSAGE,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function getPath(event: APIGatewayEvent) {
|
|
55
|
+
if (isPayloadV1(event)) {
|
|
56
|
+
const matches = event.resource.matchAll(/\{(.*?)\}/g);
|
|
57
|
+
for (const match of matches) {
|
|
58
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
59
|
+
const group = match[1]!;
|
|
60
|
+
if (group.includes('+') && event.pathParameters) {
|
|
61
|
+
return event.pathParameters[group.replace('+', '')] || '';
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return event.path.slice(1);
|
|
65
|
+
}
|
|
66
|
+
if (isPayloadV2(event)) {
|
|
67
|
+
const matches = event.routeKey.matchAll(/\{(.*?)\}/g);
|
|
68
|
+
for (const match of matches) {
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
70
|
+
const group = match[1]!;
|
|
71
|
+
if (group.includes('+') && event.pathParameters) {
|
|
72
|
+
return event.pathParameters[group.replace('+', '')] || '';
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return event.rawPath.slice(1);
|
|
76
|
+
}
|
|
77
|
+
throw new TRPCError({
|
|
78
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
79
|
+
message: UNKNOWN_PAYLOAD_FORMAT_VERSION_ERROR_MESSAGE,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
function transformHeaders(headers: HTTPHeaders): APIGatewayResult['headers'] {
|
|
83
|
+
const obj: APIGatewayResult['headers'] = {};
|
|
84
|
+
|
|
85
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
86
|
+
if (typeof value === 'undefined') {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
obj[key] = Array.isArray(value) ? value.join(',') : value;
|
|
90
|
+
}
|
|
91
|
+
return obj;
|
|
92
|
+
}
|
|
93
|
+
function tRPCOutputToAPIGatewayOutput<
|
|
94
|
+
TEvent extends APIGatewayEvent,
|
|
95
|
+
TResult extends APIGatewayResult,
|
|
96
|
+
>(event: TEvent, response: HTTPResponse): TResult {
|
|
97
|
+
if (isPayloadV1(event)) {
|
|
98
|
+
const resp: APIGatewayProxyResult = {
|
|
99
|
+
statusCode: response.status,
|
|
100
|
+
body: response.body ?? '',
|
|
101
|
+
headers: transformHeaders(response.headers ?? {}),
|
|
102
|
+
};
|
|
103
|
+
return resp as TResult;
|
|
104
|
+
} else if (isPayloadV2(event)) {
|
|
105
|
+
const resp: APIGatewayProxyStructuredResultV2 = {
|
|
106
|
+
statusCode: response.status,
|
|
107
|
+
body: response.body ?? undefined,
|
|
108
|
+
headers: transformHeaders(response.headers ?? {}),
|
|
109
|
+
};
|
|
110
|
+
return resp as TResult;
|
|
111
|
+
} else {
|
|
112
|
+
throw new TRPCError({
|
|
113
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
114
|
+
message: UNKNOWN_PAYLOAD_FORMAT_VERSION_ERROR_MESSAGE,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/** Will check the createContext of the TRouter and get the parameter of event.
|
|
120
|
+
* @internal
|
|
121
|
+
**/
|
|
122
|
+
type inferAPIGWEvent<
|
|
123
|
+
TRouter extends AnyRouter,
|
|
124
|
+
TEvent extends APIGatewayEvent,
|
|
125
|
+
> = AWSLambdaOptions<TRouter, TEvent>['createContext'] extends NonNullable<
|
|
126
|
+
AWSLambdaOptions<TRouter, TEvent>['createContext']
|
|
127
|
+
>
|
|
128
|
+
? Parameters<AWSLambdaOptions<TRouter, TEvent>['createContext']>[0]['event']
|
|
129
|
+
: APIGatewayEvent;
|
|
130
|
+
|
|
131
|
+
/** 1:1 mapping of v1 or v2 input events, deduces which is which.
|
|
132
|
+
* @internal
|
|
133
|
+
**/
|
|
134
|
+
type inferAPIGWReturn<T> = T extends APIGatewayProxyEvent
|
|
135
|
+
? APIGatewayProxyResult
|
|
136
|
+
: T extends APIGatewayProxyEventV2
|
|
137
|
+
? APIGatewayProxyStructuredResultV2
|
|
138
|
+
: never;
|
|
139
|
+
export function awsLambdaRequestHandler<
|
|
140
|
+
TRouter extends AnyRouter,
|
|
141
|
+
TEvent extends inferAPIGWEvent<TRouter, TEvent>,
|
|
142
|
+
TResult extends inferAPIGWReturn<TEvent>,
|
|
143
|
+
>(
|
|
144
|
+
opts: AWSLambdaOptions<TRouter, TEvent>,
|
|
145
|
+
): (event: TEvent, context: APIGWContext) => Promise<TResult> {
|
|
146
|
+
return async (event, context) => {
|
|
147
|
+
const req = lambdaEventToHTTPRequest(event);
|
|
148
|
+
const path = getPath(event);
|
|
149
|
+
const createContext = async function _createContext(): Promise<
|
|
150
|
+
inferRouterContext<TRouter>
|
|
151
|
+
> {
|
|
152
|
+
return await opts.createContext?.({ event, context });
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
const response = await resolveHTTPResponse({
|
|
156
|
+
router: opts.router,
|
|
157
|
+
batching: opts.batching,
|
|
158
|
+
responseMeta: opts?.responseMeta,
|
|
159
|
+
createContext,
|
|
160
|
+
req,
|
|
161
|
+
path,
|
|
162
|
+
error: null,
|
|
163
|
+
onError(o) {
|
|
164
|
+
opts?.onError?.({
|
|
165
|
+
...o,
|
|
166
|
+
req: event,
|
|
167
|
+
});
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
return tRPCOutputToAPIGatewayOutput<TEvent, TResult>(event, response);
|
|
172
|
+
};
|
|
173
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
Context as APIGWContext,
|
|
3
|
+
APIGatewayProxyEvent,
|
|
4
|
+
APIGatewayProxyEventV2,
|
|
5
|
+
APIGatewayProxyResult,
|
|
6
|
+
APIGatewayProxyStructuredResultV2,
|
|
7
|
+
} from 'aws-lambda';
|
|
8
|
+
import type { AnyRouter, inferRouterContext } from '../../core';
|
|
9
|
+
import type { ResponseMetaFn } from '../../http/internals/types';
|
|
10
|
+
import { OnErrorFunction } from '../../internals/types';
|
|
11
|
+
|
|
12
|
+
export type APIGatewayEvent = APIGatewayProxyEvent | APIGatewayProxyEventV2;
|
|
13
|
+
export type APIGatewayResult =
|
|
14
|
+
| APIGatewayProxyResult
|
|
15
|
+
| APIGatewayProxyStructuredResultV2;
|
|
16
|
+
|
|
17
|
+
export type CreateAWSLambdaContextOptions<T extends APIGatewayEvent> = {
|
|
18
|
+
event: T;
|
|
19
|
+
context: APIGWContext;
|
|
20
|
+
};
|
|
21
|
+
export type AWSLambdaCreateContextFn<
|
|
22
|
+
TRouter extends AnyRouter,
|
|
23
|
+
TEvent extends APIGatewayEvent,
|
|
24
|
+
> = ({
|
|
25
|
+
event,
|
|
26
|
+
context,
|
|
27
|
+
}: CreateAWSLambdaContextOptions<TEvent>) =>
|
|
28
|
+
| inferRouterContext<TRouter>
|
|
29
|
+
| Promise<inferRouterContext<TRouter>>;
|
|
30
|
+
|
|
31
|
+
export type AWSLambdaOptions<
|
|
32
|
+
TRouter extends AnyRouter,
|
|
33
|
+
TEvent extends APIGatewayEvent,
|
|
34
|
+
> =
|
|
35
|
+
| {
|
|
36
|
+
router: TRouter;
|
|
37
|
+
batching?: {
|
|
38
|
+
enabled: boolean;
|
|
39
|
+
};
|
|
40
|
+
onError?: OnErrorFunction<TRouter, TEvent>;
|
|
41
|
+
responseMeta?: ResponseMetaFn<TRouter>;
|
|
42
|
+
} & (
|
|
43
|
+
| {
|
|
44
|
+
/**
|
|
45
|
+
* @link https://trpc.io/docs/context
|
|
46
|
+
**/
|
|
47
|
+
createContext: AWSLambdaCreateContextFn<TRouter, TEvent>;
|
|
48
|
+
}
|
|
49
|
+
| {
|
|
50
|
+
/**
|
|
51
|
+
* @link https://trpc.io/docs/context
|
|
52
|
+
**/
|
|
53
|
+
createContext?: AWSLambdaCreateContextFn<TRouter, TEvent>;
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
export function isPayloadV1(
|
|
58
|
+
event: APIGatewayEvent,
|
|
59
|
+
): event is APIGatewayProxyEvent {
|
|
60
|
+
return determinePayloadFormat(event) == '1.0';
|
|
61
|
+
}
|
|
62
|
+
export function isPayloadV2(
|
|
63
|
+
event: APIGatewayEvent,
|
|
64
|
+
): event is APIGatewayProxyEventV2 {
|
|
65
|
+
return determinePayloadFormat(event) == '2.0';
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function determinePayloadFormat(
|
|
69
|
+
event: APIGatewayEvent,
|
|
70
|
+
): APIGatewayPayloadFormatVersion {
|
|
71
|
+
// https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html
|
|
72
|
+
// According to AWS support, version is is extracted from the version property in the event.
|
|
73
|
+
// If there is no version property, then the version is implied as 1.0
|
|
74
|
+
const unknownEvent = event as { version?: string };
|
|
75
|
+
if (typeof unknownEvent.version === 'undefined') {
|
|
76
|
+
return '1.0';
|
|
77
|
+
} else {
|
|
78
|
+
if (['1.0', '2.0'].includes(unknownEvent.version)) {
|
|
79
|
+
return unknownEvent.version as APIGatewayPayloadFormatVersion;
|
|
80
|
+
} else {
|
|
81
|
+
return 'custom';
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
export type DefinedAPIGatewayPayloadFormats = '1.0' | '2.0';
|
|
86
|
+
export type APIGatewayPayloadFormatVersion =
|
|
87
|
+
| DefinedAPIGatewayPayloadFormats
|
|
88
|
+
| 'custom';
|
|
89
|
+
|
|
90
|
+
export const UNKNOWN_PAYLOAD_FORMAT_VERSION_ERROR_MESSAGE =
|
|
91
|
+
'Custom payload format version not handled by this adapter. Please use either 1.0 or 2.0. More information here' +
|
|
92
|
+
'https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html';
|
package/src/adapters/express.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import type * as express from 'express';
|
|
3
|
-
import { AnyRouter } from '../
|
|
3
|
+
import { AnyRouter } from '../core';
|
|
4
4
|
import { nodeHTTPRequestHandler } from './node-http';
|
|
5
5
|
import {
|
|
6
6
|
NodeHTTPCreateContextFnOptions,
|
|
@@ -15,10 +15,10 @@ export type CreateExpressContextOptions = NodeHTTPCreateContextFnOptions<
|
|
|
15
15
|
export function createExpressMiddleware<TRouter extends AnyRouter>(
|
|
16
16
|
opts: NodeHTTPHandlerOptions<TRouter, express.Request, express.Response>,
|
|
17
17
|
): express.Handler {
|
|
18
|
-
return (req, res) => {
|
|
19
|
-
const endpoint = req.path.
|
|
18
|
+
return async (req, res) => {
|
|
19
|
+
const endpoint = req.path.slice(1);
|
|
20
20
|
|
|
21
|
-
nodeHTTPRequestHandler({
|
|
21
|
+
await nodeHTTPRequestHandler({
|
|
22
22
|
...opts,
|
|
23
23
|
req,
|
|
24
24
|
res,
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { URLSearchParams } from 'url';
|
|
2
1
|
import { FastifyReply, FastifyRequest } from 'fastify';
|
|
3
2
|
import { assertNotBrowser } from '../../assertNotBrowser';
|
|
4
|
-
import {
|
|
5
|
-
import { AnyRouter, inferRouterContext } from '../../router';
|
|
6
|
-
import { resolveHTTPResponse } from '../../http/resolveHTTPResponse';
|
|
3
|
+
import { AnyRouter, inferRouterContext } from '../../core';
|
|
7
4
|
import {
|
|
8
5
|
HTTPBaseHandlerOptions,
|
|
9
6
|
HTTPRequest,
|
|
10
7
|
} from '../../http/internals/types';
|
|
8
|
+
import { resolveHTTPResponse } from '../../http/resolveHTTPResponse';
|
|
9
|
+
import { NodeHTTPCreateContextOption } from '../node-http';
|
|
11
10
|
|
|
12
11
|
assertNotBrowser();
|
|
13
12
|
|
|
@@ -67,13 +66,12 @@ export async function fastifyRequestHandler<
|
|
|
67
66
|
if ('status' in result && (!res.statusCode || res.statusCode === 200)) {
|
|
68
67
|
res.statusCode = result.status;
|
|
69
68
|
}
|
|
70
|
-
|
|
71
69
|
for (const [key, value] of Object.entries(result.headers ?? {})) {
|
|
72
70
|
if (typeof value === 'undefined') {
|
|
73
71
|
continue;
|
|
74
72
|
}
|
|
75
|
-
res.header(key, value);
|
|
76
|
-
}
|
|
77
73
|
|
|
78
|
-
|
|
74
|
+
void res.header(key, value);
|
|
75
|
+
}
|
|
76
|
+
await res.send(result.body);
|
|
79
77
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
/// <reference types="fastify
|
|
1
|
+
/// <reference types="@fastify/websocket" />
|
|
2
2
|
import { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify';
|
|
3
|
-
import { fastifyRequestHandler } from './fastifyRequestHandler';
|
|
4
|
-
import { NodeHTTPCreateContextFnOptions } from '../node-http';
|
|
5
|
-
import { applyWSSHandler, WSSHandlerOptions } from '../ws';
|
|
6
3
|
import { FastifyHandlerOptions } from '.';
|
|
7
|
-
import { AnyRouter } from '
|
|
4
|
+
import { AnyRouter } from '../../core';
|
|
5
|
+
import { NodeHTTPCreateContextFnOptions } from '../node-http';
|
|
6
|
+
import { WSSHandlerOptions, applyWSSHandler } from '../ws';
|
|
7
|
+
import { fastifyRequestHandler } from './fastifyRequestHandler';
|
|
8
8
|
|
|
9
9
|
export interface FastifyTRPCPluginOptions<TRouter extends AnyRouter> {
|
|
10
10
|
prefix?: string;
|
|
@@ -30,18 +30,26 @@ export function fastifyTRPCPlugin<TRouter extends AnyRouter>(
|
|
|
30
30
|
},
|
|
31
31
|
);
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
let prefix = opts.prefix ?? '';
|
|
34
|
+
|
|
35
|
+
// https://github.com/fastify/fastify-plugin/blob/fe079bef6557a83794bf437e14b9b9edb8a74104/plugin.js#L11
|
|
36
|
+
// @ts-expect-error property 'default' does not exists on type ...
|
|
37
|
+
if (typeof fastifyTRPCPlugin.default !== 'function') {
|
|
38
|
+
prefix = ''; // handled by fastify internally
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
fastify.all(`${prefix}/:path`, async (req, res) => {
|
|
34
42
|
const path = (req.params as any).path;
|
|
35
|
-
fastifyRequestHandler({ ...opts.trpcOptions, req, res, path });
|
|
43
|
+
await fastifyRequestHandler({ ...opts.trpcOptions, req, res, path });
|
|
36
44
|
});
|
|
37
45
|
|
|
38
46
|
if (opts.useWSS) {
|
|
39
47
|
applyWSSHandler<TRouter>({
|
|
40
|
-
...(opts.trpcOptions as WSSHandlerOptions<TRouter>),
|
|
48
|
+
...(opts.trpcOptions as unknown as WSSHandlerOptions<TRouter>),
|
|
41
49
|
wss: fastify.websocketServer,
|
|
42
50
|
});
|
|
43
51
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
44
|
-
fastify.get(
|
|
52
|
+
fastify.get(prefix ?? '/', { websocket: true }, () => {});
|
|
45
53
|
}
|
|
46
54
|
|
|
47
55
|
done();
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { assertNotBrowser } from '../../assertNotBrowser';
|
|
2
|
+
import { AnyRouter } from '../../core';
|
|
3
|
+
import { HTTPRequest } from '../../http/internals/types';
|
|
4
|
+
import { resolveHTTPResponse } from '../../http/resolveHTTPResponse';
|
|
5
|
+
import { FetchHandlerOptions } from './types';
|
|
6
|
+
|
|
7
|
+
assertNotBrowser();
|
|
8
|
+
|
|
9
|
+
export type FetchHandlerRequestOptions<TRouter extends AnyRouter> = {
|
|
10
|
+
req: Request;
|
|
11
|
+
endpoint: string;
|
|
12
|
+
} & FetchHandlerOptions<TRouter>;
|
|
13
|
+
|
|
14
|
+
export async function fetchRequestHandler<TRouter extends AnyRouter>(
|
|
15
|
+
opts: FetchHandlerRequestOptions<TRouter>,
|
|
16
|
+
): Promise<Response> {
|
|
17
|
+
const createContext = async () => {
|
|
18
|
+
return opts.createContext?.({ req: opts.req });
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const url = new URL(opts.req.url);
|
|
22
|
+
const path = url.pathname.slice(opts.endpoint.length + 1);
|
|
23
|
+
const req: HTTPRequest = {
|
|
24
|
+
query: url.searchParams,
|
|
25
|
+
method: opts.req.method,
|
|
26
|
+
headers: Object.fromEntries(opts.req.headers),
|
|
27
|
+
body: await opts.req.text(),
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const result = await resolveHTTPResponse({
|
|
31
|
+
req,
|
|
32
|
+
createContext,
|
|
33
|
+
path,
|
|
34
|
+
router: opts.router,
|
|
35
|
+
batching: opts.batching,
|
|
36
|
+
responseMeta: opts.responseMeta,
|
|
37
|
+
onError(o) {
|
|
38
|
+
opts?.onError?.({ ...o, req: opts.req });
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
const res = new Response(result.body, {
|
|
43
|
+
status: result.status,
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
for (const [key, value] of Object.entries(result.headers ?? {})) {
|
|
47
|
+
if (typeof value === 'undefined') {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (typeof value === 'string') {
|
|
52
|
+
res.headers.set(key, value);
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
for (const v of value) {
|
|
57
|
+
res.headers.append(key, v);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return res;
|
|
61
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AnyRouter, inferRouterContext } from '../../core';
|
|
2
|
+
import { HTTPBaseHandlerOptions } from '../../http/internals/types';
|
|
3
|
+
|
|
4
|
+
export type FetchCreateContextFnOptions = {
|
|
5
|
+
req: Request;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export type FetchCreateContextFn<TRouter extends AnyRouter> = (opts: {
|
|
9
|
+
req: Request;
|
|
10
|
+
}) => inferRouterContext<TRouter> | Promise<inferRouterContext<TRouter>>;
|
|
11
|
+
|
|
12
|
+
export type FetchCreateContextOption<TRouter extends AnyRouter> =
|
|
13
|
+
unknown extends inferRouterContext<TRouter>
|
|
14
|
+
? {
|
|
15
|
+
/**
|
|
16
|
+
* @link https://trpc.io/docs/context
|
|
17
|
+
**/
|
|
18
|
+
createContext?: FetchCreateContextFn<TRouter>;
|
|
19
|
+
}
|
|
20
|
+
: {
|
|
21
|
+
/**
|
|
22
|
+
* @link https://trpc.io/docs/context
|
|
23
|
+
**/
|
|
24
|
+
createContext: FetchCreateContextFn<TRouter>;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export type FetchHandlerOptions<TRouter extends AnyRouter> =
|
|
28
|
+
HTTPBaseHandlerOptions<TRouter, Request> & FetchCreateContextOption<TRouter>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CreateAWSLambdaContextOptions,
|
|
3
|
+
awsLambdaRequestHandler,
|
|
4
|
+
} from '../aws-lambda';
|
|
5
|
+
import { APIGatewayEvent } from '../aws-lambda/utils';
|
|
6
|
+
|
|
7
|
+
export * from '../aws-lambda';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated use `aws-lambda` instead
|
|
11
|
+
*/
|
|
12
|
+
export type CreateLambdaContextOptions<T extends APIGatewayEvent> =
|
|
13
|
+
CreateAWSLambdaContextOptions<T>;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @deprecated use `aws-lambda` instead
|
|
17
|
+
*/
|
|
18
|
+
export const lambdaRequestHandler = awsLambdaRequestHandler;
|