export function toSafeFileName(fileName) { const s = String(fileName ?? '') // eslint-disable-next-line no-control-regex .replace(/[\u0000-\u001F\u007F]/g, '') .replace(/[<>:"/\\|?*]/g, '_') .replace(/\s+/g, ' ') .trim(); return s; } export function contentDisposition(filename) { const fallback = filename.replace(/[^\x20-\x7E]/g, '_').replace(/"/g, "'"); const encoded = encodeURIComponent(filename); return `attachment; filename="${fallback}"; filename*=UTF-8''${encoded}`; }