2020-05-08 21:00:02 +00:00
|
|
|
const { JSDOM } = require('jsdom')
|
|
|
|
const createDOMPurify = require('dompurify')
|
2018-09-16 04:35:03 +00:00
|
|
|
|
2019-12-12 04:35:54 +00:00
|
|
|
module.exports = {
|
|
|
|
async init(input, config) {
|
|
|
|
if (config.safeHTML) {
|
2020-05-08 21:00:02 +00:00
|
|
|
const window = new JSDOM('').window
|
|
|
|
const DOMPurify = createDOMPurify(window)
|
|
|
|
|
2020-06-07 23:23:33 +00:00
|
|
|
const allowedAttrs = ['v-pre', 'v-slot:tabs', 'v-slot:content', 'target']
|
2020-05-08 21:00:02 +00:00
|
|
|
const allowedTags = ['tabset', 'template']
|
|
|
|
|
|
|
|
if (config.allowIFrames) {
|
|
|
|
allowedTags.push('iframe')
|
|
|
|
}
|
|
|
|
|
|
|
|
input = DOMPurify.sanitize(input, {
|
|
|
|
ADD_ATTR: allowedAttrs,
|
|
|
|
ADD_TAGS: allowedTags
|
2019-12-12 04:35:54 +00:00
|
|
|
})
|
|
|
|
}
|
|
|
|
return input
|
2018-09-16 04:35:03 +00:00
|
|
|
}
|
|
|
|
}
|