{"version":3,"file":"express.mjs","names":[],"sources":["../../src/adapters/express.ts"],"sourcesContent":["/**\n * 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`\n *\n * @example\n * ```ts\n * import type { AnyTRPCRouter } from '@trpc/server'\n * import type { HTTPBaseHandlerOptions } from '@trpc/server/http'\n * ```\n */\nimport type * as express from 'express';\nimport type { AnyRouter } from '../@trpc/server';\n// oxlint-disable-next-line no-restricted-imports\nimport { run } from '../unstable-core-do-not-import';\nimport type {\n  NodeHTTPCreateContextFnOptions,\n  NodeHTTPHandlerOptions,\n} from './node-http';\nimport { internal_exceptionHandler, nodeHTTPRequestHandler } from './node-http';\n\n/**\n * What `createContext` gets in the Express adapter: `req`, `res` and the\n * request's `info`.\n * @see https://trpc.io/docs/server/adapters/express#2-create-a-trpc-router\n */\nexport type CreateExpressContextOptions = NodeHTTPCreateContextFnOptions<\n  express.Request,\n  express.Response\n>;\n\n/**\n * Creates an Express middleware that serves a router. Mount it on a path,\n * such as `/trpc`.\n * @see https://trpc.io/docs/server/adapters/express#3-use-the-express-adapter\n */\nexport function createExpressMiddleware<TRouter extends AnyRouter>(\n  opts: NodeHTTPHandlerOptions<TRouter, express.Request, express.Response>,\n): express.Handler {\n  return (req, res) => {\n    let path = '';\n    run(async () => {\n      path = req.path.slice(req.path.lastIndexOf('/') + 1);\n\n      await nodeHTTPRequestHandler({\n        ...opts,\n        req,\n        res,\n        path,\n      });\n    }).catch(\n      internal_exceptionHandler({\n        req,\n        res,\n        path,\n        ...opts,\n      }),\n    );\n  };\n}\n"],"mappings":";;;;;;;;;AAkCA,SAAgB,wBACd,MACiB;CACjB,QAAQ,KAAK,QAAQ;EACnB,IAAI,OAAO;EACX,IAAI,YAAY;GACd,OAAO,IAAI,KAAK,MAAM,IAAI,KAAK,YAAY,GAAG,IAAI,CAAC;GAEnD,MAAM,uBAAA,eAAA,eAAA,CAAA,GACD,IAAA,GAAA,CAAA,GAAA;IACH;IACA;IACA;GACF,CAAA,CAAC;EACH,CAAC,CAAC,CAAC,MACD,0BAAA,eAAA;GACE;GACA;GACA;EACG,GAAA,IACL,CAAC,CACH;CACF;AACF"}