const { marked } = require('marked')

/**
 *
 *
 */

// 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 = {
    link(href, title, text) {

        href = cleanUrl(this.options.sanitize, this.options.baseUrl, href)

        if (href === null) {
            return text
        }
        
        let out = '<a href="' + href + '"'
        
        if (title) {
          out += ' title="' + title + '"'
        }

        // check if url is external and add target
        if (href.match(/^(http|https):\/\//)) {
            out += ' target="_blank" rel="noopener" '
        }
        
        out += '>' + text + '</a>'

        return out
    }
}

module.exports = renderer
