this repo has no description
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}