UNPKG

trpc-playground

Version:

playground for running tRPC queries in the browser

69 lines (66 loc) 1.97 kB
import { resolveConfig } from "./chunk-YYRHFXX6.js"; // src/handler.ts import { renderPlaygroundPage } from "@trpc-playground/html"; import { defineHandler } from "uttp"; var handler = defineHandler(async (helpers, config) => { const resolvedConfig = resolveConfig(config); let htmlPlaygroundPage = void 0; if (resolvedConfig.server?.serveHtml) { htmlPlaygroundPage = renderPlaygroundPage({ ...resolvedConfig.renderOptions, clientConfig: resolvedConfig }); } const types = await resolvedConfig.resolveTypes(config.router); const stringifiedTypes = JSON.stringify(types); return { async handleRequest(request) { if (request.method === "HEAD") { return { status: 204, body: void 0 }; } if (request.method === "GET" && resolvedConfig.server.serveHtml) { return { status: 200, headers: { "Content-Type": "text/html" }, body: htmlPlaygroundPage }; } if (request.method === "POST") { let body; const rawBody = request.rawRequest.body; if (typeof rawBody === "object" && rawBody !== null && "operation" in rawBody) { body = rawBody; } else { try { body = await helpers.parseBodyAsString(request.rawRequest); } catch { return { status: 413, body: void 0 }; } } const bodyObject = typeof body === "string" ? JSON.parse(body) : body; if (bodyObject.operation === "getRouterSchema") { return { headers: { "Content-Type": "application/json" }, status: 200, body: stringifiedTypes }; } return { status: 400, body: void 0 }; } return { status: 400, body: void 0 }; }, adapterOptions: { maxBodySize: resolvedConfig.server.maxBodySize } }; }); export { handler };