{"version":3,"file":"ts-stack-markdown.mjs","sources":["../../packages/markdown/src/extend-regexp.ts","../../packages/markdown/src/helpers.ts","../../packages/markdown/src/interfaces.ts","../../packages/markdown/src/renderer.ts","../../packages/markdown/src/inline-lexer.ts","../../packages/markdown/src/parser.ts","../../packages/markdown/src/marked.ts","../../packages/markdown/src/block-lexer.ts","../../packages/markdown/ts-stack-markdown.ts"],"sourcesContent":["/*\n * @license\n *\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n *\n * Copyright (c) 2018-2021, Костя Третяк. (MIT Licensed)\n * https://github.com/ts-stack/markdown\n */\n\nexport class ExtendRegexp {\n  private source: string;\n  private flags: string;\n\n  constructor(regex: RegExp, flags: string = '') {\n    this.source = regex.source;\n    this.flags = flags;\n  }\n\n  /**\n   * Extend regular expression.\n   *\n   * @param groupName Regular expression for search a group name.\n   * @param groupRegexp Regular expression of named group.\n   */\n  setGroup(groupName: RegExp | string, groupRegexp: RegExp | string): this {\n    let newRegexp: string = typeof groupRegexp == 'string' ? groupRegexp : groupRegexp.source;\n    newRegexp = newRegexp.replace(/(^|[^\\[])\\^/g, '$1');\n\n    // Extend regexp.\n    this.source = this.source.replace(groupName, newRegexp);\n    return this;\n  }\n\n  /**\n   * Returns a result of extending a regular expression.\n   */\n  getRegexp(): RegExp {\n    return new RegExp(this.source, this.flags);\n  }\n}\n","/**\n * @license\n *\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n *\n * Copyright (c) 2018-2021, Костя Третяк. (MIT Licensed)\n * https://github.com/ts-stack/markdown\n */\n\nimport { Replacements } from './interfaces';\n\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = /[&<>\"']/g;\nconst replacements: Replacements = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  // tslint:disable-next-line:quotemark\n  \"'\": '&#39;',\n};\n\nconst escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nconst escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n\nexport function escape(html: string, encode?: boolean) {\n  if (encode) {\n    if (escapeTest.test(html)) {\n      return html.replace(escapeReplace, (ch: string) => replacements[ch]);\n    }\n  } else {\n    if (escapeTestNoEncode.test(html)) {\n      return html.replace(escapeReplaceNoEncode, (ch: string) => replacements[ch]);\n    }\n  }\n\n  return html;\n}\n\nexport function unescape(html: string) {\n  // Explicitly match decimal, hex, and named HTML entities\n  return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/gi, function (_, n) {\n    n = n.toLowerCase();\n\n    if (n === 'colon') {\n      return ':';\n    }\n\n    if (n.charAt(0) === '#') {\n      return n.charAt(1) === 'x'\n        ? String.fromCharCode(parseInt(n.substring(2), 16))\n        : String.fromCharCode(+n.substring(1));\n    }\n\n    return '';\n  });\n}\n","/**\n * @license\n *\n * Copyright (c) 2018-2021, Костя Третяк. (MIT Licensed)\n * https://github.com/ts-stack/markdown\n */\n\nimport { escape, unescape } from './helpers';\nimport { Renderer } from './renderer';\n\nexport interface Obj {\n  [key: string]: any;\n}\n\nexport interface RulesBlockBase {\n  newline: RegExp;\n  code: RegExp;\n  hr: RegExp;\n  heading: RegExp;\n  lheading: RegExp;\n  blockquote: RegExp;\n  list: RegExp;\n  html: RegExp;\n  def: RegExp;\n  paragraph: RegExp;\n  text: RegExp;\n  bullet: RegExp;\n  /**\n   * List item (<li>).\n   */\n  item: RegExp;\n}\n\nexport interface RulesBlockGfm extends RulesBlockBase {\n  fences: RegExp;\n}\n\nexport interface RulesBlockTables extends RulesBlockGfm {\n  nptable: RegExp;\n  table: RegExp;\n}\n\nexport interface Link {\n  href: string;\n  title: string;\n}\n\nexport interface Links {\n  [key: string]: Link;\n}\n\nexport enum TokenType {\n  space = 1,\n  text,\n  paragraph,\n  heading,\n  listStart,\n  listEnd,\n  looseItemStart,\n  looseItemEnd,\n  listItemStart,\n  listItemEnd,\n  blockquoteStart,\n  blockquoteEnd,\n  code,\n  table,\n  html,\n  hr\n}\n\nexport type Align = 'center' | 'left' | 'right';\n\nexport interface Token {\n  type: number | string;\n  text?: string;\n  lang?: string;\n  /**\n   * Metadata of gfm code.\n   */\n  meta?: string;\n  depth?: number;\n  header?: string[];\n  align?: Align[];\n  cells?: string[][];\n  ordered?: boolean;\n  pre?: boolean;\n  escaped?: boolean;\n  execArr?: RegExpExecArray;\n  /**\n   * Used for debugging. Identifies the line number in the resulting HTML file.\n   */\n  line?: number;\n}\n\nexport interface RulesInlineBase {\n  escape: RegExp;\n  autolink: RegExp;\n  tag: RegExp;\n  link: RegExp;\n  reflink: RegExp;\n  nolink: RegExp;\n  strong: RegExp;\n  em: RegExp;\n  code: RegExp;\n  br: RegExp;\n  text: RegExp;\n  _inside: RegExp;\n  _href: RegExp;\n}\n\nexport interface RulesInlinePedantic extends RulesInlineBase {}\n\n/**\n * GFM Inline Grammar\n */\nexport interface RulesInlineGfm extends RulesInlineBase {\n  url: RegExp;\n  del: RegExp;\n}\n\nexport interface RulesInlineBreaks extends RulesInlineGfm {}\n\nexport class MarkedOptions {\n  gfm?: boolean = true;\n  tables?: boolean = true;\n  breaks?: boolean = false;\n  pedantic?: boolean = false;\n  sanitize?: boolean = false;\n  sanitizer?: (text: string) => string;\n  mangle?: boolean = true;\n  smartLists?: boolean = false;\n  silent?: boolean = false;\n  /**\n   * @param code The section of code to pass to the highlighter.\n   * @param lang The programming language specified in the code block.\n   */\n  highlight?: (code: string, lang?: string) => string;\n  langPrefix?: string = 'lang-';\n  smartypants?: boolean = false;\n  headerPrefix?: string = '';\n  /**\n   * An object containing functions to render tokens to HTML. Default: `new Renderer()`\n   */\n  renderer?: Renderer;\n  /**\n   * Self-close the tags for void elements (&lt;br/&gt;, &lt;img/&gt;, etc.)\n   * with a \"/\" as required by XHTML.\n   */\n  xhtml?: boolean = false;\n  /**\n   * The function that will be using to escape HTML entities.\n   * By default using inner helper.\n   */\n  escape?: (html: string, encode?: boolean) => string = escape;\n  /**\n   * The function that will be using to unescape HTML entities.\n   * By default using inner helper.\n   */\n  unescape?: (html: string) => string = unescape;\n  /**\n   * If set to `true`, an inline text will not be taken in paragraph.\n   *\n   * ```ts\n   * // isNoP == false\n   * Marked.parse('some text'); // returns '<p>some text</p>'\n   *\n   * Marked.setOptions({isNoP: true});\n   *\n   * Marked.parse('some text'); // returns 'some text'\n   * ```\n   */\n  isNoP?: boolean;\n}\n\nexport interface LexerReturns {\n  tokens: Token[];\n  links: Links;\n}\n\nexport interface DebugReturns extends LexerReturns {\n  result: string;\n}\n\nexport interface Replacements {\n  [key: string]: string;\n}\n\nexport interface RulesInlineCallback {\n  regexp?: RegExp;\n  condition(): RegExp;\n  tokenize(execArr: RegExpExecArray): void;\n}\n\nexport type SimpleRenderer = (execArr?: RegExpExecArray) => string;\n","/**\n * @license\n *\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n *\n * Copyright (c) 2018-2021, Костя Третяк. (MIT Licensed)\n * https://github.com/ts-stack/markdown\n */\n\nimport { Align, MarkedOptions } from './interfaces';\nimport { Marked } from './marked';\n\nexport class Renderer {\n  protected options: MarkedOptions;\n\n  constructor(options?: MarkedOptions) {\n    this.options = options || Marked.options;\n  }\n\n  code(code: string, lang?: string, escaped?: boolean, meta?: string): string {\n    if (this.options.highlight) {\n      const out = this.options.highlight(code, lang);\n\n      if (out != null && out !== code) {\n        escaped = true;\n        code = out;\n      }\n    }\n\n    const escapedCode = (escaped ? code : this.options.escape(code, true));\n\n    if (!lang) {\n      return `\\n<pre><code>${escapedCode}\\n</code></pre>\\n`;\n    }\n\n    const className = this.options.langPrefix + this.options.escape(lang, true);\n    return `\\n<pre><code class=\"${className}\">${escapedCode}\\n</code></pre>\\n`;\n  }\n\n  blockquote(quote: string): string {\n    return `<blockquote>\\n${quote}</blockquote>\\n`;\n  }\n\n  html(html: string): string {\n    return html;\n  }\n\n  heading(text: string, level: number, raw: string): string {\n    const id: string = this.options.headerPrefix + raw.toLowerCase().replace(/[^\\w]+/g, '-');\n\n    return `<h${level} id=\"${id}\">${text}</h${level}>\\n`;\n  }\n\n  hr(): string {\n    return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n  }\n\n  list(body: string, ordered?: boolean): string {\n    const type = ordered ? 'ol' : 'ul';\n\n    return `\\n<${type}>\\n${body}</${type}>\\n`;\n  }\n\n  listitem(text: string): string {\n    return '<li>' + text + '</li>\\n';\n  }\n\n  paragraph(text: string): string {\n    return '<p>' + text + '</p>\\n';\n  }\n\n  table(header: string, body: string): string {\n    return `\n<table>\n<thead>\n${header}</thead>\n<tbody>\n${body}</tbody>\n</table>\n`;\n  }\n\n  tablerow(content: string): string {\n    return '<tr>\\n' + content + '</tr>\\n';\n  }\n\n  tablecell(content: string, flags: { header?: boolean; align?: Align }): string {\n    const type = flags.header ? 'th' : 'td';\n    const tag = flags.align ? '<' + type + ' style=\"text-align:' + flags.align + '\">' : '<' + type + '>';\n    return tag + content + '</' + type + '>\\n';\n  }\n\n  // *** Inline level renderer methods. ***\n\n  strong(text: string): string {\n    return '<strong>' + text + '</strong>';\n  }\n\n  em(text: string): string {\n    return '<em>' + text + '</em>';\n  }\n\n  codespan(text: string): string {\n    return '<code>' + text + '</code>';\n  }\n\n  br(): string {\n    return this.options.xhtml ? '<br/>' : '<br>';\n  }\n\n  del(text: string): string {\n    return '<del>' + text + '</del>';\n  }\n\n  link(href: string, title: string, text: string): string {\n    if (this.options.sanitize) {\n      let prot: string;\n\n      try {\n        prot = decodeURIComponent(this.options.unescape(href))\n          .replace(/[^\\w:]/g, '')\n          .toLowerCase();\n      } catch (e) {\n        return text;\n      }\n\n      if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n        return text;\n      }\n    }\n\n    let out = '<a href=\"' + href + '\"';\n\n    if (title) {\n      out += ' title=\"' + title + '\"';\n    }\n\n    out += '>' + text + '</a>';\n\n    return out;\n  }\n\n  image(href: string, title: string, text: string): string {\n    let out = '<img src=\"' + href + '\" alt=\"' + text + '\"';\n\n    if (title) {\n      out += ' title=\"' + title + '\"';\n    }\n\n    out += this.options.xhtml ? '/>' : '>';\n\n    return out;\n  }\n\n  text(text: string): string {\n    return text;\n  }\n}\n","/**\n * @license\n *\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n *\n * Copyright (c) 2018-2021, Костя Третяк. (MIT Licensed)\n * https://github.com/ts-stack/markdown\n */\n\nimport { ExtendRegexp } from './extend-regexp';\nimport {\n  Link,\n  Links,\n  MarkedOptions,\n  RulesInlineBase,\n  RulesInlineBreaks,\n  RulesInlineCallback,\n  RulesInlineGfm,\n  RulesInlinePedantic,\n} from './interfaces';\nimport { Marked } from './marked';\nimport { Renderer } from './renderer';\n\n/**\n * Inline Lexer & Compiler.\n */\nexport class InlineLexer {\n  protected static rulesBase: RulesInlineBase = null;\n  /**\n   * Pedantic Inline Grammar.\n   */\n  protected static rulesPedantic: RulesInlinePedantic = null;\n  /**\n   * GFM Inline Grammar\n   */\n  protected static rulesGfm: RulesInlineGfm = null;\n  /**\n   * GFM + Line Breaks Inline Grammar.\n   */\n  protected static rulesBreaks: RulesInlineBreaks = null;\n  protected rules: RulesInlineBase | RulesInlinePedantic | RulesInlineGfm | RulesInlineBreaks;\n  protected renderer: Renderer;\n  protected inLink: boolean;\n  protected hasRulesGfm: boolean;\n  protected ruleCallbacks: RulesInlineCallback[];\n\n  constructor(\n    protected staticThis: typeof InlineLexer,\n    protected links: Links,\n    protected options: MarkedOptions = Marked.options,\n    renderer?: Renderer,\n  ) {\n    this.renderer = renderer || this.options.renderer || new Renderer(this.options);\n\n    if (!this.links) {\n      throw new Error(\"InlineLexer requires 'links' parameter.\");\n    }\n\n    this.setRules();\n  }\n\n  /**\n   * Static Lexing/Compiling Method.\n   */\n  static output(src: string, links: Links, options: MarkedOptions): string {\n    const inlineLexer = new this(this, links, options);\n    return inlineLexer.output(src);\n  }\n\n  protected static getRulesBase(): RulesInlineBase {\n    if (this.rulesBase) {\n      return this.rulesBase;\n    }\n\n    /**\n     * Inline-Level Grammar.\n     */\n    const base: RulesInlineBase = {\n      escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n      autolink: /^<([^ <>]+(@|:\\/)[^ <>]+)>/,\n      tag: /^<!--[\\s\\S]*?-->|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^<'\">])*?>/,\n      link: /^!?\\[(inside)\\]\\(href\\)/,\n      reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n      nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n      strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n      em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n      code: /^(`+)([\\s\\S]*?[^`])\\1(?!`)/,\n      br: /^ {2,}\\n(?!\\s*$)/,\n      text: /^[\\s\\S]+?(?=[\\\\<!\\[_*`]| {2,}\\n|$)/,\n      _inside: /(?:\\[[^\\]]*\\]|[^\\[\\]]|\\](?=[^\\[]*\\]))*/,\n      _href: /\\s*<?([\\s\\S]*?)>?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/,\n    };\n\n    base.link = new ExtendRegexp(base.link).setGroup('inside', base._inside).setGroup('href', base._href).getRegexp();\n\n    base.reflink = new ExtendRegexp(base.reflink).setGroup('inside', base._inside).getRegexp();\n\n    return (this.rulesBase = base);\n  }\n\n  protected static getRulesPedantic(): RulesInlinePedantic {\n    if (this.rulesPedantic) {\n      return this.rulesPedantic;\n    }\n\n    return (this.rulesPedantic = {\n      ...this.getRulesBase(),\n      ...{\n        strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n        em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/,\n      },\n    });\n  }\n\n  protected static getRulesGfm(): RulesInlineGfm {\n    if (this.rulesGfm) {\n      return this.rulesGfm;\n    }\n\n    const base = this.getRulesBase();\n\n    const escape = new ExtendRegexp(base.escape).setGroup('])', '~|])').getRegexp();\n\n    const text = new ExtendRegexp(base.text).setGroup(']|', '~]|').setGroup('|', '|https?://|').getRegexp();\n\n    return (this.rulesGfm = {\n      ...base,\n      ...{\n        escape,\n        url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n        del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n        text,\n      },\n    });\n  }\n\n  protected static getRulesBreaks(): RulesInlineBreaks {\n    if (this.rulesBreaks) {\n      return this.rulesBreaks;\n    }\n\n    const inline = this.getRulesGfm();\n    const gfm = this.getRulesGfm();\n\n    return (this.rulesBreaks = {\n      ...gfm,\n      ...{\n        br: new ExtendRegexp(inline.br).setGroup('{2,}', '*').getRegexp(),\n        text: new ExtendRegexp(gfm.text).setGroup('{2,}', '*').getRegexp(),\n      },\n    });\n  }\n\n  protected setRules() {\n    if (this.options.gfm) {\n      if (this.options.breaks) {\n        this.rules = this.staticThis.getRulesBreaks();\n      } else {\n        this.rules = this.staticThis.getRulesGfm();\n      }\n    } else if (this.options.pedantic) {\n      this.rules = this.staticThis.getRulesPedantic();\n    } else {\n      this.rules = this.staticThis.getRulesBase();\n    }\n\n    this.hasRulesGfm = (this.rules as RulesInlineGfm).url !== undefined;\n  }\n\n  /**\n   * Lexing/Compiling.\n   */\n  output(nextPart: string): string {\n    let execArr: RegExpExecArray;\n    let out = '';\n\n    while (nextPart) {\n      // escape\n      if ((execArr = this.rules.escape.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n        out += execArr[1];\n        continue;\n      }\n\n      // autolink\n      if ((execArr = this.rules.autolink.exec(nextPart))) {\n        let text: string;\n        let href: string;\n        nextPart = nextPart.substring(execArr[0].length);\n\n        if (execArr[2] === '@') {\n          text = this.options.escape(\n            execArr[1].charAt(6) === ':' ? this.mangle(execArr[1].substring(7)) : this.mangle(execArr[1]),\n          );\n          href = this.mangle('mailto:') + text;\n        } else {\n          text = this.options.escape(execArr[1]);\n          href = text;\n        }\n\n        out += this.renderer.link(href, null, text);\n        continue;\n      }\n\n      // url (gfm)\n      if (!this.inLink && this.hasRulesGfm && (execArr = (this.rules as RulesInlineGfm).url.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n        const text = this.options.escape(execArr[1]);\n        const href = text;\n        out += this.renderer.link(href, null, text);\n        continue;\n      }\n\n      // tag\n      if ((execArr = this.rules.tag.exec(nextPart))) {\n        if (!this.inLink && /^<a /i.test(execArr[0])) {\n          this.inLink = true;\n        } else if (this.inLink && /^<\\/a>/i.test(execArr[0])) {\n          this.inLink = false;\n        }\n\n        nextPart = nextPart.substring(execArr[0].length);\n\n        out += this.options.sanitize\n          ? this.options.sanitizer\n            ? this.options.sanitizer(execArr[0])\n            : this.options.escape(execArr[0])\n          : execArr[0];\n        continue;\n      }\n\n      // link\n      if ((execArr = this.rules.link.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n        this.inLink = true;\n\n        out += this.outputLink(execArr, {\n          href: execArr[2],\n          title: execArr[3],\n        });\n\n        this.inLink = false;\n        continue;\n      }\n\n      // reflink, nolink\n      if ((execArr = this.rules.reflink.exec(nextPart)) || (execArr = this.rules.nolink.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n        const keyLink = (execArr[2] || execArr[1]).replace(/\\s+/g, ' ');\n        const link = this.links[keyLink.toLowerCase()];\n\n        if (!link || !link.href) {\n          out += execArr[0].charAt(0);\n          nextPart = execArr[0].substring(1) + nextPart;\n          continue;\n        }\n\n        this.inLink = true;\n        out += this.outputLink(execArr, link);\n        this.inLink = false;\n        continue;\n      }\n\n      // strong\n      if ((execArr = this.rules.strong.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n        out += this.renderer.strong(this.output(execArr[2] || execArr[1]));\n        continue;\n      }\n\n      // em\n      if ((execArr = this.rules.em.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n        out += this.renderer.em(this.output(execArr[2] || execArr[1]));\n        continue;\n      }\n\n      // code\n      if ((execArr = this.rules.code.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n        out += this.renderer.codespan(this.options.escape(execArr[2].trim(), true));\n        continue;\n      }\n\n      // br\n      if ((execArr = this.rules.br.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n        out += this.renderer.br();\n        continue;\n      }\n\n      // del (gfm)\n      if (this.hasRulesGfm && (execArr = (this.rules as RulesInlineGfm).del.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n        out += this.renderer.del(this.output(execArr[1]));\n        continue;\n      }\n\n      // text\n      if ((execArr = this.rules.text.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n        out += this.renderer.text(this.options.escape(this.smartypants(execArr[0])));\n        continue;\n      }\n\n      if (nextPart) {\n        throw new Error('Infinite loop on byte: ' + nextPart.charCodeAt(0));\n      }\n    }\n\n    return out;\n  }\n\n  /**\n   * Compile Link.\n   */\n  protected outputLink(execArr: RegExpExecArray, link: Link) {\n    const href = this.options.escape(link.href);\n    const title = link.title ? this.options.escape(link.title) : null;\n\n    return execArr[0].charAt(0) !== '!'\n      ? this.renderer.link(href, title, this.output(execArr[1]))\n      : this.renderer.image(href, title, this.options.escape(execArr[1]));\n  }\n\n  /**\n   * Smartypants Transformations.\n   */\n  protected smartypants(text: string) {\n    if (!this.options.smartypants) {\n      return text;\n    }\n\n    return (\n      text\n        // em-dashes\n        .replace(/---/g, '\\u2014')\n        // en-dashes\n        .replace(/--/g, '\\u2013')\n        // opening singles\n        .replace(/(^|[-\\u2014/([{\"\\s])'/g, '$1\\u2018')\n        // closing singles & apostrophes\n        .replace(/'/g, '\\u2019')\n        // opening doubles\n        .replace(/(^|[-\\u2014/([{\\u2018\\s])\"/g, '$1\\u201c')\n        // closing doubles\n        .replace(/\"/g, '\\u201d')\n        // ellipses\n        .replace(/\\.{3}/g, '\\u2026')\n    );\n  }\n\n  /**\n   * Mangle Links.\n   */\n  protected mangle(text: string) {\n    if (!this.options.mangle) {\n      return text;\n    }\n\n    let out = '';\n    const length = text.length;\n\n    for (let i = 0; i < length; i++) {\n      let str: string;\n\n      if (Math.random() > 0.5) {\n        str = 'x' + text.charCodeAt(i).toString(16);\n      }\n\n      out += '&#' + str + ';';\n    }\n\n    return out;\n  }\n}\n","/**\n * @license\n *\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n *\n * Copyright (c) 2018-2021, Костя Третяк. (MIT Licensed)\n * https://github.com/ts-stack/markdown\n */\n\nimport { InlineLexer } from './inline-lexer';\nimport { Links, MarkedOptions, SimpleRenderer, Token, TokenType } from './interfaces';\nimport { Marked } from './marked';\nimport { Renderer } from './renderer';\n\n/**\n * Parsing & Compiling.\n */\nexport class Parser {\n  simpleRenderers: SimpleRenderer[] = [];\n  protected tokens: Token[];\n  protected token: Token;\n  protected inlineLexer: InlineLexer;\n  protected options: MarkedOptions;\n  protected renderer: Renderer;\n  protected line: number = 0;\n\n  constructor(options?: MarkedOptions) {\n    this.tokens = [];\n    this.token = null;\n    this.options = options || Marked.options;\n    this.renderer = this.options.renderer || new Renderer(this.options);\n  }\n\n  static parse(tokens: Token[], links: Links, options?: MarkedOptions): string {\n    const parser = new this(options);\n    return parser.parse(links, tokens);\n  }\n\n  parse(links: Links, tokens: Token[]) {\n    this.inlineLexer = new InlineLexer(InlineLexer, links, this.options, this.renderer);\n    this.tokens = tokens.reverse();\n\n    let out = '';\n\n    while (this.next()) {\n      out += this.tok();\n    }\n\n    return out;\n  }\n\n  debug(links: Links, tokens: Token[]) {\n    this.inlineLexer = new InlineLexer(InlineLexer, links, this.options, this.renderer);\n    this.tokens = tokens.reverse();\n\n    let out = '';\n\n    while (this.next()) {\n      const outToken: string = this.tok();\n      this.token.line = this.line += outToken.split('\\n').length - 1;\n      out += outToken;\n    }\n\n    return out;\n  }\n\n  protected next() {\n    return (this.token = this.tokens.pop());\n  }\n\n  protected getNextElement() {\n    return this.tokens[this.tokens.length - 1];\n  }\n\n  protected parseText() {\n    let body = this.token.text;\n    let nextElement: Token;\n\n    while ((nextElement = this.getNextElement()) && nextElement.type == TokenType.text) {\n      body += '\\n' + this.next().text;\n    }\n\n    return this.inlineLexer.output(body);\n  }\n\n  protected tok() {\n    switch (this.token.type) {\n      case TokenType.space: {\n        return '';\n      }\n      case TokenType.paragraph: {\n        return this.renderer.paragraph(this.inlineLexer.output(this.token.text));\n      }\n      case TokenType.text: {\n        if (this.options.isNoP) {\n          return this.parseText();\n        } else {\n          return this.renderer.paragraph(this.parseText());\n        }\n      }\n      case TokenType.heading: {\n        return this.renderer.heading(this.inlineLexer.output(this.token.text), this.token.depth, this.token.text);\n      }\n      case TokenType.listStart: {\n        let body = '';\n        const ordered = this.token.ordered;\n\n        while (this.next().type != TokenType.listEnd) {\n          body += this.tok();\n        }\n\n        return this.renderer.list(body, ordered);\n      }\n      case TokenType.listItemStart: {\n        let body = '';\n\n        while (this.next().type != TokenType.listItemEnd) {\n          body += this.token.type == (TokenType.text as any) ? this.parseText() : this.tok();\n        }\n\n        return this.renderer.listitem(body);\n      }\n      case TokenType.looseItemStart: {\n        let body = '';\n\n        while (this.next().type != TokenType.listItemEnd) {\n          body += this.tok();\n        }\n\n        return this.renderer.listitem(body);\n      }\n      case TokenType.code: {\n        return this.renderer.code(this.token.text, this.token.lang, this.token.escaped, this.token.meta);\n      }\n      case TokenType.table: {\n        let header = '';\n        let body = '';\n        let cell;\n\n        // header\n        cell = '';\n        for (let i = 0; i < this.token.header.length; i++) {\n          const flags = { header: true, align: this.token.align[i] };\n          const out = this.inlineLexer.output(this.token.header[i]);\n\n          cell += this.renderer.tablecell(out, flags);\n        }\n\n        header += this.renderer.tablerow(cell);\n\n        for (const row of this.token.cells) {\n          cell = '';\n\n          for (let j = 0; j < row.length; j++) {\n            cell += this.renderer.tablecell(this.inlineLexer.output(row[j]), {\n              header: false,\n              align: this.token.align[j]\n            });\n          }\n\n          body += this.renderer.tablerow(cell);\n        }\n\n        return this.renderer.table(header, body);\n      }\n      case TokenType.blockquoteStart: {\n        let body = '';\n\n        while (this.next().type != TokenType.blockquoteEnd) {\n          body += this.tok();\n        }\n\n        return this.renderer.blockquote(body);\n      }\n      case TokenType.hr: {\n        return this.renderer.hr();\n      }\n      case TokenType.html: {\n        const html =\n          !this.token.pre && !this.options.pedantic ? this.inlineLexer.output(this.token.text) : this.token.text;\n        return this.renderer.html(html);\n      }\n      default: {\n        if (this.simpleRenderers.length) {\n          for (let i = 0; i < this.simpleRenderers.length; i++) {\n            if (this.token.type == 'simpleRule' + (i + 1)) {\n              return this.simpleRenderers[i].call(this.renderer, this.token.execArr);\n            }\n          }\n        }\n\n        const errMsg = `Token with \"${this.token.type}\" type was not found.`;\n\n        if (this.options.silent) {\n          console.log(errMsg);\n        } else {\n          throw new Error(errMsg);\n        }\n      }\n    }\n  }\n}\n","/**\n * @license\n *\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n *\n * Copyright (c) 2018-2021, Костя Третяк. (MIT Licensed)\n * https://github.com/ts-stack/markdown\n */\n\nimport { BlockLexer } from './block-lexer';\nimport { DebugReturns, LexerReturns, Links, MarkedOptions, SimpleRenderer, Token, TokenType } from './interfaces';\nimport { Parser } from './parser';\n\nexport class Marked {\n  static options = new MarkedOptions();\n  protected static simpleRenderers: SimpleRenderer[] = [];\n\n  /**\n   * Merges the default options with options that will be set.\n   *\n   * @param options Hash of options.\n   */\n  static setOptions(options: MarkedOptions) {\n    Object.assign(this.options, options);\n    return this;\n  }\n\n  /**\n   * Setting simple block rule.\n   */\n  static setBlockRule(regexp: RegExp, renderer: SimpleRenderer = () => '') {\n    BlockLexer.simpleRules.push(regexp);\n    this.simpleRenderers.push(renderer);\n\n    return this;\n  }\n\n  /**\n   * Accepts Markdown text and returns text in HTML format.\n   *\n   * @param src String of markdown source to be compiled.\n   * @param options Hash of options. They replace, but do not merge with the default options.\n   * If you want the merging, you can to do this via `Marked.setOptions()`.\n   */\n  static parse(src: string, options?: MarkedOptions): string {\n    try {\n      options = { ...this.options, ...options };\n      const { tokens, links } = this.callBlockLexer(src, options);\n      return this.callParser(tokens, links, options);\n    } catch (e) {\n      return this.callMe(e);\n    }\n  }\n\n  /**\n   * Accepts Markdown text and returns object with text in HTML format,\n   * tokens and links from `BlockLexer.parser()`.\n   *\n   * @param src String of markdown source to be compiled.\n   * @param options Hash of options. They replace, but do not merge with the default options.\n   * If you want the merging, you can to do this via `Marked.setOptions()`.\n   */\n  static debug(src: string, options: MarkedOptions = this.options): DebugReturns {\n    const { tokens, links } = this.callBlockLexer(src, options);\n    let origin = tokens.slice();\n    const parser = new Parser(options);\n    parser.simpleRenderers = this.simpleRenderers;\n    const result = parser.debug(links, tokens);\n\n    /**\n     * Translates a token type into a readable form,\n     * and moves `line` field to a first place in a token object.\n     */\n    origin = origin.map((token) => {\n      token.type = (TokenType as any)[token.type] || token.type;\n\n      const line = token.line;\n      delete token.line;\n      if (line) {\n        return { ...{ line }, ...token };\n      } else {\n        return token;\n      }\n    });\n\n    return { tokens: origin, links, result };\n  }\n\n  protected static callBlockLexer(src: string = '', options?: MarkedOptions): LexerReturns {\n    if (typeof src != 'string') {\n      throw new Error(`Expected that the 'src' parameter would have a 'string' type, got '${typeof src}'`);\n    }\n\n    // Preprocessing.\n    src = src\n      .replace(/\\r\\n|\\r/g, '\\n')\n      .replace(/\\t/g, '    ')\n      .replace(/\\u00a0/g, ' ')\n      .replace(/\\u2424/g, '\\n')\n      .replace(/^ +$/gm, '');\n\n    return BlockLexer.lex(src, options, true);\n  }\n\n  protected static callParser(tokens: Token[], links: Links, options?: MarkedOptions): string {\n    if (this.simpleRenderers.length) {\n      const parser = new Parser(options);\n      parser.simpleRenderers = this.simpleRenderers;\n      return parser.parse(links, tokens);\n    } else {\n      return Parser.parse(tokens, links, options);\n    }\n  }\n\n  protected static callMe(err: Error) {\n    err.message += '\\nPlease report this to https://github.com/ts-stack/markdown';\n\n    if (this.options.silent) {\n      return '<p>An error occured:</p><pre>' + this.options.escape(err.message + '', true) + '</pre>';\n    }\n\n    throw err;\n  }\n}\n","/**\n * @license\n *\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n *\n * Copyright (c) 2018-2021, Костя Третяк. (MIT Licensed)\n * https://github.com/ts-stack/markdown\n */\n\nimport { ExtendRegexp } from './extend-regexp';\nimport {\n  Align,\n  LexerReturns,\n  Links,\n  MarkedOptions,\n  RulesBlockBase,\n  RulesBlockGfm,\n  RulesBlockTables,\n  Token,\n  TokenType,\n} from './interfaces';\nimport { Marked } from './marked';\n\nexport class BlockLexer<T extends typeof BlockLexer> {\n  static simpleRules: RegExp[] = [];\n  protected static rulesBase: RulesBlockBase = null;\n  /**\n   * GFM Block Grammar.\n   */\n  protected static rulesGfm: RulesBlockGfm = null;\n  /**\n   * GFM + Tables Block Grammar.\n   */\n  protected static rulesTables: RulesBlockTables = null;\n  protected rules: RulesBlockBase | RulesBlockGfm | RulesBlockTables;\n  protected options: MarkedOptions;\n  protected links: Links = {};\n  protected tokens: Token[] = [];\n  protected hasRulesGfm: boolean;\n  protected hasRulesTables: boolean;\n\n  constructor(protected staticThis: T, options?: object) {\n    this.options = options || Marked.options;\n    this.setRules();\n  }\n\n  /**\n   * Accepts Markdown text and returns object with tokens and links.\n   *\n   * @param src String of markdown source to be compiled.\n   * @param options Hash of options.\n   */\n  static lex(src: string, options?: MarkedOptions, top?: boolean, isBlockQuote?: boolean): LexerReturns {\n    const lexer = new this(this, options);\n    return lexer.getTokens(src, top, isBlockQuote);\n  }\n\n  protected static getRulesBase(): RulesBlockBase {\n    if (this.rulesBase) {\n      return this.rulesBase;\n    }\n\n    const base: RulesBlockBase = {\n      newline: /^\\n+/,\n      code: /^( {4}[^\\n]+\\n*)+/,\n      hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n      heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n      lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n      blockquote: /^( *>[^\\n]+(\\n[^\\n]+)*\\n*)+/,\n      list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n      html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n      def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n      paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n      text: /^[^\\n]+/,\n      bullet: /(?:[*+-]|\\d+\\.)/,\n      item: /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/,\n    };\n\n    base.item = new ExtendRegexp(base.item, 'gm').setGroup(/bull/g, base.bullet).getRegexp();\n\n    base.list = new ExtendRegexp(base.list)\n      .setGroup(/bull/g, base.bullet)\n      .setGroup('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n      .setGroup('def', '\\\\n+(?=' + base.def.source + ')')\n      .getRegexp();\n\n    const tag =\n      '(?!(?:' +\n      'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code' +\n      '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo' +\n      '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\n    base.html = new ExtendRegexp(base.html)\n      .setGroup('comment', /<!--[\\s\\S]*?-->/)\n      .setGroup('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n      .setGroup('closing', /<tag(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/)\n      .setGroup(/tag/g, tag)\n      .getRegexp();\n\n    base.paragraph = new ExtendRegexp(base.paragraph)\n      .setGroup('hr', base.hr)\n      .setGroup('heading', base.heading)\n      .setGroup('lheading', base.lheading)\n      .setGroup('blockquote', base.blockquote)\n      .setGroup('tag', '<' + tag)\n      .setGroup('def', base.def)\n      .getRegexp();\n\n    return (this.rulesBase = base);\n  }\n\n  protected static getRulesGfm(): RulesBlockGfm {\n    if (this.rulesGfm) {\n      return this.rulesGfm;\n    }\n\n    const base = this.getRulesBase();\n\n    const gfm: RulesBlockGfm = {\n      ...base,\n      ...{\n        fences: /^ *(`{3,}|~{3,})[ \\.]*((\\S+)? *[^\\n]*)\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n        paragraph: /^/,\n        heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/,\n      },\n    };\n\n    const group1 = gfm.fences.source.replace('\\\\1', '\\\\2');\n    const group2 = base.list.source.replace('\\\\1', '\\\\3');\n\n    gfm.paragraph = new ExtendRegexp(base.paragraph).setGroup('(?!', `(?!${group1}|${group2}|`).getRegexp();\n\n    return (this.rulesGfm = gfm);\n  }\n\n  protected static getRulesTable(): RulesBlockTables {\n    if (this.rulesTables) {\n      return this.rulesTables;\n    }\n\n    return (this.rulesTables = {\n      ...this.getRulesGfm(),\n      ...{\n        nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n        table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/,\n      },\n    });\n  }\n\n  protected setRules() {\n    if (this.options.gfm) {\n      if (this.options.tables) {\n        this.rules = this.staticThis.getRulesTable();\n      } else {\n        this.rules = this.staticThis.getRulesGfm();\n      }\n    } else {\n      this.rules = this.staticThis.getRulesBase();\n    }\n\n    this.hasRulesGfm = (this.rules as RulesBlockGfm).fences !== undefined;\n    this.hasRulesTables = (this.rules as RulesBlockTables).table !== undefined;\n  }\n\n  /**\n   * Lexing.\n   */\n  protected getTokens(src: string, top?: boolean, isBlockQuote?: boolean): LexerReturns {\n    let nextPart = src;\n    let execArr: RegExpExecArray;\n\n    mainLoop: while (nextPart) {\n      // newline\n      if ((execArr = this.rules.newline.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n\n        if (execArr[0].length > 1) {\n          this.tokens.push({ type: TokenType.space });\n        }\n      }\n\n      // code\n      if ((execArr = this.rules.code.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n        const code = execArr[0].replace(/^ {4}/gm, '');\n\n        this.tokens.push({\n          type: TokenType.code,\n          text: !this.options.pedantic ? code.replace(/\\n+$/, '') : code,\n        });\n        continue;\n      }\n\n      // fences code (gfm)\n      if (this.hasRulesGfm && (execArr = (this.rules as RulesBlockGfm).fences.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n\n        this.tokens.push({\n          type: TokenType.code,\n          meta: execArr[2],\n          lang: execArr[3],\n          text: execArr[4] || '',\n        });\n        continue;\n      }\n\n      // heading\n      if ((execArr = this.rules.heading.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n        this.tokens.push({\n          type: TokenType.heading,\n          depth: execArr[1].length,\n          text: execArr[2],\n        });\n        continue;\n      }\n\n      // table no leading pipe (gfm)\n      if (top && this.hasRulesTables && (execArr = (this.rules as RulesBlockTables).nptable.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n\n        const item: Token = {\n          type: TokenType.table,\n          header: execArr[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n          align: execArr[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */) as Align[],\n          cells: [],\n        };\n\n        for (let i = 0; i < item.align.length; i++) {\n          if (/^ *-+: *$/.test(item.align[i])) {\n            item.align[i] = 'right';\n          } else if (/^ *:-+: *$/.test(item.align[i])) {\n            item.align[i] = 'center';\n          } else if (/^ *:-+ *$/.test(item.align[i])) {\n            item.align[i] = 'left';\n          } else {\n            item.align[i] = null;\n          }\n        }\n\n        const td: string[] = execArr[3].replace(/\\n$/, '').split('\\n');\n\n        for (let i = 0; i < td.length; i++) {\n          item.cells[i] = td[i].split(/ *\\| */);\n        }\n\n        this.tokens.push(item);\n        continue;\n      }\n\n      // lheading\n      if ((execArr = this.rules.lheading.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n\n        this.tokens.push({\n          type: TokenType.heading,\n          depth: execArr[2] === '=' ? 1 : 2,\n          text: execArr[1],\n        });\n        continue;\n      }\n\n      // hr\n      if ((execArr = this.rules.hr.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n        this.tokens.push({ type: TokenType.hr });\n        continue;\n      }\n\n      // blockquote\n      if ((execArr = this.rules.blockquote.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n        this.tokens.push({ type: TokenType.blockquoteStart });\n        const str = execArr[0].replace(/^ *> ?/gm, '');\n\n        // Pass `top` to keep the current\n        // \"toplevel\" state. This is exactly\n        // how markdown.pl works.\n        this.getTokens(str);\n        this.tokens.push({ type: TokenType.blockquoteEnd });\n        continue;\n      }\n\n      // list\n      if ((execArr = this.rules.list.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n        const bull: string = execArr[2];\n\n        this.tokens.push({ type: TokenType.listStart, ordered: bull.length > 1 });\n\n        // Get each top-level item.\n        const str = execArr[0].match(this.rules.item);\n        const length = str.length;\n\n        let next = false;\n        let space: number;\n        let blockBullet: string;\n        let loose: boolean;\n\n        for (let i = 0; i < length; i++) {\n          let item = str[i];\n\n          // Remove the list item's bullet so it is seen as the next token.\n          space = item.length;\n          item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n          // Outdent whatever the list item contains. Hacky.\n          if (item.indexOf('\\n ') !== -1) {\n            space -= item.length;\n            item = !this.options.pedantic\n              ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n              : item.replace(/^ {1,4}/gm, '');\n          }\n\n          // Determine whether the next list item belongs here.\n          // Backpedal if it does not belong in this list.\n          if (this.options.smartLists && i !== length - 1) {\n            blockBullet = this.staticThis.getRulesBase().bullet.exec(str[i + 1])[0];\n\n            if (bull !== blockBullet && !(bull.length > 1 && blockBullet.length > 1)) {\n              nextPart = str.slice(i + 1).join('\\n') + nextPart;\n              i = length - 1;\n            }\n          }\n\n          // Determine whether item is loose or not.\n          // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n          // for discount behavior.\n          loose = next || /\\n\\n(?!\\s*$)/.test(item);\n\n          if (i !== length - 1) {\n            next = item.charAt(item.length - 1) === '\\n';\n\n            if (!loose) {\n              loose = next;\n            }\n          }\n\n          this.tokens.push({ type: loose ? TokenType.looseItemStart : TokenType.listItemStart });\n\n          // Recurse.\n          this.getTokens(item, false, isBlockQuote);\n          this.tokens.push({ type: TokenType.listItemEnd });\n        }\n\n        this.tokens.push({ type: TokenType.listEnd });\n        continue;\n      }\n\n      // html\n      if ((execArr = this.rules.html.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n        const attr = execArr[1];\n        const isPre = attr === 'pre' || attr === 'script' || attr === 'style';\n\n        this.tokens.push({\n          type: this.options.sanitize ? TokenType.paragraph : TokenType.html,\n          pre: !this.options.sanitizer && isPre,\n          text: execArr[0],\n        });\n        continue;\n      }\n\n      // def\n      if (top && (execArr = this.rules.def.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n\n        this.links[execArr[1].toLowerCase()] = {\n          href: execArr[2],\n          title: execArr[3],\n        };\n        continue;\n      }\n\n      // table (gfm)\n      if (top && this.hasRulesTables && (execArr = (this.rules as RulesBlockTables).table.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n\n        const item: Token = {\n          type: TokenType.table,\n          header: execArr[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n          align: execArr[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */) as Align[],\n          cells: [],\n        };\n\n        for (let i = 0; i < item.align.length; i++) {\n          if (/^ *-+: *$/.test(item.align[i])) {\n            item.align[i] = 'right';\n          } else if (/^ *:-+: *$/.test(item.align[i])) {\n            item.align[i] = 'center';\n          } else if (/^ *:-+ *$/.test(item.align[i])) {\n            item.align[i] = 'left';\n          } else {\n            item.align[i] = null;\n          }\n        }\n\n        const td = execArr[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n');\n\n        for (let i = 0; i < td.length; i++) {\n          item.cells[i] = td[i].replace(/^ *\\| *| *\\| *$/g, '').split(/ *\\| */);\n        }\n\n        this.tokens.push(item);\n        continue;\n      }\n\n      // simple rules\n      if (this.staticThis.simpleRules.length) {\n        const simpleRules = this.staticThis.simpleRules;\n        for (let i = 0; i < simpleRules.length; i++) {\n          if ((execArr = simpleRules[i].exec(nextPart))) {\n            nextPart = nextPart.substring(execArr[0].length);\n            const type = 'simpleRule' + (i + 1);\n            this.tokens.push({ type, execArr });\n            continue mainLoop;\n          }\n        }\n      }\n\n      // top-level paragraph\n      if (top && (execArr = this.rules.paragraph.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n\n        if (execArr[1].slice(-1) === '\\n') {\n          this.tokens.push({\n            type: TokenType.paragraph,\n            text: execArr[1].slice(0, -1),\n          });\n        } else {\n          this.tokens.push({\n            type: this.tokens.length > 0 ? TokenType.paragraph : TokenType.text,\n            text: execArr[1],\n          });\n        }\n        continue;\n      }\n\n      // text\n      // Top-level should never reach here.\n      if ((execArr = this.rules.text.exec(nextPart))) {\n        nextPart = nextPart.substring(execArr[0].length);\n        this.tokens.push({ type: TokenType.text, text: execArr[0] });\n        continue;\n      }\n\n      if (nextPart) {\n        throw new Error(\n          'Infinite loop on byte: ' + nextPart.charCodeAt(0) + `, near text '${nextPart.slice(0, 30)}...'`\n        );\n      }\n    }\n\n    return { tokens: this.tokens, links: this.links };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}