import { ImageResponse } from "@vercel/og"; import { z } from "zod"; export const runtime = "edge"; const ogSchema = z.object({ heading: z.string(), mode: z.string(), type: z.string(), }); export async function GET(req: Request) { try { const geist = await fetch( new URL("../../../assets/Geist.ttf", import.meta.url), ).then((res) => res.arrayBuffer()); const geistMono = await fetch( new URL("../../../assets/GeistMono.ttf", import.meta.url), ).then((res) => res.arrayBuffer()); const url = new URL(req.url); const urlParamsValues = Object.fromEntries(url.searchParams); const validParams = ogSchema.parse(urlParamsValues); const { heading, type } = validParams; const trueHeading = heading.length > 140 ? `${heading.substring(0, 140)}...` : heading; const paint = "#fff"; const fontSize = trueHeading.length > 100 ? "30px" : "60px"; return new ImageResponse(