const sanitizeHtml = require("sanitize-html"); const SANITIZE_OPTIONS = { allowedTags: [ "p", "br", "div", "span", "strong", "b", "em", "i", "u", "s", "del", "strike", "h1", "h2", "h3", "h4", "h5", "h6", "ul", "ol", "li", "blockquote", "pre", "code", "hr", "a", "table", "thead", "tbody", "tfoot", "tr", "th", "td", ], allowedAttributes: { a: ["href", "target", "rel", "name"], th: ["colspan", "rowspan", "align"], td: ["colspan", "rowspan", "align"], }, allowedSchemes: ["http", "https", "mailto", "tel"], transformTags: { a: (tagName, attribs) => { const next = { ...attribs }; if (next.target === "_blank") { next.rel = (next.rel || "noopener") + (next.rel && next.rel.indexOf("noreferrer") >= 0 ? "" : " noreferrer"); } return { tagName, attribs: next }; }, }, }; /** * @param {string} html * @returns {string} */ function sanitizeUseCaseBody(html) { if (html == null) return ""; return sanitizeHtml(String(html), SANITIZE_OPTIONS); } module.exports = { sanitizeUseCaseBody };