/* Gemeinsame Hilfen der Funktions-Module (funktionen.js, analyse.js): Escaping fuer Kundentexte, URL-Pruefung, API-Aufruf. */ export const esc = (value) => String(value ?? '') .replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''') export const safeUrl = (url) => (/^https?:\/\//i.test(url || '') ? url : '') export async function request(path, { method = 'GET', body, raw } = {}) { const response = await fetch(path, { method, credentials: 'same-origin', headers: raw ? { 'Content-Type': 'application/octet-stream' } : body ? { 'Content-Type': 'application/json' } : {}, body: raw || (body ? JSON.stringify(body) : undefined), }) const data = await response.json().catch(() => ({})) if (!response.ok) { const err = new Error(data.error || (response.status === 502 ? 'Server nicht erreichbar. Bitte kurz warten und noch einmal versuchen.' : `Fehler ${response.status}`)) err.status = response.status if (data.field) err.field = data.field throw err } return data }