2026-05-16 12:02:15 +01:00

31 lines
940 B
TypeScript

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<AppRouter>;
export type RouterOutputs = inferRouterOutputs<AppRouter>;