// Based on _.escape https://github.com/lodash/lodash/blob/master/escape.js const reUnescapedHtml = /[&<>"']/g; const reHasUnescapedHtml = RegExp(reUnescapedHtml.source); const htmlEscapes = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', } as const; export function escapeHTML(s: string): string { if (reHasUnescapedHtml.test(s)) { return s.replace( reUnescapedHtml, (c) => htmlEscapes[c as keyof typeof htmlEscapes], ); } return s; }