this repo has no description
at main 26 lines 738 B view raw
1// Browser ONLY logic. Must have the same exports as server.ts 2// See: docs/isomorphic-imports.md 3 4import { type SanitizeHtmlOptions, sanitizeDocument } from './common'; 5 6export { type SanitizeHtmlOptions, DEFAULT_SAFE_TAGS } from './common'; 7 8// Shared DOMParser instance (avoids creating a new one for each sanitization) 9let parser = null; 10 11export function sanitizeHtml( 12 input: string, 13 options: SanitizeHtmlOptions = {}, 14): string { 15 if (!input) { 16 return input; 17 } 18 19 if (!parser) { 20 parser = new DOMParser(); 21 } 22 23 const unsafeDocument = parser.parseFromString(`${input}`, 'text/html'); 24 const unsafeNode = unsafeDocument.body; 25 return sanitizeDocument(unsafeDocument, unsafeNode, options); 26}