30 lines
901 B
JavaScript
30 lines
901 B
JavaScript
const marked = require('marked')
|
|
const { translate } = require('./i18n/i18n')
|
|
|
|
// Parse markdown text
|
|
module.exports.markdown = (content = '') => {
|
|
if (!content.trim()) {
|
|
return ''
|
|
}
|
|
return marked(removeInvalidDataURL(content), {sanitize: true})
|
|
}
|
|
|
|
// A handy debugging function we can use to sort of "console.log" our data
|
|
module.exports.dump = (obj) => JSON.stringify(obj, null, 2)
|
|
|
|
module.exports.formatMetaTitle = (title, localeCode = 'en-US') => {
|
|
if (!title) {
|
|
return translate('defaultTitle', localeCode)
|
|
}
|
|
return `${title.charAt(0).toUpperCase()}${title.slice(1)} — ${translate('defaultTitle', localeCode)}`
|
|
}
|
|
|
|
/**
|
|
* Evil users might try to add base64 url data to execute js code
|
|
* so we should purge any potentially harmful data to mitigate risk
|
|
*/
|
|
function removeInvalidDataURL (content) {
|
|
let regex = /data:\S+;base64\S*/gm
|
|
return content.replace(regex, '#')
|
|
}
|