import { resolve } from "path"; export default defineEventHandler(async (event) => { const query = getQuery(event); const parsed = settingsSchema.safeParse(query); if (!parsed.success) { return createError({ status: 400, data: { errors: Object.fromEntries( parsed.error.issues.map((x) => [x.path.join("."), x.message]), ), }, }); } const { format, logo, content } = parsed.data; const logoUrl = logo ? resolve("public", `logos/${logo}.png`) : undefined; const canvas = await renderQRCodeToCanvas(content, logoUrl); const image = canvas.toBuffer(format); event.node.res.setHeader("Content-Type", `image/${format}`); event.node.res.setHeader( "Content-Disposition", `filename="qrcode.${format}"`, ); return image; });