import 'server-only'; import { cache } from 'react'; import { headers } from 'next/headers'; import { appRouter, createCallerFactory, createTRPCContext, type AppRouter, } from '@repo/api'; import type { inferRouterInputs, inferRouterOutputs } from '@trpc/server'; import { resolveUser } from '../auth'; /** * RSC-side tRPC caller. Bypasses HTTP — runs the router directly inside the * server component. Use this for reads in Server Components / Server Actions. * * For client-side reads/mutations, see `./client.ts` (TanStack Query hooks). */ const createContext = cache(async () => { const user = await resolveUser(); const h = await headers(); return createTRPCContext({ user, headers: h }); }); const createCaller = createCallerFactory(appRouter); export const api = createCaller(createContext); export type RouterInputs = inferRouterInputs; export type RouterOutputs = inferRouterOutputs;