UNPKG

solid-start-trpc

Version:

```ts import { createSolidAPIHandler } from "solid-start-trpc";

47 lines (46 loc) 1.51 kB
import { getPath, notFoundError } from "./utils"; import { resolveHTTPResponse } from "@trpc/server/http"; export function createSolidAPIHandler(opts) { return async (args) => { const path = getPath(args); if (path === null) { return notFoundError(opts); } const res = { headers: {}, }; const url = new URL(args.request.url); const req = { query: url.searchParams, method: args.request.method, headers: Object.fromEntries(args.request.headers), body: await args.request.text(), }; const result = await resolveHTTPResponse({ router: opts.router, responseMeta: opts.responseMeta, req, path, createContext: async () => await opts.createContext?.({ req: args.request, res, }), }); const mRes = new Response(result.body, { status: result.status, }); for (const [key, value] of Object.entries(result.headers ? { ...res.headers, ...result.headers } : res.headers)) { if (typeof value === "undefined") { continue; } if (typeof value === "string") { mRes.headers.set(key, value); continue; } for (const v of value) { mRes.headers.append(key, v); } } return mRes; }; }