UNPKG

trpc-bun-adapter

Version:

TRPC adapter for bun js runtime

48 lines (43 loc) 2.96 kB
import { AnyRouter, inferRouterContext } from '@trpc/server'; import { FetchCreateContextFnOptions, FetchHandlerRequestOptions } from '@trpc/server/adapters/fetch'; import { Server, ServerWebSocket, WebSocketHandler, ServeOptions } from 'bun'; import { TRPCRequestInfo } from '@trpc/server/http'; import { CreateContextCallback } from '@trpc/server/src/@trpc/server'; import { BaseHandlerOptions } from '@trpc/server/src/@trpc/server/http'; import { NodeHTTPCreateContextFnOptions } from '@trpc/server/src/adapters/node-http'; import { MaybePromise } from '@trpc/server/src/unstable-core-do-not-import'; type CreateBunContextOptions = FetchCreateContextFnOptions; type BunHttpHandlerOptions<TRouter extends AnyRouter> = Omit<FetchHandlerRequestOptions<TRouter>, "req"> & { endpoint?: string; createContext?: (opts: CreateBunContextOptions) => inferRouterContext<TRouter> | Promise<inferRouterContext<TRouter>>; }; declare function createBunHttpHandler<TRouter extends AnyRouter>(opts: BunHttpHandlerOptions<TRouter> & { emitWsUpgrades?: boolean; }): (request: Request, server: Server) => Response | Promise<Response> | undefined; type CreateBunWSSContextFnOptions<TRouter extends AnyRouter> = NodeHTTPCreateContextFnOptions<Request, ServerWebSocket<BunWSClientCtx<TRouter>>>; type BunWSAdapterOptions<TRouter extends AnyRouter> = BaseHandlerOptions<TRouter, Request> & CreateContextCallback<inferRouterContext<TRouter>, (opts: CreateBunWSSContextFnOptions<TRouter>) => MaybePromise<inferRouterContext<TRouter>>>; type BunWSClientCtx<TRouter extends AnyRouter> = { req: Request; abortController: AbortController; abortControllers: Map<string | number, AbortController>; ctx: Promise<inferRouterContext<TRouter>> | ((params: TRPCRequestInfo["connectionParams"]) => Promise<inferRouterContext<TRouter>>); }; declare function createBunWSHandler<TRouter extends AnyRouter>(opts: BunWSAdapterOptions<TRouter>): WebSocketHandler<BunWSClientCtx<TRouter>>; type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>; declare function createBunServeHandler<TRouter extends AnyRouter>(opts: BunHttpHandlerOptions<TRouter> & BunWSAdapterOptions<TRouter>, serveOptions?: Optional<ServeOptions, "fetch">): { fetch(req: Request, server: Server): Promise<Response | undefined>; websocket: Bun.WebSocketHandler<BunWSClientCtx<TRouter>>; error?: (this: Server, error: Bun.ErrorLike) => Response | Promise<Response> | void | Promise<void>; id?: string | null; port?: string | number; reusePort?: boolean; ipv6Only?: boolean; hostname?: string; unix?: never; idleTimeout?: number; maxRequestBodySize?: number; development?: boolean | { hmr?: boolean; }; }; export { type BunHttpHandlerOptions, type BunWSAdapterOptions, type BunWSClientCtx, type CreateBunContextOptions, type CreateBunWSSContextFnOptions, createBunHttpHandler, createBunServeHandler, createBunWSHandler };