const HTML_ESCAPE_MAP: Record = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": '''
};
const ALLOWED_TAG_PATTERN = /<(\/?)(strong|b)>|<br\s*\/?>/gi;
const escapeHtml = (text: string): string => text.replace(/[&<>"']/g, (character) => HTML_ESCAPE_MAP[character]);
export const sanitizeHtml = (html: string): string => {
if (!html) return '';
return escapeHtml(html).replace(ALLOWED_TAG_PATTERN, (match: string, closingSlash?: string, tagName?: string) => {
if (!tagName) return '
';
return `<${closingSlash}${tagName.toLowerCase()}>`;
});
};