const escapeRE = /["'&<>]/ export function escapeHtml(string: unknown) { const str = '' + string const match = escapeRE.exec(str) if (!match) { return str } let html = '' let escaped: string let index: number let lastIndex = 0 for (index = match.index; index < str.length; index++) { switch (str.charCodeAt(index)) { case 34: // " escaped = '"' break case 38: // & escaped = '&' break case 39: // ' escaped = ''' break case 60: // < escaped = '<' break case 62: // > escaped = '>' break default: continue } if (lastIndex !== index) { html += str.substring(lastIndex, index) } lastIndex = index + 1 html += escaped } return lastIndex !== index ? html + str.substring(lastIndex, index) : html }