tRPCttRPC
Powered by
mhM
tRPC•16mo ago•
4 replies
mh

Types issues upgrading to v11, `never` when using t.router

Hi, we have a mono repo project that we are trying to upgrade from v10.45.2 to v11(next). However, we are running into a weird types issue. This codebase was/is working completely fine with v10.45.2 but upgrading package versions seems to be causing types issues. Maybe we have missed something.

We have a base trpc defined in a shared package
trpc-shared
trpc-shared
.

import { initTRPC } from "@trpc/server";
import { setupHttpLogging } from "../http/log.js";
import type { Context } from "./context.js";

const t = initTRPC.context<Context>().create();

const { router, middleware, mergeRouters } = t;
const procedure = t.procedure.use(async (opts) => {
    const { ctx, next } = opts;
    const { request, response } = ctx;
    setupHttpLogging(request, response);
    // some additional setup...
    const result = await next(...);

    return result;
});

export { router, middleware, mergeRouters, procedure };
import { initTRPC } from "@trpc/server";
import { setupHttpLogging } from "../http/log.js";
import type { Context } from "./context.js";

const t = initTRPC.context<Context>().create();

const { router, middleware, mergeRouters } = t;
const procedure = t.procedure.use(async (opts) => {
    const { ctx, next } = opts;
    const { request, response } = ctx;
    setupHttpLogging(request, response);
    // some additional setup...
    const result = await next(...);

    return result;
});

export { router, middleware, mergeRouters, procedure };


Now, over in our
api
api
project, we consume the router to create some endpoints.

import { Context, procedure, router } from "trpc-server-shared"; // our shared project
import { type inferRouterInputs } from "@trpc/server";

export const appRouter = router({
    health: router({ check: procedure.query(() => ({ healthy: "ok" })) })
});

type AppRouter = typeof appRouter;
type AppRouterInputs = inferRouterInputs<AppRouter>;
import { Context, procedure, router } from "trpc-server-shared"; // our shared project
import { type inferRouterInputs } from "@trpc/server";

export const appRouter = router({
    health: router({ check: procedure.query(() => ({ healthy: "ok" })) })
});

type AppRouter = typeof appRouter;
type AppRouterInputs = inferRouterInputs<AppRouter>;


However, the type of
AppRouterInputs
AppRouterInputs
is

type AppRouterInputs = {
    health: never;
}
type AppRouterInputs = {
    health: never;
}


The types were working fine with v10.45.2 and the only change is the package updates, no other code changes (and based on the migration guide and our current existing code base, no breaking changes were affecting our codebase). Clearing node_modules and reinstalling/rebuilding does not help.
"@trpc/client": "next",
"@trpc/server": "next",
"@trpc/client": "next",
"@trpc/server": "next",
tRPCJoin
Move Fast & Break Nothing. End-to-end typesafe APIs made easy.
5,015Members
Resources
Recent Announcements

Similar Threads

Was this page helpful?

Similar Threads

Upgrading from v10 to v11
typedefTtypedef / ❓-help
9mo ago
TSC errors after upgrading to v11
EvanEEvan / ❓-help
2y ago
v11 types ProcedureBuilder & MiddlewareBuilder
FluXFFluX / ❓-help
11mo ago
Generating Types in v11
EvanEEvan / ❓-help
2y ago