/** * @typedef {import('micromark-util-types').CompileContext} CompileContext * @typedef {import('micromark-util-types').Handle} Handle * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension * @typedef {import('micromark-util-types').Token} Token */ import {sanitizeUri} from 'micromark-util-sanitize-uri' /** * Create an HTML extension for `micromark` to support GitHub autolink literal * when serializing to HTML. * * @returns {HtmlExtension} * Extension for `micromark` that can be passed in `htmlExtensions` to * support GitHub autolink literal when serializing to HTML. */ export function gfmAutolinkLiteralHtml() { return { exit: { literalAutolinkEmail, literalAutolinkHttp, literalAutolinkWww } } } /** * @this {CompileContext} * @type {Handle} */ function literalAutolinkWww(token) { anchorFromToken.call(this, token, 'http://') } /** * @this {CompileContext} * @type {Handle} */ function literalAutolinkEmail(token) { anchorFromToken.call(this, token, 'mailto:') } /** * @this {CompileContext} * @type {Handle} */ function literalAutolinkHttp(token) { anchorFromToken.call(this, token) } /** * @this CompileContext * @param {Token} token * @param {string | null | undefined} [protocol] * @returns {undefined} */ function anchorFromToken(token, protocol) { const url = this.sliceSerialize(token) this.tag('') this.raw(this.encode(url)) this.tag('') }