@trpc/server 10.0.0-alpha.19 → 10.0.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adapters/express/dist/trpc-server-adapters-express.cjs.dev.js +5 -5
- package/adapters/express/dist/trpc-server-adapters-express.cjs.prod.js +5 -5
- package/adapters/express/dist/trpc-server-adapters-express.esm.js +5 -5
- package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.dev.js +16 -9
- package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.prod.js +16 -9
- package/adapters/fastify/dist/trpc-server-adapters-fastify.esm.js +16 -9
- package/adapters/next/dist/trpc-server-adapters-next.cjs.dev.js +3 -3
- package/adapters/next/dist/trpc-server-adapters-next.cjs.prod.js +3 -3
- package/adapters/next/dist/trpc-server-adapters-next.esm.js +3 -3
- package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.dev.js +3 -3
- package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.prod.js +3 -3
- package/adapters/node-http/dist/trpc-server-adapters-node-http.esm.js +3 -3
- package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.dev.js +3 -3
- package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.prod.js +3 -3
- package/adapters/standalone/dist/trpc-server-adapters-standalone.esm.js +3 -3
- package/adapters/ws/dist/trpc-server-adapters-ws.cjs.dev.js +4 -4
- package/adapters/ws/dist/trpc-server-adapters-ws.cjs.prod.js +4 -4
- package/adapters/ws/dist/trpc-server-adapters-ws.esm.js +4 -4
- package/dist/TRPCError.d.ts +3 -3
- package/dist/TRPCError.d.ts.map +1 -1
- package/dist/adapters/express.js +6 -7
- package/dist/adapters/express.mjs +6 -7
- 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 +1 -1
- package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -1
- package/dist/adapters/fastify/index.js +18 -12
- package/dist/adapters/fastify/index.mjs +17 -11
- package/dist/adapters/next.d.ts +1 -1
- package/dist/adapters/next.d.ts.map +1 -1
- package/dist/adapters/next.js +4 -5
- package/dist/adapters/next.mjs +4 -5
- package/dist/adapters/node-http/index.js +4 -5
- package/dist/adapters/node-http/index.mjs +4 -5
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +1 -1
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
- package/dist/adapters/node-http/types.d.ts +3 -3
- package/dist/adapters/node-http/types.d.ts.map +1 -1
- package/dist/adapters/standalone.d.ts.map +1 -1
- package/dist/adapters/standalone.js +10 -8
- package/dist/adapters/standalone.mjs +10 -7
- package/dist/adapters/ws.d.ts +3 -3
- package/dist/adapters/ws.d.ts.map +1 -1
- package/dist/adapters/ws.js +5 -5
- package/dist/adapters/ws.mjs +5 -5
- package/dist/assertNotBrowser.d.ts.map +1 -1
- package/dist/{codes-7f46544e.js → codes-4e4d55a9.js} +2 -0
- package/dist/{codes-7a3d4f65.mjs → codes-6c13cf43.mjs} +2 -0
- 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 +4 -3
- package/dist/http/internals/types.d.ts.map +1 -1
- package/dist/http/resolveHTTPResponse.d.ts +3 -3
- package/dist/http/resolveHTTPResponse.d.ts.map +1 -1
- package/dist/index.js +44 -19
- package/dist/index.mjs +46 -21
- package/dist/internals/BaseHandlerOptions.d.ts +1 -1
- package/dist/internals/BaseHandlerOptions.d.ts.map +1 -1
- package/dist/internals/OnErrorFunction.d.ts +1 -1
- package/dist/internals/OnErrorFunction.d.ts.map +1 -1
- package/dist/internals/errors.d.ts +1 -0
- package/dist/internals/errors.d.ts.map +1 -1
- package/dist/internals/middlewares.d.ts +3 -2
- package/dist/internals/middlewares.d.ts.map +1 -1
- package/dist/internals/procedure.d.ts +44 -32
- package/dist/internals/procedure.d.ts.map +1 -1
- package/dist/{nodeHTTPRequestHandler-f9b7cd2d.mjs → nodeHTTPRequestHandler-13c4bded.mjs} +2 -3
- package/dist/{nodeHTTPRequestHandler-e02d6e5d.js → nodeHTTPRequestHandler-745e43e5.js} +3 -4
- package/dist/{resolveHTTPResponse-d4da195d.js → resolveHTTPResponse-b1167b6a.js} +6 -5
- package/dist/{resolveHTTPResponse-ca8bc869.mjs → resolveHTTPResponse-de40fda7.mjs} +6 -5
- package/dist/router.d.ts +33 -29
- package/dist/router.d.ts.map +1 -1
- package/dist/rpc/codes.d.ts +2 -0
- package/dist/rpc/codes.d.ts.map +1 -1
- package/dist/rpc/index.js +1 -1
- package/dist/rpc/index.mjs +1 -1
- package/dist/{subscription-f36af4f8.js → subscription-4b936ba3.js} +2 -2
- package/dist/{subscription-7ec5884e.mjs → subscription-8a85f253.mjs} +2 -2
- package/dist/{transformTRPCResponse-f9337285.mjs → transformTRPCResponse-9fdeecca.mjs} +50 -38
- package/dist/{transformTRPCResponse-eeeb5300.js → transformTRPCResponse-a57d3226.js} +50 -37
- package/package.json +7 -3
- package/src/TRPCError.ts +3 -3
- package/src/adapters/express.ts +2 -2
- package/src/adapters/fastify/fastifyRequestHandler.ts +6 -8
- package/src/adapters/fastify/fastifyTRPCPlugin.ts +14 -6
- package/src/adapters/next.ts +6 -2
- package/src/adapters/node-http/internals/getPostBody.test.ts +2 -1
- package/src/adapters/node-http/nodeHTTPRequestHandler.ts +5 -6
- package/src/adapters/node-http/types.ts +3 -3
- package/src/adapters/standalone.ts +11 -3
- package/src/adapters/ws.ts +9 -9
- package/src/assertNotBrowser.ts +1 -0
- package/src/http/internals/getHTTPStatusCode.ts +2 -1
- package/src/http/internals/types.ts +6 -7
- package/src/http/resolveHTTPResponse.ts +7 -7
- package/src/internals/BaseHandlerOptions.ts +1 -1
- package/src/internals/OnErrorFunction.ts +1 -1
- package/src/internals/errors.ts +20 -4
- package/src/internals/middlewares.ts +3 -2
- package/src/internals/procedure.ts +175 -68
- package/src/router.ts +165 -49
- package/src/rpc/codes.ts +1 -0
- package/src/subscription.ts +1 -1
- package/ws/dist/trpc-server-ws.cjs.dev.js +2 -2
- package/ws/dist/trpc-server-ws.cjs.prod.js +2 -2
- package/ws/dist/trpc-server-ws.esm.js +2 -2
|
@@ -1,10 +1,10 @@
|
|
|
1
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
4
|
import { AnyRouter } from '../..';
|
|
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,9 +30,17 @@ 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) {
|
|
@@ -41,7 +49,7 @@ export function fastifyTRPCPlugin<TRouter extends AnyRouter>(
|
|
|
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();
|
package/src/adapters/next.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
3
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
NextApiHandler,
|
|
5
|
+
NextApiRequest,
|
|
6
|
+
NextApiResponse,
|
|
7
|
+
} from 'next/types';
|
|
8
|
+
import { TRPCError } from '../TRPCError';
|
|
4
9
|
import { AnyRouter } from '../router';
|
|
5
10
|
import { TRPCErrorResponse } from '../rpc';
|
|
6
|
-
import { TRPCError } from '../TRPCError';
|
|
7
11
|
import { nodeHTTPRequestHandler } from './node-http';
|
|
8
12
|
import {
|
|
9
13
|
NodeHTTPCreateContextFnOptions,
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
2
|
-
import { URLSearchParams } from 'url';
|
|
3
2
|
import { assertNotBrowser } from '../../assertNotBrowser';
|
|
3
|
+
import { HTTPRequest } from '../../http/internals/types';
|
|
4
|
+
import { resolveHTTPResponse } from '../../http/resolveHTTPResponse';
|
|
5
|
+
import { AnyRouter, inferRouterContext } from '../../router';
|
|
6
|
+
import { getPostBody } from './internals/getPostBody';
|
|
4
7
|
import {
|
|
8
|
+
NodeHTTPHandlerOptions,
|
|
5
9
|
NodeHTTPRequest,
|
|
6
10
|
NodeHTTPResponse,
|
|
7
|
-
NodeHTTPHandlerOptions,
|
|
8
11
|
} from './types';
|
|
9
|
-
import { AnyRouter, inferRouterContext } from '../../router';
|
|
10
|
-
import { getPostBody } from './internals/getPostBody';
|
|
11
|
-
import { HTTPRequest } from '../../http/internals/types';
|
|
12
|
-
import { resolveHTTPResponse } from '../../http/resolveHTTPResponse';
|
|
13
12
|
|
|
14
13
|
assertNotBrowser();
|
|
15
14
|
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { IncomingMessage, ServerResponse } from 'http';
|
|
2
2
|
import qs from 'qs';
|
|
3
3
|
import { inferRouterContext } from '../..';
|
|
4
4
|
import { HTTPBaseHandlerOptions } from '../../http/internals/types';
|
|
5
5
|
import { AnyRouter } from '../../router';
|
|
6
6
|
|
|
7
|
-
export type NodeHTTPRequest =
|
|
7
|
+
export type NodeHTTPRequest = IncomingMessage & {
|
|
8
8
|
method?: string;
|
|
9
9
|
query?: qs.ParsedQs;
|
|
10
10
|
body?: unknown;
|
|
11
11
|
};
|
|
12
|
-
export type NodeHTTPResponse =
|
|
12
|
+
export type NodeHTTPResponse = ServerResponse;
|
|
13
13
|
|
|
14
14
|
export type NodeHTTPCreateContextOption<
|
|
15
15
|
TRouter extends AnyRouter,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
2
|
+
|
|
2
3
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
4
|
import http from 'http';
|
|
4
|
-
import url from 'url';
|
|
5
5
|
import { AnyRouter } from '../router';
|
|
6
6
|
import {
|
|
7
7
|
NodeHTTPCreateContextFnOptions,
|
|
@@ -21,12 +21,20 @@ export function createHTTPHandler<TRouter extends AnyRouter>(
|
|
|
21
21
|
opts: CreateHTTPHandlerOptions<TRouter>,
|
|
22
22
|
) {
|
|
23
23
|
return async (req: http.IncomingMessage, res: http.ServerResponse) => {
|
|
24
|
-
|
|
24
|
+
// if no hostname, set a dummy one
|
|
25
|
+
const href = req.url!.startsWith('/')
|
|
26
|
+
? `http://127.0.0.1${req.url}`
|
|
27
|
+
: req.url!;
|
|
28
|
+
|
|
29
|
+
// get procedure path and remove the leading slash
|
|
30
|
+
// /procedure -> procedure
|
|
31
|
+
const path = new URL(href).pathname.slice(1);
|
|
32
|
+
|
|
25
33
|
await nodeHTTPRequestHandler({
|
|
26
34
|
...opts,
|
|
27
35
|
req,
|
|
28
36
|
res,
|
|
29
|
-
path
|
|
37
|
+
path,
|
|
30
38
|
});
|
|
31
39
|
};
|
|
32
40
|
}
|
package/src/adapters/ws.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { IncomingMessage } from 'http';
|
|
2
2
|
import ws from 'ws';
|
|
3
|
+
import { TRPCError } from '../TRPCError';
|
|
3
4
|
import { BaseHandlerOptions } from '../internals/BaseHandlerOptions';
|
|
4
5
|
import { callProcedure } from '../internals/callProcedure';
|
|
5
|
-
import { getErrorFromUnknown } from '../internals/errors';
|
|
6
|
+
import { getCauseFromUnknown, getErrorFromUnknown } from '../internals/errors';
|
|
6
7
|
import { transformTRPCResponse } from '../internals/transformTRPCResponse';
|
|
7
|
-
import { AnyRouter,
|
|
8
|
+
import { AnyRouter, ProcedureType, inferRouterContext } from '../router';
|
|
8
9
|
import {
|
|
9
10
|
TRPCErrorResponse,
|
|
10
11
|
TRPCReconnectNotification,
|
|
@@ -13,7 +14,6 @@ import {
|
|
|
13
14
|
} from '../rpc';
|
|
14
15
|
import { Subscription } from '../subscription';
|
|
15
16
|
import { CombinedDataTransformer } from '../transformer';
|
|
16
|
-
import { TRPCError } from '../TRPCError';
|
|
17
17
|
import { NodeHTTPCreateContextOption } from './node-http';
|
|
18
18
|
|
|
19
19
|
/* istanbul ignore next */
|
|
@@ -84,11 +84,11 @@ function parseMessage(
|
|
|
84
84
|
*/
|
|
85
85
|
export type WSSHandlerOptions<TRouter extends AnyRouter> = BaseHandlerOptions<
|
|
86
86
|
TRouter,
|
|
87
|
-
|
|
87
|
+
IncomingMessage
|
|
88
88
|
> & {
|
|
89
89
|
wss: ws.Server;
|
|
90
90
|
process?: NodeJS.Process;
|
|
91
|
-
} & NodeHTTPCreateContextOption<TRouter,
|
|
91
|
+
} & NodeHTTPCreateContextOption<TRouter, IncomingMessage, ws>;
|
|
92
92
|
|
|
93
93
|
export function applyWSSHandler<TRouter extends AnyRouter>(
|
|
94
94
|
opts: WSSHandlerOptions<TRouter>,
|
|
@@ -96,7 +96,7 @@ export function applyWSSHandler<TRouter extends AnyRouter>(
|
|
|
96
96
|
const { wss, createContext, router } = opts;
|
|
97
97
|
|
|
98
98
|
const { transformer } = router._def;
|
|
99
|
-
wss.on('connection', (client, req) => {
|
|
99
|
+
wss.on('connection', async (client, req) => {
|
|
100
100
|
const clientSubscriptions = new Map<
|
|
101
101
|
number | string,
|
|
102
102
|
Subscription<TRouter>
|
|
@@ -232,7 +232,7 @@ export function applyWSSHandler<TRouter extends AnyRouter>(
|
|
|
232
232
|
} catch (cause) {
|
|
233
233
|
const error = new TRPCError({
|
|
234
234
|
code: 'PARSE_ERROR',
|
|
235
|
-
cause,
|
|
235
|
+
cause: getCauseFromUnknown(cause),
|
|
236
236
|
});
|
|
237
237
|
|
|
238
238
|
respond({
|
|
@@ -285,7 +285,7 @@ export function applyWSSHandler<TRouter extends AnyRouter>(
|
|
|
285
285
|
});
|
|
286
286
|
}
|
|
287
287
|
}
|
|
288
|
-
createContextAsync();
|
|
288
|
+
await createContextAsync();
|
|
289
289
|
});
|
|
290
290
|
|
|
291
291
|
return {
|
package/src/assertNotBrowser.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { TRPCResponse, TRPC_ERROR_CODES_BY_KEY } from '../../rpc';
|
|
2
1
|
import { TRPCError } from '../../TRPCError';
|
|
3
2
|
import { invert } from '../../internals/invert';
|
|
3
|
+
import { TRPCResponse, TRPC_ERROR_CODES_BY_KEY } from '../../rpc';
|
|
4
4
|
|
|
5
5
|
export const TRPC_ERROR_CODES_BY_NUMBER = invert(TRPC_ERROR_CODES_BY_KEY);
|
|
6
6
|
type ValueOf<T> = T[keyof T];
|
|
@@ -17,6 +17,7 @@ const JSONRPC2_TO_HTTP_CODE: Record<
|
|
|
17
17
|
UNAUTHORIZED: 401,
|
|
18
18
|
FORBIDDEN: 403,
|
|
19
19
|
TIMEOUT: 408,
|
|
20
|
+
CONFLICT: 409,
|
|
20
21
|
CLIENT_CLOSED_REQUEST: 499,
|
|
21
22
|
PRECONDITION_FAILED: 412,
|
|
22
23
|
PAYLOAD_TOO_LARGE: 413,
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
+
import { TRPCError } from '../../TRPCError';
|
|
2
|
+
import { BaseHandlerOptions } from '../../internals/BaseHandlerOptions';
|
|
1
3
|
import {
|
|
2
4
|
AnyRouter,
|
|
3
|
-
|
|
5
|
+
ProcedureType,
|
|
4
6
|
inferRouterContext,
|
|
5
7
|
inferRouterError,
|
|
6
|
-
|
|
7
|
-
ResponseMeta,
|
|
8
|
-
TRPCError,
|
|
9
|
-
} from '@trpc/server';
|
|
10
|
-
import { URLSearchParams } from 'url';
|
|
11
|
-
import { BaseHandlerOptions } from '../../internals/BaseHandlerOptions';
|
|
8
|
+
} from '../../router';
|
|
12
9
|
import { TRPCResponse } from '../../rpc';
|
|
10
|
+
import { Dict } from '../../types';
|
|
11
|
+
import { ResponseMeta } from '../ResponseMeta';
|
|
13
12
|
|
|
14
13
|
export type HTTPHeaders = Dict<string | string[]>;
|
|
15
14
|
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
2
|
-
import {
|
|
2
|
+
import { TRPCError } from '../TRPCError';
|
|
3
3
|
import { callProcedure } from '../internals/callProcedure';
|
|
4
|
-
import { getErrorFromUnknown } from '../internals/errors';
|
|
4
|
+
import { getCauseFromUnknown, getErrorFromUnknown } from '../internals/errors';
|
|
5
5
|
import { transformTRPCResponse } from '../internals/transformTRPCResponse';
|
|
6
6
|
import {
|
|
7
7
|
AnyRouter,
|
|
8
|
+
ProcedureType,
|
|
8
9
|
inferRouterContext,
|
|
9
10
|
inferRouterError,
|
|
10
|
-
ProcedureType,
|
|
11
11
|
} from '../router';
|
|
12
12
|
import { TRPCErrorResponse, TRPCResponse, TRPCResultResponse } from '../rpc';
|
|
13
|
-
import {
|
|
13
|
+
import { Maybe } from '../types';
|
|
14
14
|
import { getHTTPStatusCode } from './internals/getHTTPStatusCode';
|
|
15
15
|
import {
|
|
16
|
+
HTTPBaseHandlerOptions,
|
|
16
17
|
HTTPHeaders,
|
|
17
18
|
HTTPRequest,
|
|
18
19
|
HTTPResponse,
|
|
19
|
-
HTTPBaseHandlerOptions,
|
|
20
20
|
} from './internals/types';
|
|
21
21
|
|
|
22
22
|
const HTTP_METHOD_PROCEDURE_TYPE_MAP: Record<
|
|
@@ -37,10 +37,10 @@ function getRawProcedureInputOrThrow(req: HTTPRequest) {
|
|
|
37
37
|
return JSON.parse(raw!);
|
|
38
38
|
}
|
|
39
39
|
return typeof req.body === 'string' ? JSON.parse(req.body) : req.body;
|
|
40
|
-
} catch (
|
|
40
|
+
} catch (err) {
|
|
41
41
|
throw new TRPCError({
|
|
42
42
|
code: 'PARSE_ERROR',
|
|
43
|
-
cause,
|
|
43
|
+
cause: getCauseFromUnknown(err),
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AnyRouter, inferRouterContext, ProcedureType } from '../router';
|
|
2
1
|
import { TRPCError } from '../TRPCError';
|
|
2
|
+
import { AnyRouter, ProcedureType, inferRouterContext } from '../router';
|
|
3
3
|
|
|
4
4
|
export type OnErrorFunction<TRouter extends AnyRouter, TRequest> = (opts: {
|
|
5
5
|
error: TRPCError;
|
package/src/internals/errors.ts
CHANGED
|
@@ -20,14 +20,30 @@ export function getErrorFromUnknown(cause: unknown): TRPCError {
|
|
|
20
20
|
if (cause instanceof Error && cause.name === 'TRPCError') {
|
|
21
21
|
return cause as TRPCError;
|
|
22
22
|
}
|
|
23
|
+
|
|
24
|
+
let errorCause: Error | undefined = undefined;
|
|
25
|
+
let stack: string | undefined = undefined;
|
|
26
|
+
|
|
27
|
+
if (cause instanceof Error) {
|
|
28
|
+
errorCause = cause;
|
|
29
|
+
// take stack trace from cause
|
|
30
|
+
stack = cause.stack;
|
|
31
|
+
}
|
|
32
|
+
|
|
23
33
|
const err = new TRPCError({
|
|
24
34
|
code: 'INTERNAL_SERVER_ERROR',
|
|
25
|
-
cause,
|
|
35
|
+
cause: errorCause,
|
|
26
36
|
});
|
|
27
37
|
|
|
28
|
-
|
|
38
|
+
err.stack = stack;
|
|
39
|
+
|
|
40
|
+
return err;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function getCauseFromUnknown(cause: unknown) {
|
|
29
44
|
if (cause instanceof Error) {
|
|
30
|
-
|
|
45
|
+
return cause;
|
|
31
46
|
}
|
|
32
|
-
|
|
47
|
+
|
|
48
|
+
return undefined;
|
|
33
49
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ProcedureType } from '../router';
|
|
2
1
|
import { TRPCError } from '../TRPCError';
|
|
2
|
+
import { ProcedureType } from '../router';
|
|
3
3
|
|
|
4
4
|
export const middlewareMarker = Symbol('middlewareMarker');
|
|
5
5
|
interface MiddlewareResultBase<TContext> {
|
|
@@ -27,11 +27,12 @@ export type MiddlewareResult<TContext> =
|
|
|
27
27
|
| MiddlewareOKResult<TContext>
|
|
28
28
|
| MiddlewareErrorResult<TContext>;
|
|
29
29
|
|
|
30
|
-
export type MiddlewareFunction<TInputContext, TContext> = (opts: {
|
|
30
|
+
export type MiddlewareFunction<TInputContext, TContext, TMeta> = (opts: {
|
|
31
31
|
ctx: TInputContext;
|
|
32
32
|
type: ProcedureType;
|
|
33
33
|
path: string;
|
|
34
34
|
rawInput: unknown;
|
|
35
|
+
meta?: TMeta;
|
|
35
36
|
next: {
|
|
36
37
|
(): Promise<MiddlewareResult<TInputContext>>;
|
|
37
38
|
<T>(opts: { ctx: T }): Promise<MiddlewareResult<T>>;
|