fuc-new/doc/node_modules/@vuepress/plugin-git/lib/node/utils/sanitizeHTML.js
hellcat 6adbc04d4b 1
2025-10-03 17:17:08 +08:00

24 lines
713 B
JavaScript

import rehypeParse from 'rehype-parse';
import rehypeSanitize from 'rehype-sanitize';
import rehypeStringify from 'rehype-stringify';
import { unified } from 'unified';
let rehypeInstance = null;
/**
* Sanitize HTML
* @see https://github.com/rehypejs/rehype-sanitize
*/
export const sanitizeHTML = (html) => {
rehypeInstance ??= unified()
.use(rehypeParse, { fragment: true })
.use(rehypeSanitize, {
tagNames: ['a', 'em', 'strong', 'code'],
attributes: {
a: [['href', /^https?:\/\//], 'target', 'rel'],
},
strip: ['script', 'style'],
})
.use(rehypeStringify)
.freeze();
return String(rehypeInstance.processSync(html));
};