import type { IncomingMessage, ServerResponse } from 'http'; export async function parseJsonBody(req: IncomingMessage): Promise { const chunks: Buffer[] = []; for await (const chunk of req) { chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)); } const raw = Buffer.concat(chunks).toString('utf8').trim(); if (!raw) { return {} as T; } return JSON.parse(raw) as T; } export function setCorsHeaders(res: ServerResponse): void { res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'GET,POST,PUT,DELETE,OPTIONS'); res.setHeader('Access-Control-Allow-Headers', 'Content-Type'); } export function sendJson(res: ServerResponse, statusCode: number, payload: unknown): void { setCorsHeaders(res); res.statusCode = statusCode; res.setHeader('Content-Type', 'application/json; charset=utf-8'); res.end(JSON.stringify(payload)); } export function sendNoContent(res: ServerResponse): void { setCorsHeaders(res); res.statusCode = 204; res.end(); } export function sendText(res: ServerResponse, statusCode: number, text: string): void { setCorsHeaders(res); res.statusCode = statusCode; res.setHeader('Content-Type', 'text/plain; charset=utf-8'); res.end(text); }