/
githubmirror
/
trpc
Обзор
Документация
Войти
/
githubmirror
/
trpc
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
packages/server/src/adapters/express.ts
48 строк
1 KB
Julien Barbay
feat(express): allow middleware to be mounted anywhere (#6411)
23 янв 2025, 10:40
Не верифицирован
23 янв 2025, 10:40
77c939a
Код
Авторство
О чём код?
/** * 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, }), ); }; }