UNPKG

trpc-bun-adapter

Version:

TRPC adapter for bun js runtime

37 lines (31 loc) 1.03 kB
import type { AnyRouter } from "@trpc/server"; import type { ServeOptions, Server } from "bun"; import { type BunHttpHandlerOptions, createBunHttpHandler, } from "./createBunHttpHandler"; import { type BunWSAdapterOptions, createBunWSHandler, } from "./createBunWSHandler"; type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>; export function createBunServeHandler<TRouter extends AnyRouter>( opts: BunHttpHandlerOptions<TRouter> & BunWSAdapterOptions<TRouter>, serveOptions?: Optional<ServeOptions, "fetch">, ) { const trpcHandler = createBunHttpHandler({ ...opts, emitWsUpgrades: true, }); return { ...serveOptions, async fetch(req: Request, server: Server) { const trpcResponse = trpcHandler(req, server); if (trpcResponse) { return trpcResponse; } return serveOptions?.fetch?.call(server, req, server); }, websocket: createBunWSHandler(opts), }; }