import DOMPurify from 'dompurify'; export function sanitizeHTML(dirty: string): string { return DOMPurify.sanitize(dirty, { ALLOWED_TAGS: ['b', 'i', 'em', 'strong', 'a', 'p', 'br'], ALLOWED_ATTR: ['href', 'title', 'target', 'rel'], ALLOW_DATA_ATTR: false, }); } export function sanitizeInput(input: string): string { return DOMPurify.sanitize(input, { ALLOWED_TAGS: [], ALLOWED_ATTR: [], }); } export function sanitizeURL(url: string): string { const sanitized = DOMPurify.sanitize(url, { ALLOWED_TAGS: [], ALLOWED_ATTR: [], }); if (sanitized.startsWith('http://') || sanitized.startsWith('https://') || sanitized.startsWith('mailto:')) { return sanitized; } return ''; } export function escapeHTML(str: string): string { const map: Record = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '/': '/', }; return str.replace(/[&<>"'/]/g, (char) => map[char] ?? char); }