const { marked } = require('marked') const configStore = require('./../config.js') const Media = require('./../factories/media.js') /** * * */ // copy from @marked/src/helpers.js, no export possible function cleanUrl(sanitize, base, href) { if (sanitize) { let prot try { prot = decodeURIComponent(unescape(href)) .replace(nonWordAndColonTest, '') .toLowerCase() } catch (e) { return null } if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) { return null } } if (base && !originIndependentUrl.test(href)) { href = resolveUrl(base, href) } try { href = encodeURI(href).replace(/%25/g, '%') } catch (e) { return null } return href } const renderer = { /** * * @param {string} href * @param {string} title * @param {string} text */ link(href, title, text) { href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) if (href === null) { return text } let out = '' return out }, /** * * @param {string} href * @param {string} title * @param {string} text */ image(href, title, text) { href = cleanUrl(this.options.sanitize, this.options.baseUrl, href) if (href === null) { return text } // check if href for image is relative if (!href.match(/^(http|https):\/\//)) { const markedDirPath = configStore.get('markedDirPath') // check if dirPath are exists from options if (markedDirPath || markedDirPath === '') { const media = new Media(markedDirPath) href = media.resolve(href) } } let out = `${text}' : '>' return out } } module.exports = renderer