/** Türkçe Excel uyumlu CSV: UTF-8 BOM, noktalı virgül, gerektiğinde tırnak. Formül enjeksiyonuna karşı =,+,-,@ ile başlayan hücreler kaçırılır. */
export function csv(rows: (string | number | null | undefined)[][]) {
  const cell = (v: string | number | null | undefined) => {
    let s = v == null ? '' : String(v);
    if (typeof v === 'string' && /^[=+\-@\t\r]/.test(s)) s = `'${s}`; // sayılar (ör. -5 kredi) olduğu gibi kalır
    return /[;"\n\r]/.test(s) ? `"${s.replace(/"/g, '""')}"` : s;
  };
  return '\uFEFF' + rows.map((r) => r.map(cell).join(';')).join('\r\n');
}
