UNPKG

@trpc/server

Version:

The tRPC server library

49 lines (45 loc) 1.34 kB
/** * If you're making an adapter for tRPC and looking at this file for reference, you should import types and functions from `@trpc/server` and `@trpc/server/http` * * @example * ```ts * import type { AnyTRPCRouter } from '@trpc/server' * import type { HTTPBaseHandlerOptions } from '@trpc/server/http' * ``` */ import type * as express from 'express'; import type { AnyRouter } from '../@trpc/server'; // eslint-disable-next-line no-restricted-imports import { run } from '../unstable-core-do-not-import'; import type { NodeHTTPCreateContextFnOptions, NodeHTTPHandlerOptions, } from './node-http'; import { internal_exceptionHandler, nodeHTTPRequestHandler } from './node-http'; export type CreateExpressContextOptions = NodeHTTPCreateContextFnOptions< express.Request, express.Response >; export function createExpressMiddleware<TRouter extends AnyRouter>( opts: NodeHTTPHandlerOptions<TRouter, express.Request, express.Response>, ): express.Handler { return (req, res) => { let path = ''; run(async () => { path = req.path.slice(req.path.lastIndexOf('/') + 1); await nodeHTTPRequestHandler({ ...(opts as any), req, res, path, }); }).catch( internal_exceptionHandler({ req, res, path, ...opts, }), ); }; }