import { initHTTPServer } from '@trpc/server/adapters/node-http'; import { projectRouter } from './project-router'; import { revisionsRouter } from './revisions-router'; import type { TRPCContext } from './types'; import type { TRPCError } from '@trpc/server'; import { t } from './router'; // App router combining all routers export const appRouter = t.router({ project: projectRouter, revisions: revisionsRouter, }); export type AppRouter = typeof appRouter; // Create tRPC HTTP server export function createTRPCServer(port: number = 8080) { const server = initHTTPServer({ router: appRouter, createContext: async ({ req }: { req: Request }): Promise => { // Extract auth from headers const authHeader = req.headers.get('authorization'); const userId = authHeader?.split(' ')[1]; // Bearer token return { userId, }; }, onError: ({ error, path, input }: { error: TRPCError; path: string; input: unknown }) => { console.error(`tRPC error on ${path}:`, { input, error: error.message, }); }, }); server.listen(port, () => { console.log(`tRPC server listening on port ${port}`); }); return server; } export default appRouter;