mirror of
https://github.com/tenrok/vue-meta.git
synced 2026-06-25 11:00:34 +03:00
refactor: extract escape method
This commit is contained in:
committed by
Alexander Lichter
parent
31e975d312
commit
95ba9c0291
@@ -0,0 +1,47 @@
|
|||||||
|
import { metaInfoOptionKeys, disableOptionKeys } from './constants'
|
||||||
|
import isArray from './isArray'
|
||||||
|
import { isString, isObject } from './typeof'
|
||||||
|
|
||||||
|
// sanitizes potentially dangerous characters
|
||||||
|
export default function escape(info, { tagIDKeyName }, escapeSequences = []) {
|
||||||
|
const escaped = {}
|
||||||
|
|
||||||
|
for (const key in info) {
|
||||||
|
const value = info[key]
|
||||||
|
|
||||||
|
// no need to escape configuration options
|
||||||
|
if (metaInfoOptionKeys.includes(key)) {
|
||||||
|
escaped[key] = value
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
let disableKey = disableOptionKeys[0]
|
||||||
|
if (info[disableKey] && info[disableKey].includes(key)) {
|
||||||
|
// this info[key] doesnt need to escaped if the option is listed in __dangerouslyDisableSanitizers
|
||||||
|
escaped[key] = value
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if (info[tagIDKeyName]) {
|
||||||
|
disableKey = disableOptionKeys[1]
|
||||||
|
|
||||||
|
// items which vmid is listed in __dangerouslyDisableSanitizersByTagID do not need to be escaped
|
||||||
|
if (info[disableKey] && info[disableKey][key] && info[disableKey][key].includes(info[tagIDKeyName])) {
|
||||||
|
escaped[key] = value
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isString(value)) {
|
||||||
|
escaped[key] = escapeSequences.reduce((val, [v, r]) => val.replace(v, r), value)
|
||||||
|
} else if (isArray(value)) {
|
||||||
|
escaped[key] = value.map(v => escape(v, { tagIDKeyName }, escapeSequences))
|
||||||
|
} else if (isObject(value)) {
|
||||||
|
escaped[key] = escape(value, { tagIDKeyName }, escapeSequences)
|
||||||
|
} else {
|
||||||
|
escaped[key] = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return escaped
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user