@trpc/server 10.0.0-alpha.4 → 10.0.0-alpha.40
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 -6
- package/adapters/express/dist/trpc-server-adapters-express.cjs.prod.js +7 -6
- package/adapters/express/dist/trpc-server-adapters-express.esm.js +7 -6
- package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.d.ts +1 -0
- package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.dev.js +109 -0
- package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.js +7 -0
- package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.prod.js +109 -0
- package/adapters/fastify/dist/trpc-server-adapters-fastify.esm.js +104 -0
- package/adapters/fastify/index.d.ts +1 -0
- package/adapters/fastify/index.js +1 -0
- package/adapters/fetch/index.d.ts +1 -0
- package/adapters/fetch/index.js +1 -0
- package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.d.ts +1 -0
- package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.dev.js +25 -0
- package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.js +7 -0
- package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.prod.js +25 -0
- package/adapters/lambda/dist/trpc-server-adapters-lambda.esm.js +21 -0
- package/adapters/next/dist/trpc-server-adapters-next.cjs.dev.js +4 -3
- package/adapters/next/dist/trpc-server-adapters-next.cjs.prod.js +4 -3
- package/adapters/next/dist/trpc-server-adapters-next.esm.js +4 -3
- package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.dev.js +4 -3
- package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.prod.js +4 -3
- package/adapters/node-http/dist/trpc-server-adapters-node-http.esm.js +4 -3
- package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.dev.js +5 -4
- package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.prod.js +5 -4
- package/adapters/standalone/dist/trpc-server-adapters-standalone.esm.js +5 -4
- package/adapters/ws/dist/trpc-server-adapters-ws.cjs.dev.js +6 -5
- package/adapters/ws/dist/trpc-server-adapters-ws.cjs.prod.js +6 -5
- package/adapters/ws/dist/trpc-server-adapters-ws.esm.js +6 -5
- package/dist/TRPCError-9050a68d.js +69 -0
- package/dist/TRPCError-b7fa0c31.mjs +65 -0
- package/dist/adapters/aws-lambda/index.d.ts +14 -0
- package/dist/adapters/aws-lambda/index.d.ts.map +1 -0
- package/dist/adapters/aws-lambda/utils.d.ts +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 +8 -7
- package/dist/adapters/express.mjs +8 -7
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts +13 -0
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -0
- package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +12 -0
- package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -0
- package/dist/adapters/fastify/index.d.ts +3 -0
- package/dist/adapters/fastify/index.d.ts.map +1 -0
- package/dist/adapters/fastify/index.js +108 -0
- package/dist/adapters/fastify/index.mjs +103 -0
- package/dist/{ws → adapters/fastify}/index.ts.js +0 -0
- package/dist/adapters/fetch/fetchRequestHandler.d.ts +8 -0
- package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -0
- package/dist/adapters/fetch/index.d.ts +3 -0
- package/dist/adapters/fetch/index.d.ts.map +1 -0
- package/dist/adapters/fetch/index.js +69 -0
- package/dist/adapters/fetch/index.mjs +65 -0
- package/dist/adapters/fetch/index.ts.js +1 -0
- package/dist/adapters/fetch/types.d.ts +21 -0
- package/dist/adapters/fetch/types.d.ts.map +1 -0
- package/dist/adapters/lambda/index.d.ts +12 -0
- package/dist/adapters/lambda/index.d.ts.map +1 -0
- package/dist/adapters/next.d.ts +2 -2
- package/dist/adapters/next.d.ts.map +1 -1
- package/dist/adapters/next.js +9 -9
- package/dist/adapters/next.mjs +8 -8
- package/dist/adapters/node-http/index.js +5 -4
- package/dist/adapters/node-http/index.mjs +5 -4
- package/dist/adapters/node-http/internals/getPostBody.d.ts +1 -1
- package/dist/adapters/node-http/internals/getPostBody.d.ts.map +1 -1
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +2 -2
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
- package/dist/adapters/node-http/types.d.ts +11 -9
- package/dist/adapters/node-http/types.d.ts.map +1 -1
- package/dist/adapters/standalone.d.ts +2 -2
- package/dist/adapters/standalone.d.ts.map +1 -1
- package/dist/adapters/standalone.js +11 -7
- package/dist/adapters/standalone.mjs +11 -6
- package/dist/adapters/ws.d.ts +8 -6
- package/dist/adapters/ws.d.ts.map +1 -1
- package/dist/adapters/ws.js +123 -90
- package/dist/adapters/ws.mjs +118 -85
- package/dist/assertNotBrowser.d.ts.map +1 -1
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/initTRPC.d.ts +87 -0
- package/dist/core/initTRPC.d.ts.map +1 -0
- package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts +282 -0
- package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts.map +1 -0
- package/dist/core/internals/config.d.ts +36 -0
- package/dist/core/internals/config.d.ts.map +1 -0
- package/dist/core/internals/getParseFn.d.ts +9 -0
- package/dist/core/internals/getParseFn.d.ts.map +1 -0
- package/dist/core/internals/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 +127 -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 +84 -0
- package/dist/core/procedure.d.ts.map +1 -0
- package/dist/core/router.d.ts +128 -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 +34 -0
- package/dist/deprecated/interop.d.ts.map +1 -0
- package/dist/deprecated/router.d.ts +194 -0
- package/dist/deprecated/router.d.ts.map +1 -0
- package/dist/{codes-7a3d4f65.mjs → envelopes-af8c2959.mjs} +30 -1
- package/dist/{codes-7f46544e.js → envelopes-b6dd0367.js} +29 -1
- package/dist/error/TRPCError.d.ts +11 -0
- package/dist/error/TRPCError.d.ts.map +1 -0
- package/dist/error/formatter.d.ts +33 -0
- package/dist/error/formatter.d.ts.map +1 -0
- package/dist/{internals/errors.d.ts → error/utils.d.ts} +3 -2
- package/dist/error/utils.d.ts.map +1 -0
- package/dist/http/index.d.ts +1 -1
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/internals/getHTTPStatusCode.d.ts +2 -1
- package/dist/http/internals/getHTTPStatusCode.d.ts.map +1 -1
- package/dist/http/internals/types.d.ts +11 -8
- package/dist/http/internals/types.d.ts.map +1 -1
- package/dist/http/resolveHTTPResponse.d.ts +4 -4
- package/dist/http/resolveHTTPResponse.d.ts.map +1 -1
- package/dist/http/{ResponseMeta.d.ts → types.d.ts} +1 -1
- package/dist/http/types.d.ts.map +1 -0
- package/dist/index-1a25ccbd.js +33 -0
- package/dist/index-a3bd54c7.mjs +31 -0
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +798 -108
- package/dist/index.mjs +785 -93
- 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-174459c5.mjs +105 -0
- package/dist/nodeHTTPRequestHandler-6b7c8622.js +107 -0
- package/dist/observable/index.d.ts +5 -0
- package/dist/observable/index.d.ts.map +1 -0
- package/dist/observable/index.js +204 -0
- package/dist/observable/index.mjs +195 -0
- package/dist/observable/index.ts.js +1 -0
- package/dist/observable/internals/identity.d.ts +2 -0
- package/dist/observable/internals/identity.d.ts.map +1 -0
- package/dist/observable/internals/observableToPromise.d.ts +10 -0
- package/dist/observable/internals/observableToPromise.d.ts.map +1 -0
- package/dist/observable/internals/pipe.d.ts +4 -0
- package/dist/observable/internals/pipe.d.ts.map +1 -0
- package/dist/observable/observable.d.ts +5 -0
- package/dist/observable/observable.d.ts.map +1 -0
- package/dist/observable/operators/index.d.ts +4 -0
- package/dist/observable/operators/index.d.ts.map +1 -0
- package/dist/observable/operators/map.d.ts +3 -0
- package/dist/observable/operators/map.d.ts.map +1 -0
- package/dist/observable/operators/share.d.ts +6 -0
- package/dist/observable/operators/share.d.ts.map +1 -0
- package/dist/observable/operators/tap.d.ts +3 -0
- package/dist/observable/operators/tap.d.ts.map +1 -0
- package/dist/observable/types.d.ts +29 -0
- package/dist/observable/types.d.ts.map +1 -0
- package/dist/observable-341a0506.js +109 -0
- package/dist/observable-cfedfa30.mjs +106 -0
- package/dist/{nodeHTTPRequestHandler-10e6d2f9.mjs → resolveHTTPResponse-8657b8de.mjs} +32 -133
- package/dist/{nodeHTTPRequestHandler-d7c307d3.js → resolveHTTPResponse-fcc8f644.js} +37 -139
- package/dist/rpc/codes.d.ts +2 -0
- package/dist/rpc/codes.d.ts.map +1 -1
- package/dist/rpc/envelopes.d.ts +62 -40
- package/dist/rpc/envelopes.d.ts.map +1 -1
- package/dist/rpc/index.js +7 -3
- package/dist/rpc/index.mjs +1 -1
- package/dist/rpc/internals/invert.d.ts +18 -0
- package/dist/rpc/internals/invert.d.ts.map +1 -0
- package/dist/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/shared/index.ts.js +1 -0
- package/dist/subscription.d.ts +3 -52
- package/dist/subscription.d.ts.map +1 -1
- package/dist/subscription.js +44 -0
- package/dist/subscription.mjs +40 -0
- package/dist/subscription.ts.js +1 -0
- package/dist/transformTRPCResponse-0c261655.js +29 -0
- package/dist/transformTRPCResponse-747b9a68.mjs +27 -0
- package/dist/transformer.d.ts +14 -0
- package/dist/transformer.d.ts.map +1 -1
- package/dist/types.d.ts +35 -8
- package/dist/types.d.ts.map +1 -1
- package/observable/index.d.ts +1 -0
- package/observable/index.js +1 -0
- package/package.json +56 -16
- package/rpc/dist/trpc-server-rpc.cjs.dev.js +1 -1
- package/rpc/dist/trpc-server-rpc.cjs.prod.js +1 -1
- package/rpc/dist/trpc-server-rpc.esm.js +1 -1
- package/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 +77 -0
- package/src/adapters/fastify/fastifyTRPCPlugin.ts +56 -0
- package/src/adapters/fastify/index.ts +2 -0
- package/src/adapters/fetch/fetchRequestHandler.ts +61 -0
- package/src/adapters/fetch/index.ts +2 -0
- package/src/adapters/fetch/types.ts +28 -0
- package/src/adapters/lambda/index.ts +18 -0
- package/src/adapters/next.ts +10 -8
- package/src/adapters/node-http/internals/getPostBody.test.ts +2 -1
- package/src/adapters/node-http/internals/getPostBody.ts +1 -1
- package/src/adapters/node-http/nodeHTTPRequestHandler.ts +7 -7
- package/src/adapters/node-http/types.ts +11 -9
- package/src/adapters/standalone.ts +12 -4
- package/src/adapters/ws.ts +135 -91
- package/src/assertNotBrowser.ts +1 -0
- package/src/core/index.ts +6 -0
- package/src/core/initTRPC.ts +95 -0
- package/src/core/internals/__generated__/mergeRoutersGeneric.ts +386 -0
- package/src/core/internals/config.ts +43 -0
- package/src/core/internals/getParseFn.ts +47 -0
- package/src/core/internals/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 +420 -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 +115 -0
- package/src/core/router.ts +366 -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 +229 -0
- package/src/{router.ts → deprecated/router.ts} +219 -104
- package/src/{TRPCError.ts → error/TRPCError.ts} +6 -14
- package/src/error/formatter.ts +51 -0
- package/src/{internals/errors.ts → error/utils.ts} +21 -5
- package/src/http/index.ts +1 -1
- package/src/http/internals/getHTTPStatusCode.ts +3 -2
- package/src/http/internals/types.ts +11 -14
- package/src/http/resolveHTTPResponse.ts +29 -38
- 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 +88 -69
- 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 +40 -9
- package/dist/TRPCError.d.ts +0 -19
- package/dist/TRPCError.d.ts.map +0 -1
- package/dist/deprecated/LegacyRouter.d.ts +0 -3
- package/dist/deprecated/LegacyRouter.d.ts.map +0 -1
- package/dist/deprecated/createHttpServer.d.ts +0 -19
- package/dist/deprecated/createHttpServer.d.ts.map +0 -1
- package/dist/deprecated/requestHandler.d.ts +0 -15
- package/dist/deprecated/requestHandler.d.ts.map +0 -1
- package/dist/http/ResponseMeta.d.ts.map +0 -1
- package/dist/internals/BaseHandlerOptions.d.ts +0 -13
- package/dist/internals/BaseHandlerOptions.d.ts.map +0 -1
- package/dist/internals/OnErrorFunction.d.ts +0 -11
- package/dist/internals/OnErrorFunction.d.ts.map +0 -1
- package/dist/internals/callProcedure.d.ts.map +0 -1
- package/dist/internals/errors.d.ts.map +0 -1
- package/dist/internals/middlewares.d.ts.map +0 -1
- package/dist/internals/procedure.d.ts +0 -74
- package/dist/internals/procedure.d.ts.map +0 -1
- package/dist/internals/wrapCallSafe.d.ts +0 -16
- package/dist/internals/wrapCallSafe.d.ts.map +0 -1
- package/dist/router.d.ts +0 -176
- package/dist/router.d.ts.map +0 -1
- package/dist/subscription-5b7e1eba.js +0 -136
- package/dist/subscription-e1d42e69.mjs +0 -133
- package/dist/transformTRPCResponse-76e0c91e.mjs +0 -109
- package/dist/transformTRPCResponse-bd24f548.js +0 -114
- package/dist/ws/index.d.ts +0 -7
- package/dist/ws/index.d.ts.map +0 -1
- package/dist/ws/index.js +0 -15
- package/dist/ws/index.mjs +0 -11
- package/src/deprecated/LegacyRouter.ts +0 -3
- package/src/deprecated/createHttpServer.ts +0 -29
- package/src/deprecated/requestHandler.ts +0 -26
- package/src/internals/BaseHandlerOptions.ts +0 -13
- package/src/internals/OnErrorFunction.ts +0 -11
- package/src/internals/procedure.ts +0 -283
- package/src/internals/wrapCallSafe.ts +0 -19
- package/src/ws/index.ts +0 -8
- package/ws/dist/trpc-server-ws.cjs.d.ts +0 -1
- package/ws/dist/trpc-server-ws.cjs.dev.js +0 -15
- package/ws/dist/trpc-server-ws.cjs.js +0 -7
- package/ws/dist/trpc-server-ws.cjs.prod.js +0 -15
- package/ws/dist/trpc-server-ws.esm.js +0 -11
- package/ws/index.d.ts +0 -1
- package/ws/index.js +0 -1
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { a as getErrorFromUnknown } from './TRPCError-b7fa0c31.mjs';
|
|
2
|
+
import { o as observable } from './observable-cfedfa30.mjs';
|
|
3
|
+
|
|
4
|
+
function subscriptionPullFactory(opts) {
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6
|
+
let timer;
|
|
7
|
+
let stopped = false;
|
|
8
|
+
|
|
9
|
+
async function _pull(emit) {
|
|
10
|
+
/* istanbul ignore next */
|
|
11
|
+
if (stopped) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
try {
|
|
16
|
+
await opts.pull(emit);
|
|
17
|
+
} catch (err
|
|
18
|
+
/* istanbul ignore next */
|
|
19
|
+
) {
|
|
20
|
+
emit.error(getErrorFromUnknown(err));
|
|
21
|
+
}
|
|
22
|
+
/* istanbul ignore else */
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
if (!stopped) {
|
|
26
|
+
timer = setTimeout(() => _pull(emit), opts.intervalMs);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return observable(emit => {
|
|
31
|
+
_pull(emit).catch(err => emit.error(getErrorFromUnknown(err)));
|
|
32
|
+
|
|
33
|
+
return () => {
|
|
34
|
+
clearTimeout(timer);
|
|
35
|
+
stopped = true;
|
|
36
|
+
};
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export { subscriptionPullFactory };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function transformTRPCResponseItem(router, item) {
|
|
4
|
+
if ('error' in item) {
|
|
5
|
+
return { ...item,
|
|
6
|
+
error: router._def.transformer.output.serialize(item.error)
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
if ('data' in item.result) {
|
|
11
|
+
return { ...item,
|
|
12
|
+
result: { ...item.result,
|
|
13
|
+
data: router._def.transformer.output.serialize(item.result.data)
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return item;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Takes a unserialized `TRPCResponse` and serializes it with the router's transformers
|
|
22
|
+
**/
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
function transformTRPCResponse(router, itemOrItems) {
|
|
26
|
+
return Array.isArray(itemOrItems) ? itemOrItems.map(item => transformTRPCResponseItem(router, item)) : transformTRPCResponseItem(router, itemOrItems);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
exports.transformTRPCResponse = transformTRPCResponse;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
function transformTRPCResponseItem(router, item) {
|
|
2
|
+
if ('error' in item) {
|
|
3
|
+
return { ...item,
|
|
4
|
+
error: router._def.transformer.output.serialize(item.error)
|
|
5
|
+
};
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
if ('data' in item.result) {
|
|
9
|
+
return { ...item,
|
|
10
|
+
result: { ...item.result,
|
|
11
|
+
data: router._def.transformer.output.serialize(item.result.data)
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return item;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Takes a unserialized `TRPCResponse` and serializes it with the router's transformers
|
|
20
|
+
**/
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
function transformTRPCResponse(router, itemOrItems) {
|
|
24
|
+
return Array.isArray(itemOrItems) ? itemOrItems.map(item => transformTRPCResponseItem(router, item)) : transformTRPCResponseItem(router, itemOrItems);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { transformTRPCResponse as t };
|
package/dist/transformer.d.ts
CHANGED
|
@@ -27,4 +27,18 @@ export declare type DataTransformerOptions = DataTransformer | CombinedDataTrans
|
|
|
27
27
|
* @public
|
|
28
28
|
*/
|
|
29
29
|
export declare type ClientDataTransformerOptions = DataTransformer | CombinedDataTransformerClient;
|
|
30
|
+
/**
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
export declare function getDataTransformer(transformer: DataTransformerOptions): CombinedDataTransformer;
|
|
34
|
+
/**
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
export declare type DefaultDataTransformer = CombinedDataTransformer & {
|
|
38
|
+
_default: true;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* @internal
|
|
42
|
+
*/
|
|
43
|
+
export declare const defaultTransformer: DefaultDataTransformer;
|
|
30
44
|
//# sourceMappingURL=transformer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../src/transformer.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,oBAAY,eAAe,GAAG;IAC5B,SAAS,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;IAC5B,WAAW,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,oBAAY,uBAAuB,GAAG;IACpC,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,oBAAY,6BAA6B,GAAG;IAC1C,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAC1C,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;CAC9C,CAAC;AAEF;;GAEG;AACH,oBAAY,sBAAsB,GAAG,eAAe,GAAG,uBAAuB,CAAC;AAE/E;;GAEG;AACH,oBAAY,4BAA4B,GACpC,eAAe,GACf,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../src/transformer.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,oBAAY,eAAe,GAAG;IAC5B,SAAS,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;IAC5B,WAAW,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,oBAAY,uBAAuB,GAAG;IACpC,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,oBAAY,6BAA6B,GAAG;IAC1C,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAC1C,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;CAC9C,CAAC;AAEF;;GAEG;AACH,oBAAY,sBAAsB,GAAG,eAAe,GAAG,uBAAuB,CAAC;AAE/E;;GAEG;AACH,oBAAY,4BAA4B,GACpC,eAAe,GACf,6BAA6B,CAAC;AAElC;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,sBAAsB,GAClC,uBAAuB,CAKzB;AAED;;GAEG;AACH,oBAAY,sBAAsB,GAAG,uBAAuB,GAAG;IAC7D,QAAQ,EAAE,IAAI,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,sBAIhC,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -4,16 +4,8 @@
|
|
|
4
4
|
export declare type Prefix<K extends string, T extends string> = `${K}${T}`;
|
|
5
5
|
/**
|
|
6
6
|
* @internal
|
|
7
|
-
* @deprecated will be removed in next major
|
|
8
7
|
*/
|
|
9
8
|
export declare type identity<T> = T;
|
|
10
|
-
/**
|
|
11
|
-
* @internal
|
|
12
|
-
* @deprecated will be removed in next major
|
|
13
|
-
*/
|
|
14
|
-
export declare type format<T> = {
|
|
15
|
-
[k in keyof T]: T[k];
|
|
16
|
-
};
|
|
17
9
|
/**
|
|
18
10
|
* @internal
|
|
19
11
|
*/
|
|
@@ -38,4 +30,39 @@ export declare type ThenArg<T> = T extends PromiseLike<infer U> ? ThenArg<U> : T
|
|
|
38
30
|
* @public
|
|
39
31
|
*/
|
|
40
32
|
export declare type Dict<T> = Record<string, T | undefined>;
|
|
33
|
+
/**
|
|
34
|
+
* @public
|
|
35
|
+
*/
|
|
36
|
+
export declare type MaybePromise<T> = T | Promise<T>;
|
|
37
|
+
/**
|
|
38
|
+
* @internal
|
|
39
|
+
*
|
|
40
|
+
* Creates a "lower-priority" type inference.
|
|
41
|
+
* https://github.com/microsoft/TypeScript/issues/14829#issuecomment-322267089
|
|
42
|
+
*/
|
|
43
|
+
export declare type InferLast<T> = T & {
|
|
44
|
+
[K in keyof T]: T[K];
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* @public
|
|
48
|
+
*/
|
|
49
|
+
export declare type inferAsyncReturnType<TFunction extends (...args: any) => any> = ThenArg<ReturnType<TFunction>>;
|
|
50
|
+
declare type FilterKeys<T extends object, K> = {
|
|
51
|
+
[TKey in keyof T]: T[TKey] extends K ? TKey : never;
|
|
52
|
+
}[keyof T];
|
|
53
|
+
/**
|
|
54
|
+
* @internal
|
|
55
|
+
*/
|
|
56
|
+
export declare type Filter<T extends object, K> = Pick<T, FilterKeys<T, K>>;
|
|
57
|
+
/**
|
|
58
|
+
* @internal
|
|
59
|
+
*/
|
|
60
|
+
export declare type NeverKeys<T> = {
|
|
61
|
+
[TKey in keyof T]: T[TKey] extends never ? TKey : never;
|
|
62
|
+
}[keyof T];
|
|
63
|
+
/**
|
|
64
|
+
* @internal
|
|
65
|
+
*/
|
|
66
|
+
export declare type OmitNeverKeys<T> = Omit<T, NeverKeys<T>>;
|
|
67
|
+
export {};
|
|
41
68
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,oBAAY,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AAEpE
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,oBAAY,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AAEpE;;GAEG;AACH,oBAAY,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAE5B;;GAEG;AACH,oBAAY,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC;KAClC,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GACvC,CAAC,CAAC,CAAC,CAAC,GACJ,CAAC,SAAS,MAAM,CAAC,GACjB,CAAC,CAAC,CAAC,CAAC,GACJ,KAAK;CACV,CAAC,CAAC;AAEH;;GAEG;AACH,oBAAY,QAAQ,CAClB,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChC,OAAO,SAAS,MAAM,IACpB;KACD,CAAC,IAAI,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF;;GAEG;AACH,oBAAY,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;AAE5C;;GAEG;AACH,oBAAY,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAEzE;;GAEG;AACH,oBAAY,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;AAEpD;;GAEG;AACH,oBAAY,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7C;;;;;GAKG;AACH,oBAAY,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAExD;;GAEG;AACH,oBAAY,oBAAoB,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,IACtE,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AAEjC,aAAK,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI;KACpC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK;CACpD,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;GAEG;AACH,oBAAY,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEpE;;GAEG;AACH,oBAAY,SAAS,CAAC,CAAC,IAAI;KACxB,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,GAAG,IAAI,GAAG,KAAK;CACxD,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;GAEG;AACH,oBAAY,aAAa,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../dist/observable';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('../dist/observable/index');
|
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-alpha.40",
|
|
4
4
|
"description": "tRPC Server",
|
|
5
5
|
"author": "KATT",
|
|
6
6
|
"license": "MIT",
|
|
@@ -12,12 +12,18 @@
|
|
|
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
23
|
"test": "jest",
|
|
20
|
-
"build": "rollup -c"
|
|
24
|
+
"build": "rollup -c",
|
|
25
|
+
"benchmark": "yarn tsc --project tsconfig.benchmark.json",
|
|
26
|
+
"ts-watch": "tsc --project tsconfig.watch.json"
|
|
21
27
|
},
|
|
22
28
|
"main": "dist/index.js",
|
|
23
29
|
"module": "dist/index.mjs",
|
|
@@ -28,6 +34,11 @@
|
|
|
28
34
|
"require": "./dist/index.js",
|
|
29
35
|
"default": "./dist/index.js"
|
|
30
36
|
},
|
|
37
|
+
"./adapters/aws-lambda": {
|
|
38
|
+
"import": "./dist/adapters/aws-lambda.mjs",
|
|
39
|
+
"require": "./dist/adapters/aws-lambda.js",
|
|
40
|
+
"default": "./dist/adapters/aws-lambda.js"
|
|
41
|
+
},
|
|
31
42
|
"./adapters/express": {
|
|
32
43
|
"import": "./dist/adapters/express.mjs",
|
|
33
44
|
"require": "./dist/adapters/express.js",
|
|
@@ -48,56 +59,85 @@
|
|
|
48
59
|
"require": "./dist/adapters/standalone.js",
|
|
49
60
|
"default": "./dist/adapters/standalone.js"
|
|
50
61
|
},
|
|
62
|
+
"./adapters/fastify": {
|
|
63
|
+
"import": "./dist/adapters/fastify/index.mjs",
|
|
64
|
+
"require": "./dist/adapters/fastify/index.js",
|
|
65
|
+
"default": "./dist/adapters/fastify/index.js"
|
|
66
|
+
},
|
|
51
67
|
"./adapters/ws": {
|
|
52
68
|
"import": "./dist/adapters/ws.mjs",
|
|
53
69
|
"require": "./dist/adapters/ws.js",
|
|
54
70
|
"default": "./dist/adapters/ws.js"
|
|
55
71
|
},
|
|
56
|
-
"./
|
|
57
|
-
"import": "./dist/
|
|
58
|
-
"require": "./dist/
|
|
59
|
-
"default": "./dist/
|
|
72
|
+
"./adapters/fetch": {
|
|
73
|
+
"import": "./dist/adapters/fetch/index.mjs",
|
|
74
|
+
"require": "./dist/adapters/fetch/index.js",
|
|
75
|
+
"default": "./dist/adapters/fetch/index.js"
|
|
60
76
|
},
|
|
61
77
|
"./rpc": {
|
|
62
78
|
"import": "./dist/rpc/index.mjs",
|
|
63
79
|
"require": "./dist/rpc/index.js",
|
|
64
80
|
"default": "./dist/rpc/index.js"
|
|
81
|
+
},
|
|
82
|
+
"./observable": {
|
|
83
|
+
"import": "./dist/observable/index.mjs",
|
|
84
|
+
"require": "./dist/observable/index.js",
|
|
85
|
+
"default": "./dist/observable/index.js"
|
|
86
|
+
},
|
|
87
|
+
"./subscription": {
|
|
88
|
+
"import": "./dist/subscription.mjs",
|
|
89
|
+
"require": "./dist/subscription.js",
|
|
90
|
+
"default": "./dist/subscription.js"
|
|
91
|
+
},
|
|
92
|
+
"./shared": {
|
|
93
|
+
"import": "./dist/shared/index.mjs",
|
|
94
|
+
"require": "./dist/shared/index.js",
|
|
95
|
+
"default": "./dist/shared/index.js"
|
|
65
96
|
}
|
|
66
97
|
},
|
|
67
98
|
"files": [
|
|
68
99
|
"README.md",
|
|
69
100
|
"dist",
|
|
70
101
|
"adapters",
|
|
71
|
-
"ws",
|
|
72
102
|
"rpc",
|
|
103
|
+
"observable",
|
|
104
|
+
"shared",
|
|
73
105
|
"src"
|
|
74
106
|
],
|
|
75
107
|
"publishConfig": {
|
|
76
108
|
"access": "public"
|
|
77
109
|
},
|
|
78
110
|
"devDependencies": {
|
|
79
|
-
"@
|
|
80
|
-
"@
|
|
81
|
-
"@
|
|
111
|
+
"@cloudflare/workers-types": "^3.14.1",
|
|
112
|
+
"@fastify/websocket": "^5.0.0",
|
|
113
|
+
"@miniflare/core": "^2.4.0",
|
|
114
|
+
"@types/aws-lambda": "^8.10.97",
|
|
82
115
|
"@types/express": "^4.17.12",
|
|
83
116
|
"@types/hash-sum": "^1.0.0",
|
|
84
117
|
"@types/ws": "^8.2.0",
|
|
118
|
+
"abort-controller": "^3.0.0",
|
|
85
119
|
"devalue": "^2.0.1",
|
|
120
|
+
"esbuild": "^0.14.38",
|
|
86
121
|
"express": "^4.17.1",
|
|
87
|
-
"fastify": "^3.
|
|
122
|
+
"fastify": "^3.27.1",
|
|
123
|
+
"fastify-plugin": "^3.0.1",
|
|
124
|
+
"fastify-websocket": "^4.0.0",
|
|
88
125
|
"hash-sum": "^2.0.0",
|
|
89
126
|
"jest": "^27.1.0",
|
|
127
|
+
"jest-environment-miniflare": "^2.4.0",
|
|
90
128
|
"konn": "^0.7.0",
|
|
129
|
+
"miniflare": "^2.4.0",
|
|
91
130
|
"myzod": "^1.3.1",
|
|
92
|
-
"next": "^12.
|
|
131
|
+
"next": "^12.1.6",
|
|
132
|
+
"node-fetch": "^2.6.1",
|
|
93
133
|
"superstruct": "^0.15.2",
|
|
94
|
-
"typescript": "4.
|
|
134
|
+
"typescript": "4.7.4",
|
|
95
135
|
"ws": "^8.0.0",
|
|
96
136
|
"yup": "^0.32.8",
|
|
97
137
|
"zod": "^3.0.0"
|
|
98
138
|
},
|
|
99
|
-
"gitHead": "ef9f7f1d36a26339b96069bba001ea0fe5768bb3",
|
|
100
139
|
"dependencies": {
|
|
101
140
|
"tslib": "^2.1.0"
|
|
102
|
-
}
|
|
141
|
+
},
|
|
142
|
+
"gitHead": "2af7a0070f3bc01b81fe6f14f591e77c549520a7"
|
|
103
143
|
}
|
|
@@ -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';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../dist/shared';
|
package/shared/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('../dist/shared/index');
|
|
@@ -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,
|