/** * Escaped eine einzelne CSV-Zelle. * * Neben dem üblichen Quoting werden Werte neutralisiert, die mit =, +, - oder @ * beginnen: Excel und LibreOffice würden sie sonst als Formel auswerten * (CSV-Injection über einen frei wählbaren Namen oder eine Adresse). */ const escapeCell = (val) => { if (val == null) return ''; let str = String(val); if (/^[=+\-@\t\r]/.test(str)) { str = `'${str}`; } return /["\n\r,]/.test(str) ? `"${str.replace(/"/g, '""')}"` : str; }; module.exports = { escapeCell };