MCPcopy
hub / github.com/pingdotgg/uploadthing / createRouteHandler

Function createRouteHandler

packages/uploadthing/src/express.ts:36–62  ·  view source on GitHub ↗
(
  opts: RouteHandlerOptions<TRouter>,
)

Source from the content-addressed store, hash-verified

34) => createBuilder<AdapterArgs, TErrorShape>(opts);
35
36export const createRouteHandler = <TRouter extends FileRouter>(
37 opts: RouteHandlerOptions<TRouter>,
38): ExpressRouter => {
39 const handler = makeAdapterHandler<
40 [ExpressRequest, ExpressResponse],
41 AdapterArgs
42 >(
43 (req, res) => Effect.succeed({ req, res }),
44 (req) =>
45 Effect.flatMap(getPostBody({ req }), (body) =>
46 toWebRequest(req, body),
47 ).pipe(Effect.orDie),
48 opts,
49 "express",
50 );
51
52 return ExpressRouter().all("/", async (req, res) => {
53 const response = await handler(req, res);
54 res.writeHead(response.status, Object.fromEntries(response.headers));
55 if (response.body) {
56 // Slight type mismatch in `node:stream.ReadableStream` and Fetch's `ReadableStream`.
57 Readable.fromWeb(response.body as never).pipe(res);
58 } else {
59 res.end();
60 }
61 });
62};

Callers 1

express.tsFile · 0.90

Calls 4

makeAdapterHandlerFunction · 0.90
getPostBodyFunction · 0.90
toWebRequestFunction · 0.90
handlerFunction · 0.50

Tested by

no test coverage detected