From 9474952b7e3b6ced0585cb11169e43a25d4dc3f6 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Thu, 3 Oct 2024 10:52:18 +0200 Subject: [PATCH 1/5] typescript tango --- packages/core/src/trpc.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/core/src/trpc.ts b/packages/core/src/trpc.ts index a3101d793a31..55fb5c3171bf 100644 --- a/packages/core/src/trpc.ts +++ b/packages/core/src/trpc.ts @@ -37,7 +37,9 @@ function captureIfError(nextResult: unknown): void { * Sentry tRPC middleware that captures errors and creates spans for tRPC procedures. */ export function trpcMiddleware(options: SentryTrpcMiddlewareOptions = {}) { - return async function (opts: SentryTrpcMiddlewareArguments): Promise { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + return async function (opts: SentryTrpcMiddlewareArguments): T extends Promise ? Promise : T { const { path, type, next, rawInput, getRawInput } = opts; const client = getClient(); @@ -85,6 +87,6 @@ export function trpcMiddleware(options: SentryTrpcMiddlewareOptions = {}) { throw e; } }, - ); + ) as T extends Promise ? Promise : T; }; } From ef9fc96857de389b448d6e0585f351089f669615 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Thu, 3 Oct 2024 11:03:24 +0200 Subject: [PATCH 2/5] flip types --- packages/core/src/trpc.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/core/src/trpc.ts b/packages/core/src/trpc.ts index 55fb5c3171bf..90433432ff7e 100644 --- a/packages/core/src/trpc.ts +++ b/packages/core/src/trpc.ts @@ -33,13 +33,15 @@ function captureIfError(nextResult: unknown): void { } } +type TrpcMiddleware = T extends Promise ? T : Promise; + /** * Sentry tRPC middleware that captures errors and creates spans for tRPC procedures. */ export function trpcMiddleware(options: SentryTrpcMiddlewareOptions = {}) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore - return async function (opts: SentryTrpcMiddlewareArguments): T extends Promise ? Promise : T { + return async function (opts: SentryTrpcMiddlewareArguments): TrpcMiddleware { const { path, type, next, rawInput, getRawInput } = opts; const client = getClient(); @@ -87,6 +89,6 @@ export function trpcMiddleware(options: SentryTrpcMiddlewareOptions = {}) { throw e; } }, - ) as T extends Promise ? Promise : T; + ) as TrpcMiddleware; }; } From 7c433dd7420711954fe0fc55397d8f313c23f3df Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Thu, 3 Oct 2024 11:03:44 +0200 Subject: [PATCH 3/5] rename --- packages/core/src/trpc.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/core/src/trpc.ts b/packages/core/src/trpc.ts index 90433432ff7e..366a0ba9aa62 100644 --- a/packages/core/src/trpc.ts +++ b/packages/core/src/trpc.ts @@ -33,7 +33,7 @@ function captureIfError(nextResult: unknown): void { } } -type TrpcMiddleware = T extends Promise ? T : Promise; +type SentryTrpcMiddleware = T extends Promise ? T : Promise; /** * Sentry tRPC middleware that captures errors and creates spans for tRPC procedures. @@ -41,7 +41,7 @@ type TrpcMiddleware = T extends Promise ? T : Promise; export function trpcMiddleware(options: SentryTrpcMiddlewareOptions = {}) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore - return async function (opts: SentryTrpcMiddlewareArguments): TrpcMiddleware { + return async function (opts: SentryTrpcMiddlewareArguments): SentryTrpcMiddleware { const { path, type, next, rawInput, getRawInput } = opts; const client = getClient(); @@ -89,6 +89,6 @@ export function trpcMiddleware(options: SentryTrpcMiddlewareOptions = {}) { throw e; } }, - ) as TrpcMiddleware; + ) as SentryTrpcMiddleware; }; } From c900fb21cde1052533738e3ba8399175ead6018d Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Thu, 3 Oct 2024 11:06:13 +0200 Subject: [PATCH 4/5] update node test --- .../e2e-tests/test-applications/node-express/src/app.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dev-packages/e2e-tests/test-applications/node-express/src/app.ts b/dev-packages/e2e-tests/test-applications/node-express/src/app.ts index 4fa07d82ff6d..de240b761df0 100644 --- a/dev-packages/e2e-tests/test-applications/node-express/src/app.ts +++ b/dev-packages/e2e-tests/test-applications/node-express/src/app.ts @@ -105,9 +105,7 @@ Sentry.addEventProcessor(event => { export const t = initTRPC.context().create(); -const sentryMiddleware = Sentry.trpcMiddleware({ attachRpcInput: true }); - -const procedure = t.procedure.use(async opts => sentryMiddleware(opts)); +const procedure = t.procedure.use(Sentry.trpcMiddleware({ attachRpcInput: true })); export const appRouter = t.router({ getSomething: procedure.input(z.string()).query(opts => { From f95ad9032ae34850e87d60fb1077036afb440219 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Thu, 3 Oct 2024 11:07:23 +0200 Subject: [PATCH 5/5] update t3 test --- .../test-applications/nextjs-t3/src/server/api/trpc.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dev-packages/e2e-tests/test-applications/nextjs-t3/src/server/api/trpc.ts b/dev-packages/e2e-tests/test-applications/nextjs-t3/src/server/api/trpc.ts index 0bc74b51243e..779fb43a78a5 100644 --- a/dev-packages/e2e-tests/test-applications/nextjs-t3/src/server/api/trpc.ts +++ b/dev-packages/e2e-tests/test-applications/nextjs-t3/src/server/api/trpc.ts @@ -70,8 +70,8 @@ export const createCallerFactory = t.createCallerFactory; */ export const createTRPCRouter = t.router; -const sentryMiddleware = Sentry.trpcMiddleware({ - attachRpcInput: true, -}); - -export const publicProcedure = t.procedure.use(async opts => sentryMiddleware(opts)); +export const publicProcedure = t.procedure.use( + Sentry.trpcMiddleware({ + attachRpcInput: true, + }), +);